sysbenchコマンドを使ってCPU、ファイルIO、メモリ、スレッド、Mutex、OLTPの簡易ベンチマークができます。
CPUのベンチマークをやってみました。
インストール
APTパッケージからインストールします。
$ sudo apt-get install sysbench
CPUのベンチマーク
sysbenchの–test=cpuでCPUのベンチマークができます。
多分、10,000までの素数を求める処理で–num-threadsに指定したスレッド数で処理時間を測定できます。
total timeが処理時間で、1スレッドで約7.8秒かかる処理ということになります。
最短が0.73ms、平均が0.77msで全体の95%が0.78ms以内に処理されているので異常値もなさそう(かな?)
$ sysbench --test=cpu run sysbench 0.4.12: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 1 Doing CPU performance benchmark Threads started! Done. Maximum prime number checked in CPU test: 10000 Test execution summary: total time: 7.6804s total number of events: 10000 total time taken by event execution: 7.6786 per-request statistics: min: 0.73ms avg: 0.77ms max: 9.54ms approx. 95 percentile: 0.78ms Threads fairness: events (avg/stddev): 10000.0000/0.00 execution time (avg/stddev): 7.6786/0.00 $
処理時間の計測
Parallels DesktopでCPU割り当てを1〜4個に変更できます。
下記が1CPUの場合
$ cat /proc/cpuinfo | grep processor processor : 0 $
下記が4CPUの場合
$ cat /proc/cpuinfo | grep processor processor : 0 processor : 1 processor : 2 processor : 3
スレッドを1〜16まで変化させて処理時間を測定します。
CPU追加による性能向上
アムダールの法則でCPU追加で、どれだけ性能が向上するか計算しグラフにしてみました。
処理時間をtとすると、
t=st+pt st:順次処理時間 pt:並列化可能処理時間
で表される。
オーバヘッドを考慮しなければ、
t(N)=st+pt/N N:CPU数
となる。
1CPUと4CPUの4スレッドの処理時間が、それぞれ、7.53秒と2.96秒となるので、
7.53=st+pt/1 2.96=st+pt/4
の連立二次方程式を解くとstとptは以下になります。
st=1.43 pt=6.10
並列化できない割合Fは、
F=st/(st+pt) F=0.19
となります。
アムダールの法則の「N個のプロセッサを使ったときの全体の性能向上率」の、
性能向上率=1 / (F + (1 - F) / N )
で計算すると下記が得られます。
CPUを追加するほど、性能が向上しなくなることがわかります。