Realtime shield (#2194)

* cpu 3 shield

* set priority before affinity

* add to release files

* only run on android
old-commit-hash: b341fdc644
commatwo_master
Adeeb Shihadeh 5 years ago committed by GitHub
parent 241ed1b312
commit 86bb0caf66
  1. 1
      RELEASES.md
  2. 2
      common/realtime.py
  3. 1
      release/files_common
  4. 2
      selfdrive/manager.py
  5. 16
      selfdrive/rtshield.py

@ -1,6 +1,7 @@
Version 0.7.9 (2020-XX-XX) Version 0.7.9 (2020-XX-XX)
======================== ========================
* Improved car battery power management * Improved car battery power management
* Improved realtime performance
Version 0.7.8 (2020-08-19) Version 0.7.8 (2020-08-19)
======================== ========================

@ -33,8 +33,8 @@ def set_core_affinity(core):
def config_rt_process(core, priority): def config_rt_process(core, priority):
gc.disable() gc.disable()
set_core_affinity(core)
set_realtime_priority(priority) set_realtime_priority(priority)
set_core_affinity(core)
class Ratekeeper(): class Ratekeeper():

@ -80,6 +80,7 @@ selfdrive/logmessaged.py
selfdrive/tombstoned.py selfdrive/tombstoned.py
selfdrive/pandad.py selfdrive/pandad.py
selfdrive/updated.py selfdrive/updated.py
selfdrive/rtshield.py
selfdrive/athena/__init__.py selfdrive/athena/__init__.py
selfdrive/athena/athenad.py selfdrive/athena/athenad.py

@ -188,6 +188,7 @@ managed_processes = {
"updated": "selfdrive.updated", "updated": "selfdrive.updated",
"dmonitoringmodeld": ("selfdrive/modeld", ["./dmonitoringmodeld"]), "dmonitoringmodeld": ("selfdrive/modeld", ["./dmonitoringmodeld"]),
"modeld": ("selfdrive/modeld", ["./modeld"]), "modeld": ("selfdrive/modeld", ["./modeld"]),
"rtshield": "selfdrive.rtshield",
} }
daemon_processes = { daemon_processes = {
@ -227,6 +228,7 @@ if not PC:
if ANDROID: if ANDROID:
persistent_processes += [ persistent_processes += [
'updated', 'updated',
'rtshield',
] ]
car_started_processes = [ 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…
Cancel
Save