概要
- 「そのアプリ、スループットどのぐらいまで出るの?」に回答するための、Linuxの場合で簡単机上計算するための備忘
CPU使用時間の計測
まず、アプリの処理に要するCPU使用時間を計測します
CPU使用時間計測の手順
- 測定するアプリケーション以外の他は極力アイドル状態にします
- 1回目の
cat /proc/statコマンドを実行します - 机上計算したい処理を10回実行します
- 2回目の
cat /proc/statコマンドを実行します - 2回の
cat /proc/statコマンド結果の差分を計算します
実行例
cpu 43859 2 5688 773094 596 0 659 0 0 0
cpu0 23500 1 2950 384562 323 0 396 0 0 0
cpu1 20358 0 2737 388532 272 0 262 0 0 0
intr 1118404 0 26666 249169 0 0 0 802 0 0 0 0 622784 0 0 52765 0 0 44 165988 186 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 1124457
btime 1777159968
processes 22445
procs_running 2
procs_blocked 0
softirq 632320 22 80399 10 165600 21 0 324 165768 0 220176
cpu 43871 2 5747 775200 596 0 660 0 0 0
cpu0 23503 1 2962 385630 323 0 396 0 0 0
cpu1 20367 0 2785 389570 272 0 263 0 0 0
intr 1124050 0 26672 253145 0 0 0 803 0 0 0 0 623725 0 0 52765 0 0 44 166710 186 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 1132807
btime 1777159968
processes 22448
procs_running 2
procs_blocked 0
softirq 633664 22 80576 10 166322 21 0 324 166177 0 220212
上記の例で、cpuで始まる行はCPU全体の使用時間を示し、cpu0またはcpu1で始まる行はコア単位での使用時間を示しています
今回はCPU全体の使用時間を使うので、cpuで始まる行のみを計算に使います
cpu 43859 2 5688 773094 596 0 659 0 0 0
cpu 43871 2 5747 775200 596 0 660 0 0 0
/proc/statの意味を調べるには、man proc_stat(5)を参照するとよいでしょう
それを踏まえて1回目と2回目の差分を計算します
| user | nice | system | idle | iowait | irq | softirq | steal | guest | guest_nice | ||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1回目 | cpu | 43859 | 2 | 5688 | 773094 | 596 | 0 | 659 | 0 | 0 | 0 |
| 2回目 | cpu | 43871 | 2 | 5747 | 775200 | 596 | 0 | 660 | 0 | 0 | 0 |
| 差分 | cpu | 12 | 0 | 59 | 2106 | 0 | 0 | 1 | 0 | 0 | 0 |
差分のうち、userとsystemを足し合わせると、この処理に要したCPU使用時間は71です
単位は100分の1秒なので、10回実行したときのCPU使用時間の合計は710ミリ秒です
したがって、この例の場合、ひとつの処理あたりのCPU使用時間は71ミリ秒となります
ピーク時のCPU使用率を想定する
ここではWebアプリを想定してピーク時の目標CPU使用率をざっくり70%とします
ピーク時の処理量の計算
ピーク時の処理量の計算式は以下のとおりです
ピーク時のCPU使用時間 / ひとつの処理あたりのCPU使用時間 = ピーク時の処理量
ピーク時CPU使用率70%の場合、2CPUではピーク時CPU使用時間が1秒あたり、1000 x 2 x 0.7 = 1400ミリ秒
ひとつの処理あたりCPU使用時間が71ミリ秒なので、ピーク時の処理量は、1400 / 71 = 約19.7
よって、ピーク時をCPU使用率70%とした場合の処理量は、19.7処理/秒ということになりました
end of main article
フッタ
仲間を募集しています!
ARIではエンジニア・ITコンサルタント・PM職全方位で仲間を募集しております。
カジュアル面談、随時受付中です!
ご興味ある方はこちらをご覧ください。