Kodama's home / tips.

ファイルサイズの分布(part1)

/usr/bin のファイル/ディレクトリのサイズを調べて, ファイルサイズがフラクタル的に分布することを確かめる.

別稿では この tips ページ tips*html のサイズを調べてフラクタルでは __ない__ ことを確かめている.

いくつかのグラフを作成するが, その意味の詳細については省略する. データ列を分析する手法としては, フラクタル解析や時系列解析などのテキストを読むと良い.

  1. スクリプト
  2. 順位-サイズのグラフ
  3. 順位-サイズの片対数グラフ
  4. 順位-サイズの両対数グラフ
  5. まとめ
    1. フラクタル モデル
    2. 大型のプログラムが増えているような気がすることについて
    3. 問題を解決しても次が控えている

スクリプト

以下のようにして, データ列からグラフを作る.
  1. du でファイルやディレクトリの大きさの一覧を作る.
  2. 順位と大きさの関連をしらべるために大きさ順に整列
  3. gnuplot でグラフにする
$ du -sk /usr/bin/* | sort -nr | gnuplot gplot.txt > disk-use.png
また, ls を用いる事もできる.
$ ls -sdS /usr/bin/* | gnuplot gplot.txt > disk-use.png
$ ls -ldS /usr/bin/* | gawk '($5>1024){print $5}' | gnuplot gplot.txt > disk-use.png

du と ls の違い, ls のオプションの違いなどで, 統計に多少の差が出る事に注意.

以下で, gnuplot に与えるコマンドファイル gplot.txt を変えて様々なグラフを作る.

順位-サイズのグラフ

まずそのままグラフにしてみる.

gnuplot のコマンドファイル(gplot.txt)

set terminal png
plot "< cat" using ($0+1):($1) # linear-linear
注. $0 が行番号. $1 は 第1フィールド.

結果(図1)

ものすごく偏ったグラフがえられたが, この素性は...
Fig.1. distribution of file size

順位-サイズの片対数グラフ

gnuplot のコマンドファイル(gplot.txt)

set terminal png
set logscale y; plot "< cat" using ($0+1):($1) # linear-log

結果(図2)

参考のために片対数グラフを見る. ここからは, 指数分布という解釈は適切ではないことがわかる.
Fig.2. distribution of file size

順位-サイズの両対数グラフ

gnuplot のコマンドファイル(gplot.txt)

set terminal png
set logscale xy; plot "< cat" using ($0+1):($1) # log-log

結果(図3)

log-log グラフで直線状になっていることから, 巾分布すると思われる.
Fig.3. distribution of file size

まとめ

フラクタル(凝集) モデル

ファイル サイズは, フラクタル的に巾分布(べき分布)する.

フラクタルのモデルが作れそうなほどきれいに, 巾分布していることが分かった.

今回は /usr/bin を調べたが, UNIX 風のコマンドは, コマンド オプションを増やすことで様々な機能を取り込む傾向がある. GUI で使用するツールについても, メニュー オプションを増やして機能を取り込んで行く. これは, 機能についての凝集が起こっていると解釈できる. (多機能ツールナイフ症候群)

凝集によってできたクラスタがコマンドとして実現されているため, サイズに関してもフラクタル的に分布することになる.

大型のプログラムが増えているような気がすることについて

フラクタルのモデルが適用できるとすると, プログラムのファイルサイズには特別のスケールが無いという事を意味する. つまり, インストールするプログラムの種類が増えると, フラクタル的なスケーリング法則にしたがって大きなサイズのものも入ってくると云うことを意味している.

問題を解決しても次が控えている

そういうわけで,
  1. ファイル数が増えると, それに比例する以上の速度で(スケーリング則に依って) 必要なするディスク容量が増える.
    個数に比例すると予想すると失敗する.
  2. 大型のファイルを抑えても常に次が控えている.
    一時的な対処で安心すると失敗する.

Kodama's home / tips.