私はUbuntu14.04サーバーで作業しており、48 CPUコアを持っています。 sar情報から、1つのコアのCPU使用率が高いことがわかります。そのため、そのコアで実行されているプロセスを知りたいのです。 Ubuntuの各CPUコアですべてのプロセスを実行するにはどうすればよいですか?
あなたはそれをps -aeF
、C
列を参照
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 2015 ? 00:08:07 /sbin/init
または、htop
を使用して、PROCESSOR
列を表示するように構成します。
CPUアフィニティを設定するには、 taskset コマンドを使用できます
通常の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を有効にしました。