mirror of
https://github.com/MoreTore/openpilot.git
synced 2026-08-05 00:05:59 +08:00
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>
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user