You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux动态亲和性:如何获取未被任何进程占用的CPU核心?

获取未被进程使用的空闲CPU核心(Linux)

方法1:用bash脚本动态筛选

可以通过原生命令组合,写出能自动识别空闲核心的脚本,直接用于taskset绑定进程:

#!/bin/bash
# 获取系统所有CPU核心编号(比如4核心就是0-3)
ALL_CPUS=$(seq 0 $(($(nproc) - 1)))
# 提取当前所有进程正在使用的核心(去重)
USED_CPUS=$(ps -eo psr | grep -v PSR | sort -n | uniq | tr '\n' ' ')
# 计算所有核心和已用核心的差集,得到空闲核心
IDLE_CPUS=$(comm -23 <(echo "$ALL_CPUS" | tr ' ' '\n' | sort) <(echo "$USED_CPUS" | tr ' ' '\n' | sort))

if [ -n "$IDLE_CPUS" ]; then
    echo "空闲CPU核心列表: $IDLE_CPUS"
    # 随机选一个空闲核心(按需使用)
    RANDOM_CPU=$(echo "$IDLE_CPUS" | shuf -n1)
    echo "选中的空闲核心: $RANDOM_CPU"
    # 示例:用taskset把进程绑定到该核心
    # taskset -c $RANDOM_CPU your_process_command
else
    echo "暂无空闲CPU核心可用"
fi

方法2:临时手动查看(适合快速操作)

  • 打开top命令,按下数字1,就能看到每个CPU核心的实时使用率,找到%CPU持续为0的核心编号。
  • 直接用taskset -c <核心编号> 你的进程命令绑定即可。

注意事项

  • 脚本获取的是瞬时空闲状态,Linux调度器可能随时把其他进程调度到空闲核心上。如果需要长期独占核心,建议配合cpuset工具创建专属CPU组,或者给绑定后的进程设置高优先级。
  • 部分内核线程可能短暂占用核心,若要更精准的结果,可以连续采样几次空闲核心,取重复出现的编号。

内容的提问来源于stack exchange,提问作者yaar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 04:23:15