未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

123倍の性能向上。(Mailの整理の続き)

先日記したとおりhttp://d.hatena.ne.jp/hyoshiok/20061219#p1、Mailを整理したのだが、その顛末。

まづ、/homeをバックアップするのだが、エライ目にあう。

# time tar cjf /home.tar.bz2 /home
tar: Removing leading `/' from member names

real    1091m4.426s
user    1072m20.026s
sys     5m26.365s

先生、1091分って、18時間ですよ。18時間。たかが9GBちょっとのディレクトリをバックアップするのに18時間というのは異様である。この18時間のあいだ、メールのやりとりはできないので(~/Mail/inbox)、仕事にならない。そこでこまめにバックアップする戦術をとることにする。

$ time tar cf /hyoshiok/Mail/inbox.2000.tar inbox.2000

real    0m10.379s
user    0m2.104s
sys     0m8.274s
$ time tar cf /hyoshiok/Mail/inbox.2001.tar inbox.2001

real    0m55.003s
user    0m1.415s
sys     0m18.588s
$ time tar cf /hyoshiok/Mail/inbox.2002.tar inbox.2002

real    1m3.107s
user    0m1.248s
sys     0m21.545s
$ time tar cf /hyoshiok/Mail/inbox.2003.tar inbox.2003

real    2m1.837s
user    0m2.381s
sys     0m47.971s
$ time tar cf /hyoshiok/Mail/inbox.2004.tar inbox.2004

real    4m19.758s
user    0m3.727s
sys     1m25.858s
$ time tar cf /hyoshiok/Mail/inbox.2005.tar inbox.2005

real    7m4.173s
user    0m4.899s
sys     2m3.317s

まあ、許容範囲である。各ディレクトリには2〜3万程度のファイルがある。bzip2は時間がかかりそうだったので、あえて圧縮しない。

でもって、inbox.200[0-5]を消去して、ファイル数の多いディレクトリを削除する。

# time tar cf /home.tar /home
tar: Removing leading `/' from member names

real    8m53.793s
user    0m11.713s
sys     2m51.538s

先生、8分53秒ですよ(約8.88分)。倍率は1091/8.88=122.86っすよ。約123倍速くなっちゃいました。

でもって、

# time mkfs.ext3 -O dir_index -L /home /dev/sda2
mke2fs 1.35 (28-Feb-2004)
Filesystem label=/home
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2562240 inodes, 5120718 blocks
256035 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=8388608
157 block groups
32768 blocks per group, 32768 fragments per group
16320 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

real    0m8.702s
user    0m0.177s
sys     0m1.558s

dir_index属性を付けた見た。

# mount -o noatime /dev/sda2 /home
# time tar xf /home.tar

real    8m40.212s
user    0m16.324s
sys     5m52.328s

となる。

$ time tar xf /hyoshiok/Mail/inbox.2000.tar

real    0m44.137s
user    0m1.841s
sys     0m36.376s
$ time tar xf /hyoshiok/Mail/inbox.2001.tar

real    0m49.678s
user    0m1.535s
sys     0m32.524s
$ time tar xf /hyoshiok/Mail/inbox.2002.tar

real    0m54.275s
user    0m1.064s
sys     0m32.052s
$ time tar xf /hyoshiok/Mail/inbox.2003.tar

real    1m48.666s
user    0m1.741s
sys     1m1.420s
$ time tar xf /hyoshiok/Mail/inbox.2004.tar

real    3m39.856s
user    0m2.966s
sys     1m59.346s
$ time tar xf /hyoshiok/Mail/inbox.2005.tar

real    5m19.372s
user    0m3.913s
sys     2m40.028s

inboxがスリムになったのと、mkfsをしてフラグメンテーションが解消され、dir_indexやnoatimeオプションをつけたおかげで体感スピードも確実に向上した。どれがどのくらい貢献したかはよくわからないけど。

コメントをくださった皆様、ありがとうございます。わたしは皆様の愛で生きています〜