Linux 如何关闭 CPU

2015-03-26 09:12:23 +08:00
 gdqyn
请问各位,现在我有一台四个CPU的服务器,要做测试,只想用一个CPU,就是想关闭另外三个,我知道Ubuntu下可以修改grub来限制最多CPU数,现在操作系统是CentOS,不知这种方法行不行,还是说有其他方法。
4303 次点击
所在节点    问与答
4 条回复
lushl9301
2015-03-26 09:21:47 +08:00
fangdingjun
2015-03-26 09:33:07 +08:00
如果内核编译了cpu热插拔支持, 向/sys/ 目录下的某个文件写0 就可以关闭cpu
gdqyn
2015-03-26 09:44:23 +08:00
@fangdingjun 之前看到过这个方法,是向/sys/devices/system/cpu/cpu<X>/online文件写0,但是没找到online文件,刚才刚刚发现,cpu0文件夹下是没有online文件的,其他cpu都有,这个方法也可以关核心
monnand
2015-03-26 12:12:56 +08:00
先问问楼主为什么要这么做,因为不同目的有不同的方法。

如果仅仅是想让一个进程以及它的子进程跑在一个CPU/core上,那么可以考虑用cgroups来实现。一个简单的方法是:把你要跑的程序放在一个docker container里,跑的时候指定cpuset这个参数。具体参见这里:

http://stackoverflow.com/questions/25998737/limiting-a-docker-container-to-a-single-cpu-core

简单说,就是这行这条命令:docker run --cpuset="0" <你要跑的container名字>

如果对linux container的底层实现感兴趣,参考这里: https://www.kernel.org/doc/Documentation/cgroups/cpusets.txt

如果楼主是希望通过关闭CPU/core来达到省电的目的,那么以上方法可能就不那么有效了。不过看样子好像只是为了测试,所以应该不是希望物理关闭某个CPU/core。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/179403

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX