CPU 使用率が高い 32 ビット Linux アプリ

CPU 使用率が高い 32 ビット Linux アプリ

私は 2 つの異なる PC 構成で Debian 8 Linux ディストリビューションを使用しています。以下で最初に目にする構成は、私が長い間使用している構成です。この構成ではピーク時に CPU を 100% 使用するため、はるかに高いスペックの新しい PC を購入することにしました。私は 10 年以上前にリリースされた samp03svr という古い 32 ビット Linux アプリを実行しています。これはシングル スレッド アプリなので、高周波数 CPU のみを検索しました。Xeon プロセッサは役に立ちませんでした。アプリにはコア数よりも高い CPU 周波数が必要です。

私の PC の構成は次のとおりです。

  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 です。値が大きいほど、優先度は低くなります。「プロセスの nice 度が高いほど、他のプロセスに 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)

もう 1 つのオプションは、 というツールを使用することですcpulimit。このツールを使用すると、プログラムを実行し、許可する CPU の最大パーセンテージを定義できます。

#install the package
apt-get install cpulimit

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

関連情報