まずはマンガで知ってみよう… |
こっちはウソなし…
|
“開かずの踏切”ってありますよね。一つの踏切にいくつもの路線があったり,電車の本数が増えるラッシュ時に一度下りた遮断機がなかなか上がらなかったり。一つ電車が通り過ぎるたびに遮断機が上がると期待するのですがなかなか上がらないもの……その割に,次の電車がなかなか来なくて,これだけ時間の間隔があったら渡れたのではないかと思ってしまいます。
踏切の前は自動車で渋滞します。ドライバーは,踏切になかなかたどりつくことができません。あの踏切さえ通過してしまえばその先はスイスイ進むことができるのに……と思うことでしょう。そんなストレスや焦りから,遮断機が下りているにもかかわらず歩行者や自動車が通行してしまって事故を起こすことが問題になっています。
国土交通省は,このような「ピーク時の遮断時間が1時間あたり40分を超える踏切」または「1日あたりの踏切交通遮断量が5万台時を越える踏切」を「ボトルネック踏切」と定義しています。これらのボトルネック踏切に対して,幅を広げる,立体交差で回避できるようにする---などの対策が進んでいます。
上のマンガにもあるように“ボトルネック”は「ビンの首」のこと。ビンの中にどれだけ水が入っていても,水を注ぐスピードは,細い首の部分で決まってしまうというたとえです。踏切の前の道の幅をどれだけ広げても,ボトルネック踏切そのものを改善しなければ,全体の交通量はちっとも増えません。全体の交通量を決めるのは,その踏切の交通量です。このように,全体の性能の大部分を決める部位のことをボトルネックと呼びます。
大部分を決める部位のこと!
ボトルネックという言葉はもともと,生産管理の用語でした。生産工程や作業プロセスにおいて,最も手間や時間を要したり,品質が悪かったりする部分のことをボトルネックと表現します。
ITの世界ではシステムの性能を決定する特定の個所の意味
現在では,さまざまな分野で使われるようになりました。とくにITでは“システムの性能を決定する特定の個所”の意味でよく用います。
たとえば,ネットワーク・システムにおけるボトルネックは,通信の帯域幅が狭い地点を指すことがほとんどです。複数のルーターで構成する一つのネットワーク経路があって,ルーター間のある回線だけ帯域幅が狭い場合は,そこを“ボトルネック”と表現します。全体の性能の大部分を決める部位ですね。“ボトルネック”の部分を改善しないかぎり,経路全体の帯域幅は改善しません。
もう一つ例を挙げましょう。データベース・サーバーのレスポンスの良さを決めるのは,どのようなデータにどうアクセスするかに加えて,CPU,メモリー容量,ハードディスク,ネットワークなどハードウエアのスペックにも依存します。ここでメモリー容量が“ボトルネック”の場合,CPUを強化したり,ネットワークを高速なものに置き換えても,レスポンスは改善しません。改善するには,ボトルネックのメモリー容量を増やす必要があります。
プログラムのコードでも同様です。プログラムの処理にかかる時間の80%は,コード全体の20%が占めるとよくいわれます。このコード20%の部分に性能上のボトルネックがありそうです。なお,重要な部分は全体の2割であることを「80:20の法則」や「パレートの法則」と呼ぶことがあります。
ボトルネックを見つける力が大事
このように,あるシステムを改善するとき,ボトルネックを改善することで全体の効率を劇的に上げることができます。逆に,ボトルネックではない部分をいくら改善しても,得られる向上は少なく,改善にかけた費用に対して効果が見込めません。そのため,様々な要素で構成されているシステム全体から,ボトルネックとなっている部分をきちんと見つける能力が非常に重要となります。
見つけたボトルネックをちょっと変更するだけで,システム全体の性能がドーンと向上したときは,とてもいい気分! まさに性能の“首根っこ”といえそうです。でも,あるボトルネックを改善しても,すぐに別の部分がボトルネックになって,思ったほど性能が向上しないこともあります。このような場合は,移動したボトルネックを見つけ,また改善です。
ボトルネックをなかなか見つけられずに,いつまでたってもシステム性能を向上させることができないでいると,組織の中のあなたがボトルネック……。クビにはなりたくないですね,恐ろしいですね。いろんなことに首を突っ込んで,ボトルネックを素早く発見,解決できるエンジニアでありたいものです。
本日のまとめ |
http://homepage1.nifty.com/maname/