2割の処理が8割を占める

テーマ:

愛知万博は入場者制限を行ったそうである。せっかく行ったのに、どこにも入れずに帰ってきた、というような人もいるらしいが、お祭りだから、そういうのもアリなのかな、とか思ったりする。

ソフトウェアの世界でよく言われている法則に、2対8の法則というものがある。呼び名はいろいろありそうだが、要するに、全体の2割の処理が、実際に呼び出される処理のうち8割を占める、というようなことを言っている法則だ。

ネットワークの負荷などを想定するときに、この法則を使えば、必要な性能が簡単に計算できる。たとえば、1日に1万人がアクセスするシステムを考えてみよう。単純に考えると、1万人÷24÷60 だから、1分あたり約7人が処理できればいい、…というのは発想が安直すぎる。これでは簡単にシステムは破綻するのである。2対8の法則を使うと、次のように計算できる。まず、1日の2割は、24×60×0.2 = 288分。この時間に、1万人のうちの8割、つまり8000人が使うのである。ということは、8000÷288 、これは1分あたり約28人。この程度の性能が必要だということがわかる。

もちろん、これはあくまで目安であって、こうやって想定すれば問題がないという話ではない。ただ、単純に割り算するよりは、現実に近い状況が想定できるというだけのことだ。予想はあくまで予想に過ぎないのだ。

では、愛知万博の入場者数はどうか。愛知万博自体、ソフトウェアではないわけで、2対8の法則を当てはめるのは無茶なのだが、話の種のつもりで計算してみよう。

目標の1500万人というのをさばくためには、どの程度の人数が入れないといけないのか考えてみる。1500万人を185日間でさばくのだから、185日のうち2割は37日、この日数に1500万人の8割、1200万人が来るとすると、1日約32万人、ということになる。この程度を想定すると、混雑したときでも大丈夫、ということになりそうだ。

もっとも、実際に会場展示を行う場合には、いろいろ別の状況も考えることになる。たとえば、輸送能力を超えた人数は絶対に来るわけがない。また、Webサイトの場合には、ピーク時にも大丈夫という設計が必要になるのだが、展示会場が必ずしもそうすべきだとは限らない。実際、10万人を超えない日が半分ほどあったわけで、1日に30万人入れるようにするのはコスト的に無駄だ、という考え方もあるのだ。実際は、会場内に17万人というのが full になる目安らしい。多分、この種のイベントに適切なモデルを使って計算したのだろう。

まあもう一つだけ一般論としていえそうなのが、終了間際は混雑する、という法則である。最終日は30万人を超えるのではないか、と想像してみたのだが、さて、実際はどうなるだろうか。