ページキャッシュは、そこそこのサイズが良い
キャッシュ周りのパラメーターって、2.4系までと2.6系以降のカーネルで違うのに、後者の情報ってあんまり流布していないんですよね。 QT @satodainu: ライトバックのサイズって、そんなとこに設定があったのか。
2010-08-18 11:41:02vm.dirty_background_ratio の最小値は 10。vm.dirty_ratio より大きい値に設定されたときは vm.dirty_ratio/2 として扱われるんだったかな?
2010-08-18 12:11:46実メモリの量が64GB はともかくとして、2GB でもデフォルト設定でフォアグラウンドライトバックが働き始めるときにはダーティーキャッシュが 800MB 溜まっている。ディスクの書き込み速度が 50MB/s だとするとライトバックに 16 秒かかる。
2010-08-18 12:19:39フォアグラウンドライトバック中にはかなりのふんづまり状態になる。ディスクアクセスランプが点きっぱなしで応答しなくなって「暴走?」とかあせっちゃったりするのだ。
2010-08-18 12:21:32Linux のリアルタイム性云々は、制御や組み込みだけではなく普通の使い方でも気をつけなければいけないのだ。
2010-08-18 12:24:55「grep uaaa abc > hoge; sort hoge」なんてやると、尻切れトンボの(あるいはまだ存在しない)ファイルをソートしているかもしれない。
2010-08-18 12:30:20「grep uaaa abc > hoge; sync; sleep 1; sort hoge」だと、まぁたいてい大丈夫。
2010-08-18 12:32:57@labidochromis わたなべさんのマシンってどういうんだろう?というか,どういうファイルを扱ってるんだ? abc は何行あるんですかね?
2010-08-18 12:38:08@konamih abc は1文字でも(それどころか0文字でも)、それ以前にメモリがダーティーキャッシュに埋められていればこの現象はおきます。キャッシュを開放するまで新規ファイルを作れないから。
2010-08-18 12:46:24@konamih grep uaaa abc | sort なら問題ないんだだけれど、途中経過をファイルに保存しておきたい事もあるでしょ?他のプログラムが生成したファイルをプログラムに読ませたいことはあるでしょ?
2010-08-18 12:48:08メモリが 2GB のLinux マシンでデフォルト設定なら、touch したあと ls するまで 16 秒くらい待たなければ駄目なことがあるのだ。
2010-08-18 12:49:04小波さんのマシンでも「touch abc; ls abc」を何万回かやれば「No such file or directory」が出るんじゃないかな。
2010-08-18 12:53:29あぁ、ライトバックされるまで新規ファイルが生成しないのは実メモリが「ダーティーキャッシュ+プロセスが使用しているメモリ」でほぼ一杯一杯な時です。
2010-08-18 12:55:30「ダーティーキャッシュ+クリーンキャッシュ+プロセス」のような状態ならクリーンなキャッシュが即座に開放されてそれを使って新規ファイルが生成される。
2010-08-18 12:56:464Hz ♪=120 で16分音符の連続 で30秒ほど連続して grep hoge > hoge2 ;sort hoge2 > hoge3 ;cat hoge3 とやってみたが疲れただけだ (おい)
2010-08-18 12:59:30デフォルト設定のLinuxで諸プロセスが実メモリを60%以上使っているとダーティなページキャッシュが溜まってきたところで新規ファイル(サイズがゼロでも)の生成に数秒~数分を要する事態に陥る。
2010-08-18 13:00:51私のメインなマシンはメモリ 8GB で、vm.dirty_ratio = 6, vm.dirty_background_ratio = 3 にしている。
2010-08-18 13:02:55