民芸的プログラミング 〜ソフトウェア開発日記〜

アクセスカウンタ

zoom RSS sync() は劇的に遅い

<<   作成日時 : 2008/02/16 08:09   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

後輩が面白いテストプログラムを作ってくれた。Linuxでsync()を発行すると、いかにプログラムの動作が遅くなるかをテストするためのプログラムだ。
自分は最近、UNIXでCのプログラムを書いていないので(と言い訳する)、今、この場でそのプログラムを再現することはできないのだが、大体次のような感じのプログラムだった。

ファイルを書き込み用に開く
「データを1バイト書き込み、書き込むたびにsync()を発行」を100回繰り返す
ファイルを閉じる

100バイトのデータが完成するだけの、単純なプログラムだ。
もちろん、sync()を取り除けば、こんなもの、最近のPCなら一瞬で終了してしまう。プログラムのロードのほうに時間がかかるくらいだ。
ところが、sync()が入っていることによって、このプログラム、劇的な遅さを発揮する。
終了までおおよそ10秒もかかるのだ。たった100バイトのデータを作るのに。人間がストップウォッチで計れるような時間だ。
(ちなみにCPU時間はほぼ0であった。プログラムの実行時間はほとんどがIOで占められているらしい)

PCのスペックの仔細は忘れたが、最近のものであることは間違いない。2GHz以上のCPUを搭載し、2GBのメモリを搭載し、80GB以上のSATAのHDDを搭載し、Reiserfsを採用したものだ。

「最近のHDDならHDD上にキャッシュがあるはずだけど、書き込みの際には効かないようになっているのかね?」とか、新たな疑問は出てきたものの、短い割にはなかなか面白いテストプログラムだった。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
sync() は劇的に遅い 民芸的プログラミング 〜ソフトウェア開発日記〜/BIGLOBEウェブリブログ
文字サイズ:       閉じる