From a1440bde79ad52730151532d40c25973bffdfc5e Mon Sep 17 00:00:00 2001 From: Xiaole Fang Date: Tue, 12 May 2026 21:35:23 +0800 Subject: [PATCH 1/3] fix(control): limit native math threads --- tinynav/platforms/cmd_vel_control.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tinynav/platforms/cmd_vel_control.py b/tinynav/platforms/cmd_vel_control.py index 3afa4547..8bc9125c 100644 --- a/tinynav/platforms/cmd_vel_control.py +++ b/tinynav/platforms/cmd_vel_control.py @@ -1,3 +1,12 @@ +import os +# Limit native math libraries before importing numpy/scipy. +# On Jetson/OpenBLAS, tiny matrix ops can otherwise spin multiple worker threads +# and make this low-rate control node look like it uses >100% CPU. +os.environ.setdefault('OPENBLAS_NUM_THREADS', '1') +os.environ.setdefault('OMP_NUM_THREADS', '1') +os.environ.setdefault('MKL_NUM_THREADS', '1') +os.environ.setdefault('NUMEXPR_NUM_THREADS', '1') + import rclpy from rclpy.node import Node from geometry_msgs.msg import Twist From ec3669b8f981188a396ac3bcf6edfbe3171d1262 Mon Sep 17 00:00:00 2001 From: dvorak0 Date: Fri, 15 May 2026 10:29:41 +0800 Subject: [PATCH 2/3] Limit OpenBLAS threads globally --- Dockerfile | 1 + tinynav/platforms/cmd_vel_control.py | 9 --------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index aebea8f6..a40f0df2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -76,6 +76,7 @@ RUN apt-get update && apt-get install -y ros-humble-desktop \ # env ENV RMW_FASTRTPS_PUBLICATION_MODE=ASYNCHRONOUS +ENV OPENBLAS_NUM_THREADS=1 RUN echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc ENV CYCLONEDDS_URI=/tinynav/scripts/cyclone_dds_localhost.xml ENV PATH=$PATH:/usr/src/tensorrt/bin/ diff --git a/tinynav/platforms/cmd_vel_control.py b/tinynav/platforms/cmd_vel_control.py index 8bc9125c..3afa4547 100644 --- a/tinynav/platforms/cmd_vel_control.py +++ b/tinynav/platforms/cmd_vel_control.py @@ -1,12 +1,3 @@ -import os -# Limit native math libraries before importing numpy/scipy. -# On Jetson/OpenBLAS, tiny matrix ops can otherwise spin multiple worker threads -# and make this low-rate control node look like it uses >100% CPU. -os.environ.setdefault('OPENBLAS_NUM_THREADS', '1') -os.environ.setdefault('OMP_NUM_THREADS', '1') -os.environ.setdefault('MKL_NUM_THREADS', '1') -os.environ.setdefault('NUMEXPR_NUM_THREADS', '1') - import rclpy from rclpy.node import Node from geometry_msgs.msg import Twist From 259b40e5f431221958ae9954e9fdf5329b563eac Mon Sep 17 00:00:00 2001 From: dvorak0 Date: Fri, 15 May 2026 10:30:32 +0800 Subject: [PATCH 3/3] Document OpenBLAS thread limit --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index a40f0df2..c3e2d697 100644 --- a/Dockerfile +++ b/Dockerfile @@ -76,6 +76,8 @@ RUN apt-get update && apt-get install -y ros-humble-desktop \ # env ENV RMW_FASTRTPS_PUBLICATION_MODE=ASYNCHRONOUS +# Limit OpenBLAS worker threads globally to avoid high CPU on small NumPy/SciPy +# workloads on Jetson. See OpenBLAS fix context: https://github.com/OpenMathLib/OpenBLAS/pull/4388 ENV OPENBLAS_NUM_THREADS=1 RUN echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc ENV CYCLONEDDS_URI=/tinynav/scripts/cyclone_dds_localhost.xml