web-dev-qa-db-ja.com

Ubuntuの各CPUコアですべてのプロセスを実行するにはどうすればよいですか?

私はUbuntu14.04サーバーで作業しており、48 CPUコアを持っています。 sar情報から、1つのコアのCPU使用率が高いことがわかります。そのため、そのコアで実行されているプロセスを知りたいのです。 Ubuntuの各CPUコアですべてのプロセスを実行するにはどうすればよいですか?

8
Rohanil

あなたはそれをps -aeFC列を参照

UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0  2015 ?        00:08:07 /sbin/init

または、htopを使用して、PROCESSOR列を表示するように構成します。

enter image description here

CPUアフィニティを設定するには、 taskset コマンドを使用できます

11
daisy

通常のtopも、最後に使用されたCPUを表示できます。

メイン画面を表示しているときにfを押して[フィールド管理]画面に移動し、下向き矢印P = Last Used CPU (SMP)に移動して、dまたはスペースでオンに切り替える必要があります。 qを押すか、エスケープしてメイン画面に戻ります。

出力の右端のP列が気に入らない場合は、[フィールド管理]画面でP列を上に移動することをお勧めします。

これは日付が付けられていることを理解してください。ただし、psコマンドでどのプロセスがどのコアを使用しているかを確認したい場合は、必要な列はpsrです。 CはCPU使用率です。

コアの番号は0〜Nです。コアの詳細は以下で確認できます。

cat /proc/cpuinfo

したがって、4つのコアがあり、4番目のコアを使用するすべてのプロセスを表示するとします。

CORENUM=3; ps -e -o pid,psr,cpu,cmd | grep -E  "^[[:space:]][[:digit:]]+[[:space:]]+${CORENUM}"

上記のコマンドの内訳。

変数「CORENUM」を作成し、値を「3」に設定します(4番目のコア)。ステートメントをセミコロンで終了します(ここでEnterキーを押すことができます)。

次の場所でpsコマンドを実行します。-e =すべてのプロセスを選択します。-o =ユーザー定義フォーマット。これは、コンマで区切られた1つ以上のフォーマット指定子で構成されます。これらはps man( "man ps")ページのセクションSTANDARD FORMAT SPECIFIERSにあります。

(manページ内を検索するには、スラッシュを使用してください)。

それらの生のリストを表示するには、「L」オプション(「-」なし)を入力します。

ps L

したがって、ここで私のユーザー定義のフォーマットは、プロセスID、プロセッサ、CPU使用率、最後にコマンドの順になっています。

次に、これをgrepにパイプして、CORENUM変数に格納されているCPU番号に関連付けられているプロセスのみを正確に出力するために-Eオプションを使用して拡張regxを有効にしました。

5
user3183018