Realtime shield (#2194)
* cpu 3 shield * set priority before affinity * add to release files * only run on androidpull/2188/head
parent
92922ce2ae
commit
b341fdc644
|
@ -1,6 +1,7 @@
|
|||
Version 0.7.9 (2020-XX-XX)
|
||||
========================
|
||||
* Improved car battery power management
|
||||
* Improved realtime performance
|
||||
|
||||
Version 0.7.8 (2020-08-19)
|
||||
========================
|
||||
|
|
|
@ -33,8 +33,8 @@ def set_core_affinity(core):
|
|||
|
||||
def config_rt_process(core, priority):
|
||||
gc.disable()
|
||||
set_core_affinity(core)
|
||||
set_realtime_priority(priority)
|
||||
set_core_affinity(core)
|
||||
|
||||
|
||||
class Ratekeeper():
|
||||
|
|
|
@ -80,6 +80,7 @@ selfdrive/logmessaged.py
|
|||
selfdrive/tombstoned.py
|
||||
selfdrive/pandad.py
|
||||
selfdrive/updated.py
|
||||
selfdrive/rtshield.py
|
||||
|
||||
selfdrive/athena/__init__.py
|
||||
selfdrive/athena/athenad.py
|
||||
|
|
|
@ -188,6 +188,7 @@ managed_processes = {
|
|||
"updated": "selfdrive.updated",
|
||||
"dmonitoringmodeld": ("selfdrive/modeld", ["./dmonitoringmodeld"]),
|
||||
"modeld": ("selfdrive/modeld", ["./modeld"]),
|
||||
"rtshield": "selfdrive.rtshield",
|
||||
}
|
||||
|
||||
daemon_processes = {
|
||||
|
@ -227,6 +228,7 @@ if not PC:
|
|||
if ANDROID:
|
||||
persistent_processes += [
|
||||
'updated',
|
||||
'rtshield',
|
||||
]
|
||||
|
||||
car_started_processes = [
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
#!/usr/bin/env python3
|
||||
import time
|
||||
from common.realtime import set_core_affinity, set_realtime_priority
|
||||
|
||||
|
||||
# RT shield - ensure CPU 3 always remains available for RT processes
|
||||
# runs as SCHED_FIFO with minimum priority to ensure kthreads don't
|
||||
# get scheduled onto CPU 3, but it's always preemptible by realtime
|
||||
# openpilot processes
|
||||
|
||||
def main():
|
||||
set_core_affinity(3)
|
||||
set_realtime_priority(1)
|
||||
|
||||
while True:
|
||||
time.sleep(0.000001)
|
Loading…
Reference in New Issue