
我使用的是 Ubuntu Server Edition 11.10,我有兩個 CPU 密集型程式在同一核心上運行。這些進程都沒有針對多核心處理進行程式設計。有沒有辦法讓進程 A 在 Core 1 上運行,進程 B 在 Core 2 上運行?
答案1
接受的答案可能是好的建議,但它肯定不是您問題的答案。你的問題並沒有顯示你也沒有資格聽到答案,事實上,這聽起來像是一個很好的例子,說明你想要具體指示哪些處理器應該做什麼。
言歸正傳,您想要的是 CPU 集。它們在 Ubuntu 11.10 中受支持,因為它使用了足夠新的 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
命令賦予它們更高的優先權。