动态切换 Linux 使用的 CPU 数量

14 篇文章 0 订阅
12 篇文章 0 订阅
动态切换 Linux 使用的 CPU 数量


摘要: 由于要测试一些代码,其运行结果会受到多核并行的影响,所以希望能够调整使用的 CPU 数量。网络上之前看到的方法是在内核的启动参数上添加一个 maxcpus,但是如果这样的话每切换一次都要重启一次,是在太麻烦了。想 ...
由于要测试一些代码,其运行结果会受到多核并行的影响,所以希望能够调整使用的 CPU 数量。
网络上之前看到的方法是在内核的启动参数上添加一个 maxcpus,但是如果这样的话每切换一次
都要重启一次,是在太麻烦了。想想 Linux 应该是很强大的,所以可以动态修改 CPU 数量才对。
无意中看到 Linux 代码的 Documentation 文件夹下有个文件叫做 cpu-hotplug.txt,于是就看了一下,
发现可以在 /sys/devices/system/cpu 看到代表各 CPU 的文件夹按照 cpuX 的命名方式,如 cpu0、
cpu1、cpu2 等。这些文件夹里面有一个 online 文件,如果其值为0则禁用该 CPU,如果为1则启用
该 CPU。注意,这里需要 root 权限哦。
因为我只要在单核和多核之间切换,所以我写了两个脚本放在 /usr/local/sbin 里面:
singlecore
#!/bin/bash
cpus_dir="/sys/devices/system/cpu"
for cpu in $(ls "$cpus_dir" | grep 'cpu[0-9]\+')
do
cpu_online="$cpus_dir/$cpu/online"
if [[ -e "$cpu_online" && $(cat $cpu_online) = 1 ]]
then
echo 0 > "$cpu_online"
fi
done
multicore
#!/bin/bash
cpus_dir="/sys/devices/system/cpu" 
for cpu in $(ls "$cpus_dir" | grep 'cpu[0-9]\+')
do
cpu_online="$cpus_dir/$cpu/online"
if [[ -e "$cpu_online" && $(cat $cpu_online) = 0 ]]
then
echo 1 > "$cpu_online"
fi
done
之后需要切换的时候,只要运行 sudo singlecore 或者 sudo multicore 就可以了~
顺便说一句,我当时在想,如果我禁用了所有的 CPU 会怎么样呢?结果发现 cpu0 是
没有 online 文件的,也就是 Linux 至少保证一个 CPU 处于可用状态。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值