Realtime shield (#2194)

* cpu 3 shield

* set priority before affinity

* add to release files

* only run on android
pull/2188/head
Adeeb Shihadeh 2020-09-17 15:49:14 -07:00 committed by GitHub
parent 92922ce2ae
commit b341fdc644
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 21 additions and 1 deletions

View File

@ -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)
========================

View File

@ -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():

View File

@ -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

View File

@ -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 = [

View File

@ -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)