Apache-2.2

將程序分配給 CPU 核心

  • January 28, 2012

我可以訪問執行 Apache 2.2.15 和 MySQL 5.1.52 的 CentOS 6 Web 伺服器(一個 PHP/MySQL 論壇)。這個盒子有雙八核至強。

我查看 CPU 圖表發現前兩個核心(0 和 1)的使用率達到 90%,而其他 14 個核心的使用率僅達到 30-40%。Core 8,我相信它是第二個處理器的第一個核心,它的使用率很高(高達 90%),但如前所述,所有其他的都很低。

Apache 啟動了大約 20 個程序,我懷疑在它的預設狀態下,它無法理解,並且自然而然地利用了所有核心。這應該是我認為的核心工作(有人可以確認嗎?)。然而,隨著這些核心的使用最大化,儘管有備用 RAM 和磁碟 I/O,但性能還是會顯著下降。

有什麼我可以在 Apache 中進行調整以“使其了解”所有其他核心,或者可能是核心 peramater 將某些程序分配給某些核心?例如,我可以將核心 0 和 1 排除在用於 Apache 和 MySQL 之外嗎?

使用任務集調整程序親和性

例如將目前程序分配給 cpu-core 0,1,3

$ taskset -cp 0,1,3 $ $

pid 21698 的目前親和力列表:0-7

pid 21698 的新親和力列表:0,1,3

隔離 CPU 以僅執行特定程序。核心參數“isolcpus”可以將特定 CPU 與執行其他任務隔離開來。與任務集一起,您可以讓特定的 CPU 僅執行指定的任務。例如,在 grub.conf 中輸入“isolcpus=2,3”將隔離 CPU 2 和 3。

http://honglus.blogspot.com/2011/03/tune-interrupt-and-process-cpu-affinity.html

引用自:https://serverfault.com/questions/345687