我使用的是 Ubuntu Server Edition 11.10,并且有两个 CPU 占用极高的程序在同一个核心上运行。这两个进程都不是为多核处理而编写的。有没有办法让进程 A 在核心 1 上运行,让进程 B 在核心 2 上运行?
答案1
被接受的答案可能是好的建议,但它肯定不是对你问题的回答。你的问题并没有向我表明你没有资格听取答案,事实上,这听起来像是一个很好的例子,说明在这种情况下,你想要具体指出哪些处理器应该做什么。
说到重点,您需要的是 CPU 集。Ubuntu 11.10 版支持 CPU 集,因为它使用了足够新的 Linux 内核。我相信需要 Linux 2.6。
您可以在这里阅读 cpuset 的手册页:http://www.kernel.org/doc/man-pages/online/pages/man7/cpuset.7.html
这是另一个供一般阅读的页面:http://www.bullopensource.org/cpuset/
Linux 在决定如何分配 CPU 时间方面可能很“出色”,但它并不完美。
答案2
我希望这不会显得无礼,但如果你问了这个问题,你就不应该考虑它。这是 Linux 非常擅长自己解决的事情之一。如果你这样做,很可能会对性能产生非常负面的影响。即使程序不是为使用更多处理器而设计的,Linux 也会根据需要将它们移动到不同的核心。程序不会注意到。
您可能希望nice
使用命令赋予它们两个较低的值,nice
以赋予它们更高的优先级。