スワップ領域を使用せずにRAMより大きいファイルを開きます。

スワップ領域を使用せずにRAMより大きいファイルを開きます。

私はいくつかの実験をして、Linuxでメモリがどのように管理されているかを読んでいる間にこの質問をしました。

私は512M RAMと1G SWAPを備えた64ビットCentos 6.5システムを持っています。 1GBファイル "/mytest"(を使用して)を作成してdd使用しましたvi。ファイルが完全に開いた後、別の端末を開いてメモリ使用量を確認しました。予想通り、出力がメモリ使用量に基づいてソートされると、vi一番上に表示されます。topそこでスワップ使用量が増えると予想して確認しましたが、驚くべきことにfree -mスワップ使用量はゼロでした。開いたファイルのサイズはRAMサイズの2倍なので、ファイルはどこにメモリに保存されますか?

[root@server ~]# ps aux | grep mytest
root     18940  8.5 53.3 287880 267156 pts/0   S+   09:25   0:28 vi /mytest
root     18976  0.0  0.0    364   144 pts/1    R+   09:31   0:00 grep mytest

[root@server ~]# ll -h /mytest
-rw-r--r-- 1 root root 1000M Oct 24 09:25 /mytest

[root@server ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           489        481          7          0          2        140
-/+ buffers/cache:        337        151
Swap:         1023          0       1023

Swappinessがオンになっており、デフォルトは60です。top出力では、VIRTとRESのメモリ使用量は予想どおり約1Gに達しません。

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
18940 root      20   0  281m 260m 1172 S  0.0 53.3   0:28.85 vi /mytest

sleepスクロール時にのみ(他の端末で使用)、スワップ使用量が上がっていることを確認するために開かれた1Gファイルをスクロールすることもありましたが、スワップ使用量はまだゼロでした。今、私はメモリとスワッピングがどのように機能するかについての全体的な理解が間違っているようです。ファイルサイズがメモリサイズの2倍の場合、誰かがこの大容量ファイルをメモリに保存する方法を教えてください。

ベストアンサー1

RAMを使用するには、「薄暗い」エディタを使用する必要があります。 VIが「スワッピング」を実行しているようです。通常、Viはバッファを一時停止するためにファイルを使用します。

このサイトで他の回答を確認したい場合があります。例えば。 : 大容量ファイルにviを使用するとどうなりますか?

おすすめ記事