[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:13798] column of kernel size



こじま@連休の谷間で多少のんびりしている、、です。

ちと話のタネに会社のメルマガ用に書いたコラムを無断転載してみます :-)

# 多分、こっちの方が読者が多いであらうから(笑)

不定期ですが、私や小山さん、真鍋さんが、(たまに :-)寄稿する予定なので、
メルマガに興味ある人は http://www.nlcomputer.com/mailmag/touroku.html 
あたりを御覧くださいませ。

------------------------------------------------------------------
カーネルサイズの話

新しいカーネルが出たら RPM 等のパッケージがリリースされる前に 
ftp.jp.kernel.org あたりからダウンロードするというカーネル追いかけの人
は、最近のカーネルソースがやけに大きくなっていることに気がついていると
思います。事実、最新の安定版カーネル 2.4.18 では、tar.bz2 の形式で 
24.1MB、開発版の 2.5.9 では 27MB というサイズになっています。「いつの
間にこんなに大きくなったんだろう?」と思って、過去のカーネルのサイズを
調べてみました。

1991年 9月に公開された最初のバージョン 0.01 カーネルは、tar+bz2 ではわ
ずか 63.3KB しかありませんでした。展開しても 512KB で、2DD のフロッピー
ディスク 1枚に収まるサイズです。その後、かなり形を整え 92年 3 月に公開
された 0.95 でも tar.bz2 で 116KB、展開して 844KB と、まだ 1.44MBの FD
1 枚に収まるサイズでした。一方、ネットワーク機能が追加され、複数のファ
イルシステムをサポートして 94年 2 月に公開された 0.99.15 では tar.bz2 
で 991KB、展開すると約 6MB にまで成長しています。この過程は、基本的な
機能を実装した段階から UNIX 互換を名乗れるまでの機能を実装するに要した
開発者たちの苦労を感じさせます。

その後、Linux カーネルはひたすら大きくなっていき、95年 3月に公開された
次の安定版カーネル 1.2.0 では tar.bz2 で 1.8MB、展開して 10.6MB となり、
圧縮したソースコードも FD 1 枚に収まらなくなってしまいました。その後は
倍々ゲーム的に増加していき、96年 7月に公開された 2.0.0 では tar.bz2 で 
10.5MB、展開して 27.2MBでした。次の 99年 1月に公開された 2.2.0 では圧
縮して10.6MB、展開すると62.7MBとなり、2001年 1月に公開された 2.4.0 で
は圧縮して19.8MB、展開すると 119.3MBと、ついに 100MBを超えてしまいまし
た。最新の開発版である 2.5.9 では圧縮して 27MB、展開すれば 170MBに達し、
展開したソースコードは初期の MO(128MB)には収まらなくなってしまいました。

これらの結果を元に、開発版カーネルのサイズの増加速度を 2次の回帰式にあ
てはめて将来のサイズを予測したところ、展開したコードが CD-ROM 一枚に収
まらなくなるのが 2013年ごろ、1GB を突破するのは 2017年ごろ、という結果
になりました。UNIX の世界では time_t がラップする 2038年問題というのが
ありますが、Linux の場合、その手前にカーネルソースが CD-ROM 1 枚に収ま
らなくなるという問題が発生するかも知れません。 :-)

この分析結果は http://plamo.linet.gr.jp/~kojima/GITI/index.html 以下の
ページで公開しているので、より詳しい分析を知りたい方はこのページを参照
してください。

-------------------------

追記:

カーネルソースのサイズを 2 次の回帰式にあてはめているけど、原点(0,0) 
を通らないのはマズいのではないか、という批判に対して、0.01 以前は 
minix があったからいいのでは、という反論もできそう。

また、カーネルソースサイズの増加が 2 次式で推測されるとすると、カーネ
ルソースの増加は 1 対 1 のコミュニケーション( O(N) に対する O(N^2))で
律せられているのでは、という指摘もあったけど、そのあたりはまだ深く考え
ていない。

-------
こじま

Follow-Ups
[plamo:13810] Re: column of kernel size, SHINGUU Atsuhiro
[plamo:14132] Re: column of kernel size, KOJIMA Mitsuhiro

[検索ページ] [メール一覧]
Plamo ML 公開システム