高 CPU 使用率 32 位元 Linux 應用程式

高 CPU 使用率 32 位元 Linux 應用程式

我在 2 台不同的 PC 配置上使用 Debian 8 Linux 發行版。您會注意到下面的第一個配置是我使用了很長時間的配置。這種配置在高峰時段使用 100% cpu,因此我決定購買一台更高規格的新電腦。我正在運行一個 10 多年前推出的舊 32 位元 Linux 應用程序,名為 samp03svr。這是一個單線程應用程序,所以我只搜尋高頻CPU。至強處理器對我沒有幫助。該應用程式需要比核心數量更高的 CPU 頻率。

以下是我的電腦配置:

  1. 舊配置主機板:ASUS P8H61-M 處理器:Intel i5-3570 @ 3.4 GHz RAM:2x8GB Kingston 1333MHz

  2. 較新的配置主機板:B250M-D3H-CF處理器:i7-7700K CPU @ 4.20GHz RAM:2x8GB Kingston 2133MHz

我對新配置的期望是 CPU 使用率要低得多,但令人驚訝的是,這種情況並沒有發生。事實上,CPU 使用率比舊配置高出約 5 倍。我所做的測試是針對相同的工作負載、相同的作業系統和相同的驅動程式進行的。我什至嘗試禁用多線程,但 CPU 使用率沒有差異。

你會建議做什麼?

答案1

如果您的目標是滿足您提到的高峰時段的需求,我會考慮,如果可能的話,在您現在擁有的兩台機器上運行伺服器程序,並將它們放在負載平衡器後面,例如 haproxy。

另一方面,如果您的目標是減少伺服器程式的 CPU 消耗,那麼您有多種選擇。

您可以降低進程的優先權,以便核心以不佔用 CPU 的方式安排其 CPU 時間。這可以使用nice或命令來完成renice。在Debian上,優先權值範圍從-20到+19,預設值(不使用nice啟動流程)為0。如果您將其視為“進程越好,它就越願意將 CPU 時間交給其他進程”,那麼就很容易記住。

使用不同的 Niceness 值啟動您的程式:

nice -n +12 /path/to/your/program

如果你的程式已經在運行,你可以使用renice它的 pid:

#first find the pid
pgrep your_program_name
#or
ps aux | grep your_program_name

#now use the pid here
renice -n +12 pid_of_your_program

#or if you are comfortable combining these
renice -n +12 $(pgrep your_program_name)

另一個選擇是使用名為 的工具cpulimit。它允許您運行程式並定義您想要允許的 CPU 最大百分比。

#install the package
apt-get install cpulimit

#run your program, for example limiting to 25%
cpulimit -l 25 /path/to/your/program

相關內容