FLAGS

筆者おかあつ 大きな区分 記事の区分 記事の一覧 検索 ツイート

2009年7月25日土曜日

(PCネタ) オープンソース (mixi05-u459989-200907250125)

ミクシ内で書かれた旧おかあつ日記を紹介します。
(PCネタ) オープンソース
2009年07月25日01:25
最近、動作が遅くてどうにも使えなかったHP2133というネットブックにubuntuという名前のLinux ディストリビューションをインストールしたのだが、これがびっくりするくらい機敏に動作するようになった。 あぁ HP2133ってこんなに速かったんだと思った。 Vistaのときは、正直使い物にならないぐらい遅かった。

Vistaは、ある程度メモリが大量に載っていないとあまり快適に動作しないことが知られている。 Vistaをインストールマシンは、ある特定の条件がきちんとそろえばサクサク快適に動くけど、その特定の条件がそろわないと快適に動作しない。 HP2133はなかなかいいパソコンだけど、スペックはお世辞にもよくなかった。 Vistaを動かすには若干非力なんだと思っていた。

しかし、ひとつ気がついたのだけど、ubuntuを入れたHP2133の動作の速さは、Vistaが入っているMacBookProと匹敵するレベルに来ているのだ。 びっくりするくらい機敏になった。 HP2133は非力とはいえ、CPUは1.6Ghzだし、メモリも2GBのってるし、ネットブックとしてはなかなかの高スペックである。 一方MacBookProは CoreDuo2 2.16Ghz でメモリ2GBだ。 この二つが体感で同じスピードという事実は軽くない。 Vistaはやはり重いのだなと改めて思うようになった。

ただし、巷でよく言われているような、Vistaは遅くて使い物にならないという闇雲な意見には賛同できない。 ここでVistaが遅いという風にいわれているのは、XPと比べての話だと思う。XPと比較した場合、僕は正直あまり違いを感じてない。 XPは確かにVistaよりも動作は軽いが、動作の安定性という点ではVistaも似たり寄ったりだと思うし、それ以前の問題として、XPはセキュリティー対策がかなりよくないので、僕はVistaの方がよいと感じる。

僕は、Vistaが遅いと言われることに若干複雑な背景があるような気がしている。 これはおそらくOSの仮想メモリと呼ばれる機能に関連している問題ではないかと思っている。



OSには仮想メモリという機能がついている。 これが、マシンに積んでいる2GBなり4GBなりのメモリを起動しているたくさんのアプリに対してどうやって振り分けるかを管理している。 マシンがつんでいるメモリは有限だ。 だけどアプリが使おうとしているメモリがいつ増えて、いつ減るのかは、なかなか予想がつかないものだ。 これは言ってみればセブンイレブンの発注みたいなものだ。

納豆がブームになったからと言って早速納豆を100パック注文したら、納豆が納品されたときには、とっくにブームが過ぎ去ってしまい、全部売れ残ってしまった、というような話はありそうな話だが、これと同じことがOSの仮想メモリにも起こる。 納豆ブームであれば、ブームが始まってからちょっと様子を見て、ブームが本物かどうか見極めてから発注すればいいだろう。 仮想メモリにも同じことが言える。納豆の発注同様に、しばらく様子見するようにプログラミングされているのだ。 この「様子見」のアルゴリズムには、色々なバリエーションがある。 どのようなアルゴリズムが選択されているのかによって、OS全体の動作のスムーズさが大きく変わってくる。

例えばこういうことだ。 マシンに2GBメモリをつんでいたとする。 そして、あるアプリがいきなり2GBのメモリを確保しようとした、とする。 このままではメモリが足りなくなってしまう。そこでOSは、他に起動しているアプリが使っているメモリを全部ハードディスクに転写して、メモリを空けようとする。 しかし、長い時間と費用をかけてやっと2GBのメモリを用意してあげても、アプリケーションはそのメモリを使わないで捨ててしまうことがある。まるで、せっかく餌をあげたのに匂いを嗅いでちょっと舐めただけで食べないで遊びに行ってしまう猫と同じようだ。

その後、メモリを要求したアプリの処理が終了し、他のアプリケーションが処理を続行する際には、ハードディスクに転写されてしまった内容を全部もう一度メモリに読み戻さなければ続行することはできない。 これはとても時間のかかる処理だ。 その処理を行っている間アプリケーションは待たなければならない。

この様な気まぐれなメモリ確保処理を行うアプリが沢山起動していると、他のアプリはとても迷惑する。 パソコンの外では利用者がイライラすることになる。

一般的に、OSはこういう「行儀の悪い」アプリケーションがいても、OS全体に大きな影響を及ぼさないよう、様子を見ながら少しずつメモリを用意するように設計されている。 しかし、この様子見のさじ加減=様子見アルゴリズムの設計は色々な難しい要素をはらんでおり、それぞれ一長一短あるさまざまなアルゴリズムが存在する。 当然、あまりきちんと設計されていないメモリマネージャーも中にはある。中には、アプリケーションがたくさんメモリを使おうとしているのに、様子ばかり見て一向にメモリを確保してくれない怠慢なマネージャーもいる。

で、僕の感じだと、Vistaは、これと同じようなメモリ確保アルゴリズムの問題を抱えているような気がする。 最近、Windows7が速くなったという話題で持ちきりだけど、おそらくこの仮想メモリのアルゴリズムが改善されたのではないかと思っている。

もともと、マシンにインストールされているメモリの合計が、起動しているアプリが利用するメモリの合計を上回っていれば、いかにメモリ分配のアルゴリズムがバカでもスムーズに動作するようになるだろう。 Vistaが快適に動作するのに必要なメモリが大きいのは、だからではないだろうか。




しかし、CoreDuo2の2.2GHzがのっている MacBookProにVistaを入れたものと、AtomプロセッサのHP2133にLinuxを入れたものを比べて、あまり体感速度が変わらない、というのは、個人的にかなりショッキングだった。

僕はLinuxがすごく好きだけど、あまり使ってこなかった。 なぜかというと、ドライバーの問題があるからだ。 新しく買ってきたプリンタやモデムを何も考えずにすぐに使う事が出来るというのは、Windowsの大きな利点と言える。

一方Linuxはドライバーの対応が遅い事が多い。 ドライバーが無ければ自分で作れ、というのがLinux利用者に求められる基本姿勢だ。

僕はハイエンドプログラマで、JavaやJavaScript ActionScriptなどを使って、一般ユーザーが利用するプログラムを開発するのが本職のプログラマだ。 ドライバ開発、デバイス制御などのプログラムは(やればできると思うけど)あまり経験が無い。 ノウハウはないし、そもそもノウハウを積み上げるつもりも無い。 だから、成熟度の低いOSを使い始めると、ドライバの不安定さに振り回されて、自分のやりたい作業が何も出来ない、ということになりがちだ。 だから、Linuxが好きでもあまり使ってこなかった。

しかし、最近、Ubuntuを触ってみて思ったのだが、このドライバーの問題に対する解決策が非常に進化している事を感じた。 かなりの完成度に到達し、徐々に成熟の領域に来ている。 インストールも簡単だし、オートマチックアップデートも非常に使い心地がよい。 道具として使えるレベルに来ている、という強い手ごたえを感じた。



それだけではない。 Gnome(Linux用のデスクトップ)も僕が見たとき(10年ぐらい前)はとても使いにくい変なアプリだったけど、いまやWindowsを超えている。 使い心地のよさは OSXばり、ひょっとするとそれ以上だ。

僕は今、Windowsのカスタマイズ用アプリを6つくらい入れて、あちこちをカスタマイズしている。 だけど、Gnomeは一個もカスタマイズ用アプリをインストールしていないのに、僕が望んだ動作を全て満たしている、というのもかなり大きな驚きだった。 (僕はWindowsには操作上の設計不具合が沢山あるのを感じているけど、Gnomeは、それらが考慮済みになっていることを感じた。

最近、バンコクでパソコンを見ていると、Ubuntuプレインストールマシンが目立つようになってきた。 以前は確かにコストダウンのための苦肉の策という感じだった。 だけど、ここ数ヶ月を見ていると、好き好んでUbuntuを入れている人が見えてくるようになった。 Windowsより Ubuntu のほうが優れている面が目立つようになってきた。



僕が使っているHP2133だけど、どうも Linux用のドライバがまだ開発されていないらしい。 OpenChromeと呼ばれるプロジェクトがあり、これが VIAと呼ばれるチップセットのドライバを開発しているらしい。 これの完成度がとても低く、ハードウェアアクセラレーションが有効にならない。

昨日、カッティングエッジ(開発中の最新)のプログラムソースコードをダウンロードしてコンパイルして自分でインストールする、という事にチャレンジしてみた。 動いたけど、さらにこのドライバが依存しているもうひとつのドライバがあるらしく、こちらのドライバがまた開発が遅れているらしいということがわかった。 問題の本質を修正するためには、このふたつのドライバの関連を調べたりする必要があった。 これは、足を踏み入れるとかなり大変な事になりそうな予感がした。

しかし、トラブルの多いマシンをいじるというのは、めんどくさいものだろう、と思うかもしれない。 しかし、実際にやってみて思ったのだが、トラブルシュートというものは極めて楽しいものだ。 そう思った。

こう思えるようになった事には時代の変化もあるかもしれない。 僕がLinuxをいじっていた頃=10年前は、インターネットが今ほど普及していなかったので、コンピューターもオフラインで利用するのがメインだったのだ。 だから、ドライバの不具合などを見つけても最新のソースをダウンロードしてコンパイル、するなんていうことは出来なかった。 大学などで情報科学を勉強している人は色々なプログラム用の資料にアクセス出来ただろうが、僕のような貧乏な野良プログラマには難しかった。 オフラインの情報収集=あちこちの雑誌を買い集めて色々なドライバーや資料を集めることがとても重要だった。 こういうオフラインの情報収集というのはとてもお金がかかるもので、大変だったものだ。

インターネットが発達した昨今、こういう動かないマシンをいじって動くようにする作業は、大変な刺激のある面白い作業で、病めようと思ってもやめられない、病み付きになる強力な魅力がある。 だけど、僕がやらないといけない作業はこれではないので、そろそろ切り上げようかと思う。



最近 Googleが chrome というOSを発表して騒ぎになっている。 ポストWindows か、とかWindows最大のライバルか、と言うようなことが言われている。 だけど、僕はあまりそう思わない。 結構誇張して宣伝しているのが目に付くし、ほとんど興味無い。

しかし、ubuntuなど、かなり高度に成熟しつつある色々なリナックスディストリビューションの潜在力のほうがずっとWindowsにとって脅威だと思う。 今まではあくまでもWindowsの代替案でしかなかったlinuxだけど、徐々にWindowsを追い抜きつつある。 ※

Linuxは、確かに今は、一部の熱狂的なサポーター以外は興味を持たれていないが、僕が最近触った感じだと、これは間違いなく数年以内に爆発する。

かつてPC-9801が主流だった日本でDOS/V機が発表されたときの大騒ぎのようなことになるのではないだろうか。 つまり、ずっと目に見えなかったものが、突如世の中に現れたときには既に手遅れ、もう打つ手なし、まもなく出場者全員即死、という状況が再び来るのではないだろうか。

(終わり)




OSと呼ばれている物は、大雑把にカーネルとドライバと付属ソフトと主要ソフトに分かれている。 カーネルというのはOSの基幹部分のことだ。 ドライバというのは各種デバイスを動かすためのプログラムで、これがないとデバイスは使えない。 そして付属ソフトというのは、要するにエクスプローラーなどの事だ。 そして主要ソフトというのは、そのOSで利用できる目玉ソフトーつまりオフィスとかそういうソフトのことだ。

Linuxのカーネルはかなり前からとても性能が高かった。 付属ソフトも近年非常に精度が上がってきており、GnomeもWindows Explorerをしのぎつつある。 主要ソフトもしかりである。 オープン系のソフトが充実してきている。 OpenOfficeや InkScapeなど、オープン系だけで一通りの作業を終えることも夢ではなくなってきている。 Microsoft Office などの優位性が徐々に崩れてきているとも言える。 もちろんFirefox/Thunderbirdなどの存在も大きいだろう。 これらは大抵Microsoftが開発したソフトよりも精度が高い。

Linuxが決定的にダメなのはドライバのサポート範囲だ。 これだけは、設計上の問題ではなく、社会インフラ上の問題なので、すばやく対応することがとても難しい。

Windowsはカーネルもボロボロだし付属アプリも主要アプリもボロボロだけど、ドライバの対応だけは無敵だ。 これはWindowsの設計がよいからでは決して無い。 デファクトスタンダードをつかんだものだけが持てる大きなメリットである。

近年、オープン系のソフトはほとんど「クロスプラットフォーム」と呼ばれる手法を用いて開発されているため、ほとんどの場合 Windowsでも OSXでも どんなLinux ディストリビューションでも動作する。 だから、OSの違いの本質は、新しいドライバへの対応の違いだけ、と言っても過言ではないのではないか。

しかし、近頃のLinuxディストリビューションは、このデバイスドライバの対応のスピードが徐々に速くなってきている。 他OSのドライバーアップデートのスピードがWindowsに追いついたとき、Windowsは死を迎える。

コメント一覧
アツシ   2009年07月25日 04:20
マイミクシィにさせてもらって、初めてコメントします。

最近PCを買い替えようと思っていて、PCスペックを見比べたりする中で「早い・遅い」って結局どういうイメージなんだ!?と疑問に思い、身近な人にいろいろ質問していたのですが、「仮想メモリ」についての文章は、かなりわかりやすくて参考になりました!あと各OSについての話も、知らないことが多くて面白かったです。ありがとうございます。

いつも日記楽しく読ませてもらっています。
おかあつ   2009年07月25日 04:25
何か恐縮です^^; ありがとうございます^^。
タビビト   2009年07月26日 18:43
こんにちは。
最近、書店では、書籍に雑誌にとubuntuの盛り上がりを感じさせられます。以前からFedraなどのものは売っていたのですが、今はPCの一般ユーザーをターゲットにしていると思われるものが多いのが目を引きます。

ドライバの問題は大きいですね。ハードが動かないというのはちょっとつらい。「ドライバはハードウェア・メーカーが作るもの」というビジネスモデルを考えたマイクロソフトは大したものでした。今後Linux用のドライバが充実してくれば、Windowsの優位性も危うくなりますね。
おかあつ   2009年07月26日 18:51
書き込みありがとうございます^^

>ドライバの問題は大きいですね。

そうですね。

>Windowsの優位性も危うくなりますね。

WindowsはなんだかんだいってもやっぱりOS自体の基本性能があまり高くないと感じます。 また付属コンポーネントがどう考えてもちゃっちいです。 これでubuntu が主流になってくれれば、Linuxドライバの開発がもっと盛んになって、安心してLinuxが使えるようになるんですけどね... そうなるといいなと思います。

あび   2009年07月27日 12:45
かつてNECがPC-9800シリーズの独自アーキテクチャを断念してPC/AT互換機に方針転換した時のような大転換ということは、MS社が独自OSの開発を中止してLinuxカーネルを採用したOSへと転換するということでしょうか。

なかなか刺激的な予測ですね。MacOSも独自路線を中止してMachカーネルへ移行したようですので、全く現実味が無い話というわけではないでしょうね。

過去のソフトウェア資産の継承は、現在のマシンパワーがあれば、仮想化やエミュレーションで充分対応できるでしょうしね。

もしも、MS帝国の衰退にUbuntuが加担できるのだとすれば、UbuntuのバグトラッカーのID1番に書いてあるバグが本当に修正されるのですね。すばらしい。そんな世界を見てみたいです。
おかあつ   2009年07月27日 15:02
>もしも、MS帝国の衰退にUbuntuが加担できるのだとすれば、UbuntuのバグトラッカーのID1番に書いてあるバグが本当に修正されるのですね。

このこと知らなかったので調べてみました。

https://launchpad.net/ubuntu/+bug/1

ちょっと笑いました。 朝から面白い話を読みました。 いい一日が始められそうです。

>過去のソフトウェア資産の継承は、現在のマシンパワーがあれば、仮想化やエミュレーションで充分対応できるでしょうしね。

Cygwin の逆みたいなソフトができるのかなぁ ... いやできないだろうな。 ビルゲイツがいなくなってからマイクロソフト動きが鈍くなったような気がする。 Vistaも宣伝が失敗してる。 悪い評判が一人歩きして現実以上に悪く言われるようになっている。


NECがしたたかだなのは、もうPC-9801が劣勢なのを知っているのに、海外では既にAT互換機を作って売って、国内ではPC-9801をだけ売って、と言うような二枚舌をしばらくやってた事かなと思う。
あび   2009年07月27日 16:25
このバグ番号1番の内容を知った時も、「Ubuntu」という言葉の意味をヘルプで読んだ時も、すごく感動した。こんな事を大真面目に考えて実行している人がいるんだと。それ以来、Ubuntuの大ファンです。一緒にUbuntuを地道に応援して行きましょう。
おかあつ   2009年07月27日 16:32
では、一緒にパッケージ作りましょうか。(^^)
おかあつ   2009年07月27日 16:35
 
出展 2009年07月25日01:25 『(PCネタ) オープンソース』