Hatena::ブログ(Diary)

ablog このページをアンテナに追加 RSSフィード Twitter

2014-10-07

LinuxでCPU使用率を上げるコマンド

いいものを見つけたのでコピペ

yes >> /dev/null &

最後に & お勧め w(二つターミナルが必要でなくなる。)

ちなみに メモリ負荷をあげる魔法のコマンド

/dev/null < $(yes) & 
LinuxでCPU負荷を上げる魔法のコマンド - Qiita

">>" は ">" でも良いと思うが、何か特別な理由があって">>"にしているのだろうか。


追記(2014/10/08):

ただのメモにはてブがたくさん(当社比)ついてビックリ(^-^;

コア数に対する考慮が足りない。

コア数に対する考慮が足りない。 - gomakyu のコメント / はてなブックマーク

とコメントを頂いた通り、上記のコマンドを実行しても1つの論理CPUを使い切るだけです。

f:id:yohei-a:20141008210643p:image

例えば上の図の通り、1ソケット * 4コア * 2スレッド で論理CPU数が8の場合は、ざっくり、1多重で実行すると12.5%、4多重で実行すると50%、8多重で実行すると100%になります。

JPOUGのイベントで「私がPerlを使う理由」というお題でLTしました - ablog で4つ論理CPUの場合に Perl ワンライナーCPU使用率を100%にする例を書いていますが、上記コマンドだと、4つの論理CPUの場合、

$ yes >> /dev/null &
$ yes >> /dev/null &
$ yes >> /dev/null &
$ yes >> /dev/null &

と4多重で実行すると100%になります。


$ yes | xargs -L 1 -P 8 >> /dev/null # マルチコアCPU LOAD は高くなった (死ねそうなのでバックグラウンドジョブにはしていない)

$ yes | xargs -L 1 -P 8 >> /dev/null # マルチコアの CPU LOAD は高くなった (死ねそうなのでバックグラウンドジョブにはしていない) - ymkjp のコメント / はてなブックマーク

とコメント頂きました。xargs の -P オプションで並列実行するとお洒落ですね*1。コメントの例は -P 8 なので8多重で実行することになります。


逆に性能分析の際は、システム全体ではCPU使用率は低くても、mpstat*2 などでCPU別に見ると1CPUは100%で張り付いていることがあります。

f:id:yohei-a:20141008212301p:image


それだとマルチコア使わんのじゃない? OpenSSL が楽という覚えが…ああこれこれ http://d.hatena.ne.jp/tmatsuu/20140101/1388586426

それだとマルチコア使わんのじゃない? OpenSSL が楽という覚えが…ああこれこれ http://d.hatena.ne.jp/tmatsuu/20140101/1388586426 - Nyoho のコメント / はてなブックマーク

こちらのコメントで紹介されている id:tmatsuu さんのMac Pro(Late 2013)を火鉢に見立てて暖を取る方法 - Dマイナー志向で紹介されている "openssl speed -multi X" 便利ですね。

$ openssl speed -multi 4

と実行してみると、

f:id:yohei-a:20141008213811p:image

こんな感じ。

CPU数に合わせて、100%使い切るには

openssl speed -multi `grep processor /proc/cpuinfo|wc -l`

としてやれば良いです。


最後に書籍紹介。

Systems Performance: Enterprise and the Cloud

Systems Performance: Enterprise and the Cloud

性能分析に興味のある方は小田さんたちの「絵で見てわかるシステムパフォーマンスの仕組み」や Brendan GreggSystems Performance: Enterprise and the Cloud がオススメです。

「絵で見てわかるシステムパフォーマンスの仕組み」はオラクル小田さんの根本原理の説明から始まり、現場で性能試験をどうすればよいか?(オラクル榑松さん)、仮想化の場合は?(VMware岡田さん)、クラウドでは?(AWS平山さん)という秀逸な構成になっていて、根本原理を理解でき、さらに現場で直面する問題(性能試験どうすれば良い?仮想化、クラウドでは?)についても書かれていて、現場に置いておきたい1冊だと思います。

"Systems Performance: Enterprise and the Cloud"は元同僚で絵で見てわかるITインフラの仕組みを共著した@に教えてもらった神本です。著者のwikipedia:Brendan GreggSun Microsystems の performance lead and kernel engineer で ZFS L2ARC の開発者でもあり、その後、 Oracle Corporation、Joyent を経て今は Netflix の Senior Performance Architect です。ハードウェアから UNIXSolarisLinuxカーネル、パフォーマンスまで深く幅広い知識を持ち、USE Method などシンプルでわかりやすいパフォーマンス分析手法を提唱しています。


関連


おまけ

「メモリ負荷をあげる魔法のコマンド」についても試してみたところ、メモリ使用量が増えました。変数 $(yes) がもりもり成長して、/dev/null にリダイレクトされないんでしょうね。

f:id:yohei-a:20141010014910p:image:w640

f:id:yohei-a:20141010014903p:image

strace してみると、

$ strace /dev/null < $(pwd)
execve("/dev/null", ["/dev/null"], [/* 53 vars */]) = -1 EACCES (Permission denied)
dup(2)                                  = 3
fcntl(3, F_GETFL)                       = 0x8002 (flags O_RDWR|O_LARGEFILE)
fstat(3, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 4), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe2339e1000
lseek(3, 0, SEEK_CUR)                   = -1 ESPIPE (Illegal seek)
write(3, "strace: exec: Permission denied\n", 32strace: exec: Permission denied
) = 32
close(3)                                = 0
munmap(0x7fe2339e1000, 4096)            = 0
exit_group(1)                           = ?
$ strace /dev/null < $(yes)
zsh: fatal error: out of heap memory

そのようですね。

*1Perl ワンライナーで遊んだメモ - ablog以来使っていなかった。

*2:top見ればすぐわかりますが

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証