Skip to content

cpu 隔离#

树莓派系统使用的是 /boot/firmware/cmdline.txt 文件来配置内核引导参数,可以在该文件中添加 CPU 隔离参数。

1. 确定要隔离的CPU#

假设树莓派有4个CPU(0-3),你想隔离CPU 3。

2. 编辑 cmdline.txt#

编辑 /boot/firmware/cmdline.txt 文件:

sudo nano /boot/firmware/cmdline.txt

在文件的末尾添加以下内容(注意不要添加换行符):

isolcpus=3

确保所有参数都在同一行,之间用空格隔开。例如:

console=serial0,115200 console=tty1 root=PARTUUID=1234abcd-02 rootfstype=ext4 fsck.repair=yes isolcpus=3

3. 更新 rc.local 文件#

为了在系统启动后进一步配置CPU,可以在 /etc/rc.local 文件中添加命令:

sudo nano /etc/rc.local

exit 0 行之前添加以下内容:

echo 0 > /proc/irq/default_smp_affinity
echo 0 > /sys/devices/system/cpu/cpu3/online
echo 3 > /sys/devices/system/cpu/isolated

保存并关闭文件。

4. 配置调度策略#

为了将实时任务绑定到隔离的CPU,使用 taskset 命令。假设你有一个实时任务需要运行在CPU 3:

taskset -c 3 sudo cyclictest -l100000 -m -Sp90 -i200 -h400 -q > cyclictest.log

5. 验证配置#

重启系统以应用更改:

sudo reboot

重启后,验证CPU隔离是否生效:

cat /sys/devices/system/cpu/isolated

应输出:

3

示例:完整的操作步骤#

  1. 确保树莓派系统是最新的:

    sudo apt update
    sudo apt upgrade
    
  2. 编辑 /boot/firmware/cmdline.txt 文件:

    sudo nano /boot/firmware/cmdline.txt
    

    在末尾添加:

    isolcpus=3
    
  3. 编辑 /etc/rc.local 文件:

    sudo nano /etc/rc.local
    

    exit 0 行之前添加:

    echo 0 > /proc/irq/default_smp_affinity
    echo 0 > /sys/devices/system/cpu/cpu3/online
    echo 3 > /sys/devices/system/cpu/isolated
    
  4. 重启系统:

    sudo reboot
    
  5. 验证配置:

    cat /sys/devices/system/cpu/isolated
    
  6. 运行实时任务:

    taskset -c 3 cyclictest -l100000 -m -Sp90 -i200 -h400 -q > cyclictest.log
    

注意事项#

  • 隔离CPU时,请确保系统有足够的资源处理非实时任务。
  • 如果需要调整隔离的CPU,可以修改 isolcpus 参数并重新启动系统。
  • 使用 taskset 命令将实时任务绑定到隔离的CPU。

通过这些步骤,你可以在树莓派上实现CPU隔离,从而更好地支持实时任务的执行。