問題
次のシステムにおいて,ピーク時間帯のCPU使用率は何%か。ここで,トランザクションはレコードアクセス処理と計算処理から成り,レコードアクセスはCPU処理だけで入出力は発生せず,OSのオーバヘッドは考慮しないものとする。また,1日のうち発生するトランザクション数が最大になる1時間をピーク時間帯と定義する。
〔システムの概要〕
(1) CPU数:1個
(2) 1日に発生する平均トランザクション数:54,000件
(3) 1日のピーク時間帯におけるトランザクション数の割合:20%
(4) 1トランザクション当たりの平均レコードアクセス数:100レコード
(5) 1レコードアクセスに必要な平均CPU時間:1ミリ秒
(6) 1トランザクション当たりの計算処理に必要な平均CPU時間:100ミリ秒ア:20 イ:30 ウ:50 エ:60
結論
正解は 「エ:60(%)」 です。
一見数字がたくさんあってややこしいですが、やることは「1件の処理にかかる時間」と「ピーク時に来る件数」を掛け合わせて、1時間(3600秒)の枠にどれくらい収まるかを計算するだけです。
解説:3つのステップでサーバーの限界を見極める
例えばWebサービスを運用していて、「夜21時のアクセス集中でサーバー落ちないかな?」と心配になった時。
この問題は、その見積もりを計算で出す方法です。
①トランザクションの「重さ」を測る
まず、ユーザーが1回リクエストを送ってきたとき(1トランザクション)、CPUがどれくらいの時間働く必要があるのかを出します。
問題文に「トランザクションはレコードアクセス処理と計算処理から成る」とあるため、この2つを足し合わせます。(※実際のWeb開発ではDBからのデータ取得待ちである「I/O待ち」が発生しますが、この問題では純粋なCPUの処理時間のみを考えます)
- レコードアクセス: 100レコード × 1ミリ秒 = 100ミリ秒
- 計算処理: 100ミリ秒
- 合計: 100 + 100 = 200ミリ秒(0.2秒)
つまり、CPUは1件のリクエストをさばくのに「0.2秒」かかります。
②ピーク時の「アクセス数」を測る
次に、一番忙しい1時間(ピーク時間帯)に、どれくらいのリクエストが降ってくるのかを計算します。
- 1日の総件数: 54,000件
- ピーク時の割合: 20%
- ピーク時の件数: 54,000 × 0.20 = 10,800件
③1時間の枠に対して、どれくらいパツパツか?(使用率)
最後に、一番忙しい1時間にCPUが「合計何秒働く必要があるのか」を出します。
- 10,800件 × 0.2秒 = 2,160秒
1時間は「3,600秒(60分 × 60秒)」です。
つまり、CPUは1時間(3600秒)のうち、2160秒間フル稼働することになります。これを割合(%)に直します。
- 2160 ÷ 3600 = 0.6 = 60%
したがって、ピーク時のCPU使用率は 60%(エ)となります。
まとめ:この計算ができると何が嬉しい?
実務において「ピーク時のCPU使用率が60%」と分かれば、インフラ担当者は「まだ40%の余裕があるから、突発的なバズりがあっても耐えられそうだな」とか、「もし使用率が80%を超えそうなら、サーバーの台数を増やそう(スケールアウト)」といった設計判断ができるようになります。
