Develop and Download Open Source Software

OpenSource Downloads

7-Zip  (4,208)  
HandBrake Japanese Language Version  (3,353)  
CrystalDiskInfo  (1,743)  
CotEditor  (1,120)  
CrystalDiskMark  (866)  
Boookends  (788)  
SMPlayer  (642)  
えこでこツール  (599)  
Tera Term  (595)  
10  FFFTP  (579)  
11  Cabos  (530)  
12  BathyScaphe  (494)  
13  ffdshow  (481)  
14  MergeDoc  (464)  
15  ギコナビ  (438)  
More >>

最近ブックマークされた記事

Linuxのパフォーマンスを改善する3つのTips

2007年07月17日 13:08 Federico-Kereki(2007年7月12日(木)) 1 2 3

ファイルシステムのアクセスを最適化する

 Linuxは、ファイルの作成時刻、最終更新時刻、最終アクセス時刻を記録する。しかし最終アクセス時刻の記録は、ファイルを読んだだけのときにも、システムが最終時刻の記録のためにファイルのディレクトリエントリを更新するため、通常はファイルのアクセス速度の低下を招くことになる。書き込みによって速度が低下することがあるということは、この更新を行なうのをやめてしまえば性能が向上するはずだ。

 このスピードアップを実現するためには、ファイルシステムのマウント方法を変更すれば良い。そのためにはまず、ルートとして「cat /etc/fstab」を実行してみよう。私の場合、以下のような結果になった。

/dev/hda3        /                  reiserfs  acl,user_xattr     1 1
/dev/hda1        /boot              ext2      acl,user_xattr     1 2
/dev/hda2        swap               swap      defaults           0 0
proc             /proc              proc      defaults           0 0
sysfs            /sys               sysfs     noauto             0 0
debugfs          /sys/kernel/debug  debugfs   noauto             0 0
usbfs            /proc/bus/usb      usbfs     noauto             0 0
devpts           /dev/pts           devpts    mode=0620,gid=5    0 0
/dev/fd0         /media/floppy      auto      noauto,user,sync   0 0
/dev/hdd1        /media/disk2       reiserfs  defaults           1 2

 最適化するのに最も適したハードディスクのパーティションは、/と/dev/hdd1だ。というのも/bootは起動時にしか使用されず、/swapは立ち入り禁止となっていて(Linuxカーネルが特別の目的に使用するため)、その他はハードディスクではないためだ。

 変更するのは簡単だ。好きなテキストエディタで4列目のオプションに「,noatime」を追加し、その後「mount -a」コマンドを実行して全ファイルシステムを再マウントすれば良い。

 性能はどうやってテストすれば良いだろうか。私の場合、まずはbonnie++パッケージを使ってみたが、bonnie++の行なうテストは特にファイルアクセスを重視しているわけではないため、結果は何とも判断しがたいものだった。

 そこで代わりに再び自作のテストを行なうことにした。まず1,000個のファイルを作成しておき、その後、その中身を/dev/nullにコピーするのにかかる時間を測った。ファイルは以下のようにして作成した。

for ((i=0;i<1000;i++)) do ls >$i ; done

 コピーにかかる時間は以下のようにして測った。

time cp * >/dev/null

 そしてnoatimeオプションを付けた場合と付けなかった場合の両方で上記の2つを実行した。その結果、わずかだが性能の改善が見られた。ファイルアクセスの度に最終アクセス時刻を更新することがなくなったので、当然の結果だ。

 この時点で、ハードディスクが可能な限り高速に動くようになったのに加え、ファイルアクセスも最適化することができた。そこで最後に、コマンドのロード時間を短縮するための最適化をしよう。

関連トピック

最終更新:2009年10月09日 16:01