在麒麟OS中可用taskset命令绑定进程到指定CPU核心:①查PID后用sudo taskset -cp 0,2 PID绑定运行中进程;②启动新进程时用sudo taskset -c 1,3,5 /path/to/cmd;③通过systemd的CPUAffinity=0 2 4永久固化。

在麒麟OS中让某个程序(如AI推理服务或实时音视频处理进程)只在指定CPU核心上运行,可避免多核争抢缓存、降低跨核调度开销、提升确定性响应——这需要通过Linux原生命令taskset实现,而非图形界面设置。
用taskset绑定已运行进程到指定核心
该方法适用于你已启动目标程序,但发现其频繁在多个核心间迁移、引发TLB抖动或缓存失效。
① 查出目标进程PID:执行 pgrep -f "python.*inference.py" 或 ps aux | grep ollama,记下最左列数字(例如 8923)。
② 绑定到第0和第2号逻辑CPU:执行 sudo taskset -cp 0,2 8923。其中 -cp 表示“change processor”,逗号分隔核心编号,【必须用sudo,否则普通用户无权修改其他用户的进程亲和性】。
③ 验证是否生效:运行 taskset -p 8923,输出末尾应显示 current affinity list: 0,2。
这一步操作立即生效,但系统重启后自动还原为全核可用。
用taskset启动新进程并限定核心
适合你准备运行一个长期驻留的后台任务,希望从第一行指令就锁定资源范围。
方法一:直接指定核心列表
打开终端,输入:sudo taskset -c 1,3,5 /usr/bin/ffmpeg -i input.mp4 -c:v libx264 output.mp4。这里 -c 1,3,5 表示仅允许该ffmpeg进程使用CPU 1、3、5三个逻辑核心。
方法二:用十六进制掩码(兼容老脚本)
若需绑定到CPU 0 和 CPU 3,对应二进制 1001 → 十六进制 0x9,命令为:sudo taskset -c 0x9 /usr/bin/redis-server。
注意:掩码位数必须与系统总逻辑CPU数对齐,超出范围的位会被忽略,但不会报错。
永久固化CPU亲和性(systemd服务方式)
当你把某个程序注册为systemd用户服务(如ollama、minio),又希望每次开机都固定跑在特定核心上,就得改服务单元配置。
第一步:编辑服务文件
执行 sudo systemctl edit --user ollama.service,进入nano编辑器。
第二步:写入亲和性限制
在空白文件中输入以下两行:[Service]CPUAffinity=0 2 4
第三步:重载并重启服务
执行 systemctl --user daemon-reload && systemctl --user restart ollama。
验证:运行 systemctl --user show ollama.service | grep CPUAffinity,确认输出含 CPUAffinity=0 2 4;再用 ps -o pid,comm,psr -C ollama 检查实际运行的核心编号是否落在0/2/4范围内。











