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オプションをつけたおかげで体感スピードも確実に向上した。どれがどのくらい貢献したかはよくわからないけど。
コメントをくださった皆様、ありがとうございます。わたしは皆様の愛で生きています〜