Linuxが3分以上落ちないなんて本当は夢だろ

初音ミク界隈に見る既視感のある光景に書いた、「鳥人間コンテスト人力飛行機が、東京-福岡間に就航」という比喩は、書きながらアドリブで思いついのだけど、自分としてはよくできていると思った。

私が「初音ミク」に言及するのは、オープンソースでそれが全部説明できて、先を見通せると言いたいのではない。言うまでもなく、ソフトと音楽は全く違うものだ。オープンソースというムーブメントの中で起こったたくさんのことの中で、「初音ミク」でも同じように起こるのは何で、違うのはどこで、どのような違いが発生するかについて分析し予測することは、当然、その分野をよく知っている人にしかできないだろう。

ただ、その為には、オープンソースの中で、どれだけとんでもないことが起きたのか、それを判断の材料として提供しなくてはならない。その「とんでもなさ加減」が、専門外の人はうまく理解されてない気がして、もどかしい思いをしている。「鳥人間コンテスト」は、そういう意味で、自分としてはいい表現だと思った。

伝わりにくい理由の一つとして、今はパソコンを使いこなしていている人が多いということがある。ユーザとしてのリテラシーやソフトを適材適所で活用する能力という点で、ソフトウエア技術者はもはや必ずしも最先端とは言えないだろう。今では、プログラマじゃなくたってコンピュータのことはよくわかっているし、設定ファイルやEXCELのマクロをゴリゴリ書いたりする中で、プログラミングとはどういうものか、それなりに理解している。

だから、「みんなでソフトを書く」ということがどういうことなのか、わかった気になってしまう人が多い。

はっきり言って、それは錯覚である。特にパソコンやネットに詳しい人ほど、その錯覚をしてしまいがちだと思う。というか、WEB回りの仕事をしている人だと、職業的なプログラマーとしてちゃんとした仕事をしている人でも、同じ錯覚をしている人が多いかもしれない。ソフトと言っても、普通のユーザが目にする部分、ユーザインターフェースやエディタとかメーラーのような、クライアント側で使うソフトと、インフラの部分は全く別のものだ。

ここがわからないと、LinuxというOSがサーバー用のOSとして実用化していることが、どれほどとんでもないことか理解できない。

それで、ここを正攻法で解説した文献はいくらでもあるが、乱暴だけど素人に分かりやすい説明の方法をもうひとつ思いついた。

私は、GmailとLinvedoor Readerを常用しているが、どちらも、高品質のサービスである。1年以上使用していて、ダウンして使えなかった経験はほとんどない。だから、少なくとも品質面では、安心して誰にでも推奨できる。

ただ、全く無いわけではなくて、サーバ側のダウンで一時的に使えなかったことが何度かある。正確な記憶はないが、仮に1年に1回としておこう。一日平均10時間使うとして、1時間に3回アクセスするとしたら、一日30回、1年で10950回である。

一万アクセスのうち一回しかエラーとならないようなサービスなら、WEBの世界では、充分実用レベルと見なしていいだろう。

もし、このレベルの品質のOSがあったら、どういうことになるか。

OSとWEB上のサービスを比較するというのは、メチャクチャな話だが、とりあえず、普通のユーザはOSをどれくらい使っているだろうか。それを「アクセス回数」で単純比較しようというのが、この乱暴な説明の要点だ。

実は、OSにアクセスするのは人間ではない。DISKドライブやNICというハードウェアがOSにアクセスする。このアクセス回数は凄い数になるのは確かなのだが、不定期なので、仮に「タイマ割り込み」という機能で考える。Linuxでは1秒間に100回*1、ハードウェアタイマーがOSを呼び出す。

もし、タイマー割り込み1万回に対して一回だけエラーとなるOSがあったとしよう。そうすると、そのOSは、100秒に1回、つまり、1分40秒に1回青画面を出して、リセットを必要とすることになる。

起動したら、1分40秒のうちにワープロを立ち上げて文章を書いてとにかく最低でも「保存」までは行わないといけないとしたら、そういうマシンでの作業はさぞかし楽しいことになるだろう。

「ネットで情報交換して大勢でワイワイやってるうちにソフトができあがる」と聞いて、素人の人が素朴にイメージするやり方で開発できるOSとは、そういうものだ。そのやり方でも、クライアント側のソフトなら開発できるかもしれない。でも、3分以上長持ちするOSはできない。そう思うのがまともなプログラマだ。

OS、あるいは高い信頼性を要求される大規模なリアルタイムシステムを開発するということには、「アクセス回数」以外にも、もっと難しい所に困難がたくさんある。

LinuxとかMysqlとかPostgresとかApacheとか、そんなものは存在しないんです。夢です。あり得ないんです。みなさんがWEBにアクセスしたら、ざっくり言って少なくとも二回に一回はそういうソフトから送られたページを見ているのですが、そんなものは存在しません。Firefoxくらいまでは存在してもいいけど、サーバ側で動くオープンソースソフトは存在してはいけません。私が許しません。どうしても存在したければ、3分に1回落ちなさい。それが最低の条件です」

そう叫んで現実を否定するのが、本物のプログラマである。

なんてことを書いていながら、このエントリを書き終わったらすぐにひとつLinuxマシンの設定をしてそこで仕事をしなくてはならないのだけど、まあ、こんな経験をしてたら、少しくらいおかしなことをブログに書き殴っても大目に見てもらいたいものだ。

(補足)

ちょっと誤解されそうな表現があるかもしれませんが、WEB系の技術を軽んじているわけではないので、詳しくは→トランザクションがないのに金になるシステム - アンカテ(Uncategorizable Blog)

*1:2.6からは秒間1000になり、現在は250だそうだ→http://blog.miraclelinux.com/asianpen/2006/12/linuxconfig_hz_516f.html