diff --git a/common/realtime.py b/common/realtime.py index e05eb8f2c3..4a37efadab 100644 --- a/common/realtime.py +++ b/common/realtime.py @@ -2,7 +2,7 @@ import gc import os import time -from typing import Optional +from typing import Optional, List, Union from setproctitle import getproctitle # pylint: disable=no-name-in-module @@ -38,15 +38,16 @@ def set_realtime_priority(level: int) -> None: os.sched_setscheduler(0, os.SCHED_FIFO, os.sched_param(level)) # type: ignore[attr-defined] -def set_core_affinity(core: int) -> None: +def set_core_affinity(cores: List[int]) -> None: if not PC: - os.sched_setaffinity(0, [core,]) # type: ignore[attr-defined] + os.sched_setaffinity(0, cores) -def config_realtime_process(core: int, priority: int) -> None: +def config_realtime_process(cores: Union[int, List[int]], priority: int) -> None: gc.disable() set_realtime_priority(priority) - set_core_affinity(core) + c = cores if isinstance(cores, list) else [cores, ] + set_core_affinity(c) class Ratekeeper: diff --git a/selfdrive/locationd/paramsd.py b/selfdrive/locationd/paramsd.py index aeb07ae478..0e83728e5c 100755 --- a/selfdrive/locationd/paramsd.py +++ b/selfdrive/locationd/paramsd.py @@ -1,14 +1,12 @@ #!/usr/bin/env python3 -import gc import math - import json import numpy as np import cereal.messaging as messaging from cereal import car from common.params import Params, put_nonblocking -from common.realtime import set_realtime_priority, DT_MDL +from common.realtime import config_realtime_process, DT_MDL from common.numpy_fast import clip from selfdrive.locationd.models.car_kf import CarKalman, ObservationKind, States from selfdrive.locationd.models.constants import GENERATED_DIR @@ -103,8 +101,7 @@ class ParamsLearner: def main(sm=None, pm=None): - gc.disable() - set_realtime_priority(5) + config_realtime_process([0, 1, 2, 3], 5) if sm is None: sm = messaging.SubMaster(['liveLocationKalman', 'carState'], poll=['liveLocationKalman']) diff --git a/selfdrive/rtshield.py b/selfdrive/rtshield.py index ad7538d7a8..45571fe2db 100755 --- a/selfdrive/rtshield.py +++ b/selfdrive/rtshield.py @@ -11,7 +11,7 @@ from common.realtime import set_core_affinity, set_realtime_priority # openpilot processes def main() -> NoReturn: - set_core_affinity(int(os.getenv("CORE", "3"))) + set_core_affinity([int(os.getenv("CORE", "3")), ]) set_realtime_priority(1) while True: diff --git a/selfdrive/test/test_onroad.py b/selfdrive/test/test_onroad.py index abbd25bb9c..8463a95578 100755 --- a/selfdrive/test/test_onroad.py +++ b/selfdrive/test/test_onroad.py @@ -27,7 +27,7 @@ PROCS = { "./locationd": 9.1, "selfdrive.controls.plannerd": 11.7, "./_ui": 33.0, - "selfdrive.locationd.paramsd": 5.0, + "selfdrive.locationd.paramsd": 9.0, "./_sensord": 6.17, "selfdrive.controls.radard": 4.5, "./_modeld": 4.48,