プロセスを増やすと
速くなる?
2026-11-05 朝会LT
山内・J・啓輔
今日の話
「並列にすれば速くなる」はどこまで本当か
- 性能を見る2つの指標
- 計測
- 分かったこと
出典: 『[試して理解]Linuxのしくみ 増補改訂版』3章「性能について」
性能を見る2つの指標
2つの指標
| 指標 | 定義 | 良い向き |
|---|---|---|
| ターンアラウンドタイム | 処理を頼んでから終わるまでの時間 | 短いほど良い |
| スループット | 1秒あたりに終えられる処理の数 | 多いほど良い |
- スループット = 処理の数 ÷ 全部終わるまでの時間
- ターンアラウンドタイムは、レイテンシ・レスポンスタイムとほぼ同じもの
計測
実験
CPU を使い続けるだけのプロセスを N 個同時に動かし、時間を測る
bash
./multiload.sh 3 # 全部 CPU 0 で動かす
./multiload.sh -m 3 # 複数の CPU に振り分ける- 1個あたりの仕事の量は同じ(空ループ1億回)
- 環境: EC2 m8i.2xlarge(4コア8スレッド)
CPU 1つで増やすと
CPU 1つで増やすと
| プロセス数 | レイテンシ | スループット |
|---|---|---|
| 1 | 4.06秒 | 0.25個/秒 |
| 2 | 7.39秒 | 0.27個/秒 |
| 3 | 11.20秒 | 0.27個/秒 |
- 時間はプロセス数に比例して延びる
- スループットは変わらない
CPU が複数あると
CPU が複数あると
| プロセス数 | レイテンシ | スループット |
|---|---|---|
| 1 | 1.60秒 | 0.63個/秒 |
| 2 | 1.59秒 | 1.26個/秒 |
| 3 | 1.68秒 | 1.79個/秒 |
- 時間はほとんど延びない
- スループットは増やした分だけ上がる
では、どこまで上がる?
本の実験・論理 CPU 4つ(スループット 個/秒)
1個
0.42
2個
0.74
4個
1.23
6個
1.26
8個
1.29
CPU の数で頭打ち
| プロセス数 | レイテンシ | スループット |
|---|---|---|
| 1 | 2.4秒 | 0.42個/秒 |
| 4 | 3.1秒 | 1.23個/秒 |
| 8 | 6.0秒 | 1.29個/秒 |
- 4個まで: スループットが上がる
- 4個から先: レイテンシだけが延びる(8個で約2倍)
分かったこと
分かったこと
- 並列で速くなるのはCPU の数まで
- それを超えると、スループットは増えず、レイテンシだけが延びる
- 応答の速さが大事なシステム(Web など)は、CPU 使用率に余裕を残して運用する