このコラムでは,Linuxのカーネルやディストリビューションの動向を紹介している。まず,最近のおもなセキュリティ問題から報告する。

カーネルやXウィンドウにセキュリティ・ホール

 2月18日,Linuxカーネル2.2から2.2.25,2.4から2.4.24, 2.6から2.6.2に,ローカル・ユーザーが管理者権限を奪うことのできるセキュリティ・ホールが報告された(CAN-2004-0077)。

 Red HatミラクルリナックスDebianなどからパッチが提供されている。

 また,2月10日にはウインドウ・システムをつかさどるXFree86にセキュリティ・ホールが報告されている(CAN-2004-0083CAN-2004-0084 CAN-2004-0106)。ローカル・ユーザーが管理者権限を奪うことのできる脆弱性である。Red Hatターボリナックスなどがパッチを提供している。

 いずれもリモートから直接攻撃できるセキュリティ・ホールではない。しかし,リモートから一般ユーザー権限で不正に侵入できるセキュリティ・ホールと併用されれば,リモートから管理者権限を奪われてしまう場合もある。アップデートを実施されたい。

プロセス・スケジューラの効率などが向上

 では前回に引き続いて,カーネル2.6の新機能について解説しよう。今回は,カーネル2.6でのパフォーマンスとスケーラビリティについて紹介する。

図1●カーネル2.6と2.4の性能比較
OSDLのレポート「Linux Process Scheduler Improvements in Version 2.6.0」より,8CPUのシステムでの計測結果。横軸はプロセス数。縦軸は処理時間で,数値が小さいほど性能が高い。赤がカーネル2.4緑が2.6
 まず,カーネル2.6ではどの程度性能が向上したのか。オープンソース・ソフトウエアの普及団体であるOSDLが公表しているレポート「Linux Process Scheduler Improvements in Version 2.6.0」では2.6は,2.4に比べて,8CPUのシステムでは200プロセスの時点で約8倍(図1[拡大表示]),1CPUのシステムでも2~3倍高速なベンチマーク結果を出している。

 このテストは,hackbenchと呼ばれるベンチマーク・テストで,チャットの処理をシミュレートしたものだ。中心的なカーネル開発者の1人であるPaul 'Rusty' Russell氏(関連記事)が作成したベンチマーク・テストだ。横軸はプロセスの数。縦軸は処理に要した時間で,小さいほど性能が高い。2.6系カーネルは,正式リリース直前のバージョンである2.6.0-test9,2.4系カーネルは2.4.18である。8CPUシステムのプロセッサは700 MHzのPentium III,メモリーは8Gバイト。1CPUシステムのプロセッサは1GHzのPentium III,メモリーは1Gバイトである。

 2.6では,O(1)スケジューラと呼ばれるプロセス・スケジューラを採用している。次に実行すべきプロセスを決定するための検索を削減するために,プロセスの優先度別にキューを用意しており,またプロセスのCPU間の移動が発生しにくいようになっている。そのほか,2.6ではCPU間の排他制御が改良され,ロックの負荷が軽減された。プロセスよりさらに細かい並列処理の単位であるスレッドの処理は,2.4ではおもにライブラリが担っていたが,2.6ではカーネル本体で処理(ネイティブPOSIXスレッド)されるようになり,オーバヘッドが減少した。

2.4のほうが高速なケースも

 とはいえ,すべての処理でこのような劇的な性能向上が得られるわけではない。アプリケーション側の対応も重要だ。

 SDLでは2月4日,「Linux 2.6 Performance Test Using OSDL-DBT-3 on PostgreSQL and STP」と題するレポートを発表しているが,PostgreSQL 7.3.3によるテストで,現時点ではカーネル2.6.1よりカーネル2.4.24のほうが性能が高いという結果が出ている。テストチームではその原因を調査し,今後発表するとしている。

 実は,O(1)スケジューラやネイティブPOSIXスレッドなどの機能はカーネル2.4でもパッチなどの形で使用することができ,カーネル2.4ベースのRed Hat Enterprise Linux 3などにも取り込まれている。カーネルの採択は様々な側面から総合的に判断する必要がある。

16プロセッサ以上がカーネル2.6のターゲット

 また,Linuxカーネル2.6のメンテナ(管理責任者)Andrew Morton氏は,カーネル2.6のターゲットは,今回のテストに登場したような8CPU以下のシステムというより「16から32プロセサのシステム」と語っている(関連記事)。カーネル2.6のスケーラビリティはこのような大規模なシステムで発揮されることになるようだ。

 カーネル2.6にはNUMA(Non-Uniform Memory Access)と呼ばれるアーキテクチャの対応も目玉の1つとして盛り込まれている(参考資料:NEC 河内隆仁氏によるLinux Kernel Conference 2003講演資料「Linux によるNUMA サポート」)。NUMAとは,複数のマルチプロセッサ・マシンを接続し,全体が1つのメモリー空間を共有するアーキテクチャである。単純なSMP(対照型マルチプロセッサ)では実現できない,きわめて多数のプロセッサで構成されるシステムを構成できる。今後,Linuxによる超並列マシンの登場が期待される。

Red Hat Linux採用サイトが減少?

 最後に,Linuxディストリビューションのシェアに関して,興味深い調査が発表されていたので紹介しておこう。英Netcraftは英国時間1月28日,インターネット上で使用されているLinuxディストリビューションに関する調査結果「Debian Fastest Growing Linux Distribution」を発表した(図2[拡大表示])。
図2●ディストリビューション別使用サイト数
英Netcraftのレポート「Debian Fastest Growing Linux Distribution」より。赤がRed Hat水色がDebian

 調査によれば,過去6カ月間に最も成長したLinuxディストリビューションは,ボランティア・ベースのDebian/GNU Linuxだった。Debianを使用しているサイトは44万2752サイトで,前年に比べ24.6%増加した。SuSE Linuxがそれに次ぐ増加率で,前年から23.2%増え29万6217サイトだった。

 最も多くのサイトで使用されているのはRed Hat Linuxだ。145万1505サイトで使われており,前年の123万1986サイトから17.8%増加した。ただ,数の上ではRed Hat Linuxが圧倒的なのだが,2003年の12月をピークに,2004年1月は前月に比べわずかにサイト数が減少している。

 Netcraftはサーバーが送信するデータからWebサーバーやOSの種類を判定して集計している。この調査では,「LinuxベースのApacheのうち4分の1がヘッダーにディストリビューション名が記述されていた」と記しており,ディストリビューションが不明なサイトがかなり多かったようだ。そのため,この数値をそのままシェアと考えることはできない。

 しかし,今回見られた傾向にはRed Hatの体制変更(関連記事:【Linuxウォッチ】第3回 Red Hat Linuxの開発が終了,選択を迫られるユーザー)が影響していると考えられる。Red Hat Linuxの開発が終了しFedora Projectが開始されたことで,サーバー向けLinuxディストリビューションの選択肢が今後どう変わっていくのか注目される。
(高橋 信頼=IT Pro)