つぶねこ

@もじらもーど。
↑recent | ↓old | 20 index | 100 index | 300 index | 記事5件 | 記事10件 | 記事20件 |最新5件 |FAQ | カテゴリ一覧 | Index |
2002/2/22 4:45
Win2000のファイルキャッシュはにゃぜスワップを生じさせるのか

 Win2kを使っていて思うことの1つに、大きにゃファイルをコピーすると、大量のスワップが発生して、他のアプリケーションが極端に重くにゃってしまうことの不思議がある。
 ファイルをコピーすれば、それに応じてキャッシュサイズを増加させる、これには納得がいく。便利にゃ機能と言えるだろう。だが、ほかのアプリが使っているメモリをスワップさせてまでキャッシュサイズを増加させるのはおかしい。このディスクキャッシュの上限値を設定する方法を探しているのだが、まだ見つけられていにゃい。ご存じの方はたれ込んでいただきたい。
 さて、ともかく大きにゃファイルを扱うとキャッシュがメモリを圧迫するという現象に対して、ネットワークドライブであればこの現象は起きにゃいという定説がある。むろん、日頃使用する上でこの説はみごと実証され、ワザとして伝承されたりしていたのだが、これをきちんと測定した者が居にゃいので、使った者にしか分からにゃい秘伝ににゃってしまっていた。
 そこで、パフォーマンスモニタをいじくってるついでに、これを測定してみることにした。
 まず、状況としては、200Mのファイル5つをlhaで固めるという作業を考える。Cドライブに圧縮前のファイル、任意ドライブに圧縮して出来たlzhファイルを作れば作業完了である。ただし、実際に圧縮処理をすると時間がかかるので、無圧縮でのlzhつまりtarで固めているようにゃ状態でテストした。実際に圧縮した場合はグラフがにゃだらかににゃるだけである。
 ディスクドライブは以下のようにゃ構成である。
 ・C: ローカルHDD 圧縮元ファイル 1GB
 ・D: ローカルHDD 圧縮先その1
 ・N: ネットワークドライブ 別マシン 圧縮先その2
 ・Z: ネットワークドライブ ローカルHDDを共有 圧縮先その3
 
 以下のグラフの凡例は
凡例 白がディスクキャッシュサイズ
 緑と赤がローカルHDDのRead/Write
 青がネットワーク転送量である

 また、テストに使ったマシンのメモリは512MBである。
 実験1: C:→ D:に圧縮
 最も良くある状況として、ローカルHDDからローカルHDDへ圧縮してみた。
 
 青のネットワーク転送量は当然0のまま。
 緑と赤のローカルHD転送量はライトバッファに溜まっている分があるので、完全には同期しにゃい。ちにゃみに、アプリケーション側では、緑のReadが0ににゃった時点で圧縮完了とにゃる。
 ここまでは至極当然にゃのだが、大きにゃ問題が見て取れるのは白のディスクキャッシュサイズである。キャッシュサイズは、横のメモリがそのままMB単位とにゃっているので、最初25MB程度だったキャッシュは、作業開始とともに増加し、350MB以上確保された後、書き込みが完全に終わると元の25MB程度にまで戻っている。
 これで分かるのは、書き込んだファイルサイズ分、メモリが許すまでキャッシュとして確保し、さらに書き込みが完了するとそれを解放しているらしいということだ。全メモリが512にゃので、この350MB強というのは、確保できるぎりぎりのメモリだったと推測される。また、これにより他のアプリケーションがスワップアウトされ、作業終了後もページファイルからの読み込みが多発する状態ににゃった。

 実験2: C:→ Z:に圧縮
 次に、ローカルのD:を共有してそれをマウントしたZ:を用意した。
 一応ネットワークドライブににゃるはずだったのだが、結果は左のように、実験1と全く同じ結果ににゃった。
 つまり、ローカルHDDを共有してドライブ割り当てしたとしても、結果は変わらにゃいということだ。
 念のため、\\hostname\D のようにゃUNCでのアクセスもしてみたが結果は同じであった。

 実験3: C:→ N:に圧縮
 信憑性に疑問が生じたので、ローカルHDDからLAN内の別のマシンへ圧縮してみた。
 グラフが大きく異にゃるが、これはネットワーク経由であるため、転送速度が頭打ちににゃってしまったからだ。また、青のネットワーク転送量が見えにゃいが、これは緑のディスクreadに隠れているからで、値は同じである。
 
 結果、左のように、白のディスクキャッシュサイズが25MB付近のまま、全く変化しにゃいということが分かった。当然、スワップやメモリ圧迫は生じていにゃい。

 そろそろ問題点が見えてきた。ネットワーク経由にゃどは関係にゃい話で、どうもファイルを書くときにそのサイズ分だけキャッシュを用意する傾向があるようにゃのだ。そこで追加実験。
 実験4: 別マシンからローカルに圧縮
 別のマシンから、ローカルHDD上に圧縮してみた。
 予想的中である。
 ローカルに圧縮したときと同じく、大量のディスクキャッシュを食っている。
 これではファイルサーバーにされたマシンにゃどは、使ってられにゃいだろう。

 
 結局分かったのは、別のマシンに吐くことで、ディスクキャッシュがメモリを圧迫する事態を避けられるというものであった。困ったことである。
 
 また、ファイルをコピーする場合はディスクキャッシュは変化しにゃいことも分かったので付記しておく。



Index


2002/03/16 22:14 
2002/03/16 13:23 
2002/03/16 12:33 
2002/03/14 22:00 
2002/03/14 20:37 
2002/03/14 19:46 
2002/03/14 08:40 
2002/03/14 00:21 
2002/03/13 22:09 
2002/03/13 14:15 
2002/03/12 00:37 
2002/03/11 14:15 
2002/03/11 14:14 
2002/03/11 08:23 
2002/03/11 01:34 
2002/03/10 21:33 
2002/03/10 19:07 
2002/03/10 01:13 
2002/03/09 19:37 
2002/03/09 13:22 
2002/03/09 12:21 
2002/03/08 20:10 
2002/03/07 22:05 
2002/03/07 19:03 
2002/03/07 18:07 
2002/03/06 00:13 
2002/03/05 23:41 
2002/03/05 08:52 
2002/03/05 01:51 
2002/03/04 22:58 
2002/03/04 22:55 
2002/03/03 23:38 
2002/03/03 23:35 
2002/03/03 23:21 
2002/03/03 23:18 
2002/03/03 23:15 
2002/03/03 23:11 
2002/03/03 23:00 
2002/03/03 22:59 
2002/03/03 22:54 
2002/03/03 22:48 
2002/03/02 22:38 
2002/03/02 13:18 
2002/02/27 20:16 
2002/02/26 23:45 
2002/02/25 19:14 
2002/02/24 07:35 
2002/02/24 07:22 
2002/02/24 06:27 
2002/02/23 18:28 
2002/02/22 04:45 
2002/02/22 03:26 
2002/02/20 16:25 
2002/02/20 01:03 
2002/02/19 16:52 
2002/02/18 16:47 
2002/02/17 06:41 
2002/02/17 05:56 
2002/02/17 03:55 
2002/02/17 01:37 
2002/02/16 19:32 
2002/02/16 00:45 
2002/02/16 00:40 
2002/02/15 17:45 
2002/02/15 05:54 
2002/02/14 23:32 
2002/02/14 19:41 
2002/02/14 01:17 
2002/02/12 23:10 
2002/02/12 22:35 
2002/02/11 17:42 
2002/02/11 05:08 
2002/02/10 22:54 
2002/02/10 22:02 
2002/02/10 20:30 
2002/02/10 10:15 
2002/02/10 03:24 
2002/02/09 02:42 
2002/02/09 02:36 
2002/02/09 00:31 
2002/02/08 20:56 
2002/02/08 20:43 
2002/02/08 00:28 
2002/02/07 22:33 
2002/02/07 00:34 
2002/02/06 23:58 
2002/02/05 22:56 
2002/02/05 22:41 
2002/02/05 00:47 
2002/02/04 19:20 
2002/02/03 22:06 
2002/02/03 18:26 
2002/02/02 23:28 
2002/02/01 20:16 
2002/02/01 19:49 
2002/02/01 19:23 
2002/02/01 18:20 
2002/02/01 02:39 
2002/02/01 02:24 
2002/01/31 21:32 
2002/01/31 21:26 

↑recent | ↓old | 20 index | 100 index | 300 index | 記事5件 | 記事10件 | 記事20件 |最新5件 |FAQ | カテゴリ一覧 | Index |