Table of Contents
性能の定義
コンピューターやシステムを選択するにあたって, どれが最もコストパフォーマンスが良いかで判断するケースが大半だと思いますが, コストパフォーマンスを計算する基礎としてそもそも「性能」とはなにか?を理解することが重要です.
コンピューターの文脈において「性能」が計算性能という形で一意に定まるならば論点にはなりませんが実際はこの定義が難しいです. 旅客機の性能の議論を例に性能の定義が多義的であることを確認してみましょう. 安全性とかいろいろな見方がありますが一旦は時間あたりの作業量という観点で速度を中心に考えてみます.
航空機 | 搭乗人員数 | 巡航速度 | 輸送能力 |
---|---|---|---|
A | 300 | 1,000 km/h | 300,000 |
B | 400 | 1,000 km/h | 400,000 |
C | 100 | 2,000 km/h | 200,000 |
D | 150 | 800 km/h | 120,000 |
上記のようなスペックがあたえられたとき, 1人の旅客の観点から見るならば航空機Cが最も巡航速度が速いので 最も性能が良いというように判断できます. 一方, 1台の航空機で2000km離れた地点へ1200人の旅客を運びたい場合は, 時間あたり輸送人員距離の指標としての
\[\text{輸送能力} = \text{搭乗人員数}\times\text{巡航速度}\]の観点から航空機Bが最も性能が良いという判断へ変わります.
Response timeとthroughput
上の航空機の例をコンピューターの文脈で対応させると
- 個人のコンピューターユーザーは応答時間(= response time)に関心がある
- サーバー管理者はスループット(= throughput, bandwidth)を増やすことに関心がある
という言い表すことができます.
Def: Response time
コンピューターがタスクを完了させるのに必要な合計時間のこと. ディスクアクセス, メモリアクセス, 入出力動作, OSのオーバーヘッド, CPUの実行時間などを含む.
日本語では「応答時間」や「実行時間」と呼ばれたりする.
応答時間の改善はほとんどの場合, 後述のスループットの改善に繋がります. 例えば, ゲームサーバーのプロセッサをより高速なものに変えた場合,
- タスクの実行時間が改善
- 応答時間が改善
- スループットが改善
という経路で影響が派生していきます.
Def: スループット
単位時間あたりの処理能力のことをスループット(throughput)と呼ぶ.
100個の荷物があったとして, 一分間に2個のペースでこの荷物を移動できる人がいるとしたとき,
- 一分間に4個のペースでこの荷物を移動できる人にreplaceする
- 一分間に2個のペースでこの荷物を移動できる人をもう一人雇う
いずれかの方法で1分あたりの作業量が2個→4個へ改善される. このとき, スループット(=単位時間あたり作業量)は2倍になったという
CPUの性能と測定
Appendix: 2のべき乗
以下の数値感覚を持っておくことは実行時間の概算をするにあたって有用です.
2のべき乗 | オーダー | データ単位 |
---|---|---|
10 | 1,000 | 1KB |
20 | 100万 | 1MB |
30 | 10億 | 1GB |
40 | 1兆 | 1TB |
50 | 1,000兆 | 1PB |
なお, $\log_{10}(2) = 0.301…$なのでべき乗の数に$0.3$すればおおよその感覚と一致します.
References
(注意:GitHub Accountが必要となります)