コアあたりの物理プロセッサとスレッド数を抽出する方法は? (テキストなし、他の場所で入力として使用される数字のみ)

コアあたりの物理プロセッサとスレッド数を抽出する方法は? (テキストなし、他の場所で入力として使用される数字のみ)

キー番号をスクリプトで使用したいのですが、番号自体を抽出するのが最善の方法は何ですか?

たとえば、以下に物理コアの数を抽出しますが、実際のコアの数をどのように抽出する必要があるかを他の場所に入力として使用できますか?

lscpu | grep "Core(s) per socket" 
Core(s) per socket:    4

tail -c Nについて知っていますが、より多くのコアを持つシステムで作業している場合、このアプローチが脆弱になる可能性があることが心配です。

他の場所で入力パラメータとして使用する物理コア数とコアあたりのスレッド数を確実に取得する最良の方法は何ですか?

答え1

行から数字を選択するには、Perl正規表現をawk使用できますsedgrep

$ lscpu | sed -n 's/^Core(s) per socket: *//p'
2

しかし、その番号が欲しいですか?ソケットのコア数は何ですか?コンピュータに複数のソケットがある場合の対処方法:

$ lscpu |grep -i socket
Core(s) per socket:    2
Socket(s):             2

これを使用してawk2つの数字を取り、乗算することができます。

$ lscpu | awk '/^Core.s. per socket:/ {cores=$NF} /^Socket.s.:/ {sockets=$NF} END {print cores * sockets}'
4

これがハイパースレッディングと見なされるか、ハイパースレッディングが必要かはわかりませんが、数値を直接取得できますCPU(s)

lscpu | awk '/^CPU.s.:/ { print $NF; exit }'

または使用nprocシステムのCPUの総数を取得します。

$ nproc --all
4 

答え2

getconfこれにはユーティリティを使用できます。これはあなたに役立ちます

$ getconf _NPROCESSORS_ONLN
8

関連情報