tici downclock (#24088)

* tici downclock

* fix that

* gp ref

* lower that a bit

* that was a scam

* perf

* update power

* increase that

Co-authored-by: Comma Device <device@comma.ai>
old-commit-hash: b88fb037ab
taco
Adeeb Shihadeh 3 years ago committed by GitHub
parent 4ff9f6910d
commit 4fa266c035
  1. 12
      selfdrive/hardware/tici/hardware.py
  2. 23
      selfdrive/hardware/tici/power_monitor.py
  3. 4
      selfdrive/hardware/tici/test_power_draw.py
  4. 2
      selfdrive/test/test_onroad.py

@ -415,12 +415,12 @@ class Tici(HardwareBase):
# offline big cluster, leave core 4 online for boardd
for i in range(5, 8):
val = "0" if powersave_enabled else "1"
sudo_write(val, f"/sys/devices/system/cpu/cpu{i}/online")
val = '0' if powersave_enabled else '1'
sudo_write(val, f'/sys/devices/system/cpu/cpu{i}/online')
for n in ('0', '4'):
gov = 'ondemand' if powersave_enabled else 'performance'
sudo_write(gov, f"/sys/devices/system/cpu/cpufreq/policy{n}/scaling_governor")
sudo_write(gov, f'/sys/devices/system/cpu/cpufreq/policy{n}/scaling_governor')
# *** IRQ config ***
affine_irq(5, 565) # kgsl-3d0
@ -450,13 +450,15 @@ class Tici(HardwareBase):
sudo_write("f", "/proc/irq/default_smp_affinity")
# *** GPU config ***
sudo_write("0", "/sys/class/kgsl/kgsl-3d0/min_pwrlevel")
sudo_write("0", "/sys/class/kgsl/kgsl-3d0/max_pwrlevel")
# https://github.com/commaai/agnos-kernel-sdm845/blob/master/arch/arm64/boot/dts/qcom/sdm845-gpu.dtsi#L216
sudo_write("1", "/sys/class/kgsl/kgsl-3d0/min_pwrlevel")
sudo_write("1", "/sys/class/kgsl/kgsl-3d0/max_pwrlevel")
sudo_write("1", "/sys/class/kgsl/kgsl-3d0/force_bus_on")
sudo_write("1", "/sys/class/kgsl/kgsl-3d0/force_clk_on")
sudo_write("1", "/sys/class/kgsl/kgsl-3d0/force_rail_on")
sudo_write("1000000", "/sys/class/kgsl/kgsl-3d0/idle_timer")
sudo_write("performance", "/sys/class/kgsl/kgsl-3d0/devfreq/governor")
sudo_write("596", "/sys/class/kgsl/kgsl-3d0/max_clock_mhz")
# setup governors
sudo_write("performance", "/sys/class/devfreq/soc:qcom,cpubw/governor")

@ -38,7 +38,6 @@ if __name__ == '__main__':
voltage_average = (0, 0) # average, count
current_average = (0, 0)
power_average = (0, 0)
power_total_average = (0, 0)
while sample_time is None or time.monotonic() - start_time < sample_time:
with open("/sys/bus/i2c/devices/0-0040/hwmon/hwmon1/in1_input") as f:
voltage_total = int(f.read()) / 1000.
@ -46,23 +45,23 @@ if __name__ == '__main__':
with open("/sys/bus/i2c/devices/0-0040/hwmon/hwmon1/curr1_input") as f:
current_total = int(f.read())
with open("/sys/class/power_supply/bms/voltage_now") as f:
voltage = int(f.read()) / 1e6 # volts
# SOM measurements are questionable
#with open("/sys/class/power_supply/bms/voltage_now") as f:
# voltage = int(f.read()) / 1e6 # volts
#with open("/sys/class/power_supply/bms/current_now") as f:
# current = int(f.read()) / 1e3 # ma
with open("/sys/class/power_supply/bms/current_now") as f:
current = int(f.read()) / 1e3 # ma
power = voltage*current
power_total = voltage_total*current_total
# compute averages
voltage_average = average(voltage_average, voltage)
current_average = average(current_average, current)
power_average = average(power_average, power)
power_total_average = average(power_total_average, power_total)
voltage_average = average(voltage_average, voltage_total)
current_average = average(current_average, current_total)
power_average = average(power_average, power_total)
print(f"{power:12.2f} mW {power_total:12.2f} mW {power_total - power:12.2f} mW")
print(f"now: {power_total:.2f} mW, avg: {power_average[0]:.2f} mW")
time.sleep(0.25)
except KeyboardInterrupt:
pass
finally:
stop_time = time.monotonic()
print("\n----------------------Average-----------------------------------")

@ -10,8 +10,8 @@ from selfdrive.manager.process_config import managed_processes
from selfdrive.manager.manager import manager_cleanup
POWER = OrderedDict(
camerad=2.65,
modeld=1.15,
camerad=2.58,
modeld=0.90,
dmonitoringmodeld=0.25,
loggerd=0.45,
)

@ -205,7 +205,7 @@ class TestOnroad(unittest.TestCase):
result += "------------------------------------------------\n"
# TODO: this went up when plannerd cpu usage increased, why?
cfgs = [
("modelV2", 0.038, 0.036),
("modelV2", 0.050, 0.036),
("driverState", 0.050, 0.026),
]
for (s, instant_max, avg_max) in cfgs:

Loading…
Cancel
Save