zfsでブロックサイズを小さめに設定した方がいいんじゃないかというページがあったので、まずは自分のメールボックスがどうなってるか調べてみた。
ファイルのサイズをリストする。
env LANG=C find . -type f -ls | awk '{print $7}' > /tmp/sz
サイズの対数をとる。底2できりあげ。ceil()がなかったので1よりちょっと低い値を足して切り捨て、で代用。
awk '{print int(log($1)/log(2)+0.999999)}' /tmp/sz > /tmp/logsz
度数分布ももとめる。
sort -n /tmp/logsz | uniq -c | awk '{print $2 " " $1}' > /tmp/mail-size.dat
あとはgnuplotでグラフにするだけ。
% gnuplot > set log y > set grid > set xtic 1 > set xrange [1:] > plot "mail-size.dat" with step > set terminal png size 600,400 > set output "mail-size.png" > replot
累積度数はこんなかんじで計算。
awk '{sum += $2; print $1 " " sum}' /tmp/mail-size.dat >/tmp/mail-size-acc.dat
横軸が log2 したメイルのサイズ、縦軸がメイルの数。左のグラフが度数分布、右は累積したもの。
これをみたかんじだと2^14=16KiBくらいのブロックサイズにするとちょうどよさそうだ。