LinuxでCPUの情報を/sys/devices/system/cpuから操作する

LinuxコマンドでCPUの情報を得る

今後、procという言葉がたくさん出てくる。

これが出てきたら、プロセスやCPUに関連した

/proc/cpuinfo

まずはcpuの情報が書かれたファイルを見る。

less /proc/cpuinfo
  • processor

    • :CPUの単位。8コア存在するのであれば、0~7まである。
    • nprocコマンドと同じ
    • 例)
  • 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はオフラインにできないようになっている。