LinuxコマンドでCPUの情報を得る
今後、proc
という言葉がたくさん出てくる。
これが出てきたら、プロセスやCPUに関連した
/proc/cpuinfo
まずはcpuの情報が書かれたファイルを見る。
less /proc/cpuinfo
processor
- :CPUの単位。8コア存在するのであれば、
0~7
まである。 nproc
コマンドと同じ- 例)
- :CPUの単位。8コア存在するのであれば、
model name
:CPUの名前。flags
:cpuが持つ機能。- 例)
fpu
: 小数点も含めた計算機能。 - 例2)
spectre_v1
: 一昨年あたりにあったCPUの脆弱性に関する機能。
- 例)
nprocコマンド
CPUの数が得られる。(coreutilsに含まれる機能)
grep -c processor /proc/cpuinfo
と同じ結果が得られる。
色々なスクリプトで使われている
CPUの使用状況を調べる
top
コマンド
CPUに関する情報が出てくる。
システムが高負荷になるときにどのプログラムが動いているかどうかがわかる。
id
:アイドリング。ここの値が高ければ高いほど、何もしていないCPUの数が多い。us
:ユーザー単位のCPU使用率
top
を押した後、1
を押してみる
CPUのプロセッサーごとの詳細画面に移る。
ループするプログラムを見てみる
#!/bin/sh while true do sleep 1 date done
後処理、loopコマンドの終了
killall loop
プロセッサーを指定してプログラムを実行する
taskset
を指定することで、cpuのプロセッサー番号を指定して動かすことができる
taskset -c 3 ./loop &
このプログラムを実行した後、top
コマンドを実行する。
CPUの数を減らす
結論:システムドライバファイルを消せば良い。
sys/devices/system/cpu/cpu<プロセッサー名>
ll sys/devices/system/cpu/
cpuが大量に見えるはず。 今回はcpu7を選択
cat /sys/devices/system/cpu/cpu7/online
これを実行することで、1か0かが表示される。
1
:cpu7は有効0
:cpu0は無効
逆に、このファイルに1や0を記述することで、CPUの数を増減させることができる
例)
echo 0 > /sys/devices/system/cpu/cpu7/online
注意!:cpu0
はオフラインにできないようになっている。