オタワLinuxシンポジウム2日目:ユーザ空間は最悪、他

オタワ発 ─ 第8回オタワLinuxシンポジウム(OLS)の2日目は、初日と比べるとテクニカルなトピックが増えた。講演で特に印象に残ったのは、「ファイルシステム断片化の影響」、「デジタル・デバイド解消にLinuxを役立てる」、「ラップトップで使うLinux」だが、なんと言ってもDave Jonesの講演「ユーザ空間が最悪な理由」がこの日のハイライトだった。

印象に残った講演として最初に挙げた「ファイルシステム断片化の影響」を講演したArd Biesheuvel氏は、Philips ResearchのStorage Systems & Applicationsグループに所属し、HDDレコーダーを研究テーマとする科学者である。Biesheuvel氏の説明によると、HDDレコーダーはテレビ放送の信号を機器に記録することで動作し、使用可能なものを表すためにメタデータを用いる。何を記録し、何を記録しないかをある程度まで自律的に決定できる。その基盤となるのが、視聴者が観たいものをプロファイルにまとめる機能や、友人のHDDレコーダーが記録しているものを記録する機能である。HDDレコーダーの録画時間は長く、多くの場合に一度に複数のテレビ番組を録画できる。

HDDレコーダーをデモ用のプラットフォームとして使いながら、Biesheuval氏は講演をファイルシステムの断片化へと進めた。断片化は一般にパーセンテージで表現されるのが定番だが、パーセンテージではピンと来ないとBiesheuval氏は言う。ファイルシステムの断片化の影響を明瞭に示すため、新しい測定方法を作る必要がある。便利な測定方法が、相対速度である。

Biesheuvel氏は、ハードディスクのプラッターの図をスライドで拡大して見せた。トラック(プラッターを周回するデータのリング)上のデータ記録形態を示し、隣接するトラック間のオフセットは、現在のトラックを離れて次のトラックにディスク・ヘッドが移動して正しい地点から動作を続行するのにちょうどよい大きさになっていることを説明した。

ギャップは(彼の説明によると)ファイルのセグメント間に存在し、そのファイルには属さない空間である。断片は、同じファイルに属するが、連続していない部分である。一般にハードディスクでは、ギャップが小さい場合はトラックにあるデータをギャップごと一気に読み取るが、ギャップが比較的大きい場合はドライブ・ヘッドが次の断片のトラックをシーク(移動)してから読み取りを行う。読み取り対象ファイルに属するデータ・トラックが、1回のシークとドライブの1回転で読み取れるなら理想的である。

背景に触れながら、彼はこのテストに使ったツールを順に説明した。最初のツールpvrsimは、HDDレコーダーの動作をシミュレートする。500MB~5GBのサイズのファイルを一度に2つずつディスクに書き込み、HDDレコーダーのライフサイクルをエンドレスにエミュレートする。新しいファイルを保存する領域が必要になると、優先度を決定するシステムによって録画が消去される。

2番目のツールは、hddfragchk。現時点ではダウンロードできないが、いずれ公開される予定ということである。このhddfragchkユーティリティは、ハードディスク内のトラックをビジュアル化し、データをファイル別に色違いで表示する。Biesheuval氏は、実行中のhddfragchkの表示を示すデモ用のアニメーションGIFを使って、pvrsimの実行中にファイルシステムが断片化していく様子を示した。

最初のファイルシステムはXFSで、ディスクのあちこちにファイルが移動されるにつれて小さな断片化がはっきりした色の線となって現れるのが、早回しのアニメーションで見ることができた。もう1つのファイルシステムはNTFSで、明確なプランニングがなくてもファイルシステムが領域を見つけてブロックを割り当てられる間は、信号を受信していないテレビの画面を観るかのように表示は動きに乏しかった。

次にBiesheuvel氏が見せたのは、ファイルシステムの種類と書き込み速度の変化を示すグラフだった。すべてのファイルシステムが、時間の経過とともに速度の低下を示していた。低下の程度はファイルシステムの種類によって差があったが、ここではその詳細に関する説明は冗長なので省く。

相対速度はファイルシステムによって大きく異なる、とBiesheuvel氏は結論した。1本のデータ・ストリームをそれ専用のエクステントに常に配置すると同時に、複数のデータ・ストリームをそれぞれ専用のエクステントに個別に配置するという設計原則に、ファイルシステムは忠実でなければならない。

エクステントが何を指すのか、講演でははっきり説明がなかったが、前後から判断すると、ファイルシステムからファイルにあらかじめ割り当てられるセクションを指すようだ。彼は、最適なハードディスク断片化パフォーマンスを数式で表し、作成される断片と同じ数の断片が削除されるなら均衡が保たれる、と述べた。

また、断片化の防止にはスイートスポットがあって、それは5%の空き領域を最小限保証することだ、とも彼は指摘した。5%の空き領域があると、断片化が減少する。相対速度は、ファイルシステムの断片化を測定する便利な単位だと、彼は結論した。最悪のファイルシステムでは、最適速度の60%まで速度は低下する。

ユーザ空間が最悪な理由

この日の午後、FedoraカーネルのメンテナであるDave Jones氏は、立ち見の出る満員の聴衆を前にして「ユーザ空間が最悪な理由(またはアプリケーションでやってはいけない101の本当にバカなこと)」と題した講演を行った。そこで主に語られたのは、Fedora Core 5(FC5)のブート時間を短縮するための苦闘と、その過程で彼が発見した衝撃的な事実であった。

最初に彼がした作業は、すべてのファイル・アクセスをログに記録するパッチをカーネルに当てることだった。無駄なアクセスを調べるためである。それでわかったのは、ブート時にFC5では79,000のファイルにアクセスがあり、そのうち26,000が開かれることである。シャットダウン時には、23,000のファイルにアクセスがあり、開かれたファイルの数は7,000に上った。

Hardware Abstraction Layer(HAL)では、デスクトップ・アプリケーションがハードウェアを認識して使用できるようにするため、システムへのハードウェアの追加と削除を追跡する。Jones氏によると、HALの基本方針は「ファイルだったら開く」である。HALでは、多くのXMLファイルを開き、再度読み取るという処理を最大で54回行う。プリンタ・デーモンのCUPSは、スタートアップ時にstat()呼び出しを2,500回実行し、500のファイルを開く。これをわかっている限りのプリンタのそれぞれに対して行うのである。

X.orgでも極端なことがやられている、とJones氏は言う。X.orgでは、使用される可能性があるすべてのアドレスと言っていいほど多くのアドレスをPCIデバイスに対してスキャンした後で、追加のPCIデバイスについても、見たところランダムなアドレスをスキャンし、それからようやく翻意してあきらめる。Xフォントに注目して観察したところ、彼のテスト・システムでは、Xが非常に多くのTrueTypeフォントを開いていることがわかった。

最大でどれぐらいのフォントが開かれるのか調べるため、彼は6,000種類のTrueTypeフォントをインストールしてみた。その結果、Gnomeセッションでは、2,500弱のフォントにアクセスがあり、2,434種類が開かれた。Metacityは238種類のフォントを開き、タスクバー・マネージャは349種類を開いた。サウンド・ミキサーでさえ、開いたのは860種類に上る。調査の結果、Xフォント・サーバでは、フォントを1種類ロードするたびにキャッシュが再構築されていた。このフォントの問題を彼は「奇怪」と表現した。

彼が発見した問題のもう1つは、タイマーである。カーネルも最悪だと彼は言う。たとえば、USBは256ミリ秒ごとにタイマーを発行する。キーボートとマウスのポートも、ホットプラグ対応PS/2キーボードとマウスをサポートする目的で定期的にポーリングを行う。それから、コンソールで点滅する小さなカーソルはどうだろうか? そう、このタイマーはXの動作中も停止しないので、小さなコンソールのカーソルを点滅させ続けるために、CPUサイクルがちょっとばかり浪費されるのだ。

Jones氏によれば、このテストを実行するのに、カーネルにパッチを当てる必要も、ここで説明したようなツールを使う必要もない。strace、ltrace、Valgrindを使えば、無駄を取り除く作業には十分である。

そういった小さな問題点を修正したら、どれぐらいの時間を短縮できるのかと、会場から質問があった。不要なファイル・アクセスを省くことで、無駄な時間を半減できると、Jones氏は答えた。もっとも、節減された時間は、システム・リソースを消費する新しい機能とアプリケーションによって食いつぶされてしまう。であるから、このような徹底的なテストを定期的に行うことが必要だと、彼は語った。

また、この問題を開発と同時進行で回避するにはどうすればいいか、との質問も出た。これに対しては、プログラミングはしないがLinuxの改良に協力したいと思っているユーザにテストを依頼してはどうか、と提案された。質疑応答の最後では、KDEでのテスト結果もGNOME並に悪かったのか、と質問した参加者がいた。試していない、というのがJones氏の答えだ。

質疑応答が進むにつれて、セッションはもはやプレゼンテーションではなくBoF(Birds of a Feather)と化していた。Jones氏と聴衆のやり取りで、すし詰めになった部屋には笑い声が波のように広がっていった。

デジタル・デバイド解消にLinuxを役立てる

夕方には、David Hellier氏のBoFセッションに参加した。Hellier氏は、Australian Commonwealth Scientific and Research Organization(CSIRO)のリサーチ・エンジニアで、デジタル・デバイドの橋渡しを研究テーマとする。このテーマに関する小論で、IBM T60を1日早く手に入れたことがある。

Hellier氏の望みは、世界各地の貧困層に属する数百万の人々に教育の機会を与える活動にLinuxとオープンソースを役立てることだ。アフリカだけでも、4,400万の小学生が基礎教育を受けられずにいる。

参加者からの指摘によると、世界には100万人以上の言語人口を抱える言語が347あり、それよりマイナーな言語に翻訳されたLinuxバージョンがあるとはいえ、それらのすべてに対してソフトウェアが翻訳されているわけではない。別の参加者からは、オペレーティングシステムとアプリケーションの翻訳は、困難のほんの一部でしかないという意見もあった。重要な部分は、それと関連する全般的な知識を翻訳することである。翻訳の対象になるツールがオフラインで使用できることも必要だ。遠隔地の貧弱なコミュニティが、インターネットにアクセスできる可能性は低い。電気を使えれば運がいい方である。

Linux開発者は、多くが大企業に雇われている、とHellier氏は言う。であるから、率先してこのデジタル・デバイドを埋めるために自分の会社に働きかける立場にある。

そういった見慣れないツールを持たせて人を遠方の後進国に送り込むのは、伝道とどう違うのか、とある人が質問を投げかけた。Hellier氏は、大きな違いは、世界中の政府がのどから手が出るほど支援を求めていることだ、と答えた。

ただし、大手ソフトウェア会社は自社製品を伝道するために後進国に進出しているので、そういった活動を中和することが重要である。最終的な目標は、自立を助けることだ、とHellier氏は強調した。

議論は進展して、このトピックを年に1回や2回のカンファンレンスのBoFセッションで話し合うだけでなく、もっと定期的に話し合えないか、ということに移った。セッションを始める前、Hellier氏はデジタル・デバイドの橋渡しを論じるためのwikiを開設していた(olsdigitaldivide.wikispaces.com)。これに加え、今後の議論のためにIRCチャネルを作ることが参加者から提案された。これは、カーネルの開発者が長年やってきて実績のある方法である。そこで、IRC チャネルの#digitaldivideがirc.oftc.netに作成された。

また、Hellier氏は注目すべきツールとして、Learning Activity Management SystemMoodle、そしてEdubuntuのシステム管理者不要のユーザビリティを挙げた。

ラップトップで使うLinux

私が参加した最後のセッションは、IntelのPatrick Mochel氏主宰による、ラップトップでのLinux利用をテーマとするBoFだった。これは、特に議題やスライドを用意しない、オープンなBoFであった。このテーマに関係がある、HAL、udev、カーネル、ACPI、Bluetoothなどの開発者が来場していることが、Mochel氏の口から明かされた。

ディスカッションは、最新のラップトップのsuspend/resumeサポートと、このサポートの弱点に関する講演で始まった。suspend/resumeサポートは便利な機能だが、ラップトップの最重要事項であるバッテリの寿命に関しては何も恩恵はもたらさない、とMochel氏は指摘した。これを口火として、ラップトップで電力を浪費するさまざまなものに関する議論が長々と続いた。たとえば、サウンド・デバイスは活発な入力がない間は無効にされるべきであり、未使用のネットワーク・デバイスは無効にして電力消費を抑えるべきである。

ディスカッションはたちまち進展し、ネットワークの状態に関する議論へと移った。ワイヤード・ネットワーキングであれば、ケーブルが接続されるまでネットワーク・デバイスをダウンさせておいて、ケーブル接続の割り込みを受け取った時点で稼働させることは可能だ、とMochel氏は述べた。ネットワークに接続されていないネットワーク・カードが稼働するのは電力の浪費であるから、これは効果的かもしれない。

カーネル・モジュールを削除しても、必ずしもデバイスへの電力供給が削減されるとは限らないと、会場から指摘があった。Fedoraでは、モジュールを削除しなければサスペンドを実行できない場合にだけモジュールの削除が行われると、他の参加者が発言した。

別の参加者からは、ドライバによる電源管理の適切な設定方法を書いたドキュメントはあるのかと質問が出た。これにはストレートな返答はなく、ある人は、いったい何かのために適切にドライバを設定する方法を書いたドキュメントがあるだろうかと問いかけた。また、パッチをLinuxカーネル・メーリングリストに投稿して、意見を求めてはどうかという提案がなされた。

議論は、さらにタブレットPCと回転式タッチ・スクリーンへと移った。タッチ・スクリーンのサポートは、ここ数年で強化されたが、それは主にuserlandにおいてのことだ。ある参加者が説明したが、タブレットの回転式ディスプレイの方向の確認は、両端で生じる空気圧の差を感知するセンサーによって行われる。

回転式ディスプレイは、Xだけでなくコンソールにとっても問題だ、とLinux InternationalのJon ‘maddog’ Hallが発言した。これに答えて、Pavel Machek氏は、2.6.16以降のカーネルではコマンドライン・ツールがコンソールを回転できると説明した。

さらに議論は、IBMの新型ラップトップの多くに搭載された指紋スキャナのバイオメトリックへと移った。Microsoftは、次期バージョンのWindowsでバイオメトリックAPIに力を入れるという。バイオメトリックAPIはLinux用にも存在し、出来は悪くない。指紋スキャナのサポートもあり、スキャナで読み取られた画像を保管された画像と比較できる。画像がハッシュされないため、この方法はセキュリティが低いと指摘する声が参加者からあった。ハッシュを使うのは、長年Linuxのユーザ・パスワードを保護するために使われている方法である。

4日間を予定したカンファレンスの2日目は、初日と比べてテクニカルなテーマが多く、特にDave Jones氏のユーザ空間に関する講演はこの日のハイライトだった。

NewsForge.com 原文