ファイルの入出力性能の改善は,システム全体の処理速度向上に大きく貢献する。高速なプロセッサを搭載する現在のコンピュータでは,ファイルのアクセス速度がシステム・パフォーマンスのボトルネックになっているためである。不要なディスク・アクセスの削減とアクセス速度そのものの向上が,チューニングの要となる。

アクセス時刻の記録を省略しファイル読み込みを高速化

 ファイルにアクセスしたときには,最終アクセス時刻が属性情報として記録される。この情報を記録しないように設定することで,ファイルの読み込み速度を向上できる。最終アクセス時刻の記録を止めるには,ファイル・システムのマウント時に,noatimeオプションを指定する。ベンチマークでは,読み込み速度が2倍強に改善できた。

atimeは無駄

 LinuxなどのUNIX系OSでは,statやfstat,lstatというシステム・コールを使って,ファイルの属性情報を読み出せる。属性情報には,例えば,ファイルの許可属性や更新時刻がある(表1)。Linuxのファイル・システムなどでは,属性情報をファイルと一緒に記録している。これらの時刻情報は,ファイル属性を調べるstatコマンドを使って図1のように参照できる。

表1●stat()システム・コールで読み出せるファイル属性
最終アクセス時刻(atime)の更新頻度を抑えることでシステム・パフォーマンスを手軽に向上できる。
表1●stat()システム・コールで読み出せるファイル属性

$ stat honbun.txt
  File: "honbun.txt"
  Size: 7535          Blocks: 16    IO Block: 4096  Regular File
Device: 3a02h/14850d  Inode: 33746  Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 500/ sueyasu)  Gid: ( 100/ users)
Access: Tue Jan  8 14:39:03 2002
Modify: Mon Jan  7 07:26:40 2002
Change: Mon Jan  7 07:26:40 2002
図1●statコマンドによるファイル属性の参照

 ここでファイルが3種類の時刻情報を持っていることに注目する。具体的には,最終アクセス時刻(atime=access time),最終更新時刻(mtime=modification time),最終変更時刻(ctime=change time*1)である。

 atimeには,文字通りファイルがアクセスされた時刻が記録される。ファイルの読み込みや書き出しにかかわらず,ファイルにアクセスが行われるたびに記録される。

 mtimeとctimeは,どちらもファイルの更新時刻を記録する。ただし,ファイルの中身を更新したときにはmtimeとctimeの両方が更新されるが,ファイルの許可属性などのステータスが変更されたときにはctimeしか更新されないという違いがある。

この先は会員の登録が必要です。有料会員(月額プラン)は申し込み初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら