首先,我知道 Linux 如何使用内存进行磁盘缓存(http://www.linuxatemyram.com/),但这似乎有些不同。
首先,我运行 htop。所有正在运行的进程的总内存使用量 %s 刚好超过 50%,当我将所有正在运行的进程的实际内存使用量加起来时,结果也是一样的。但是,htop 列出的我的内存使用量为 1381/1536MB。
环顾四周,我发现我应该检查 free -m,看看我的一些内存是否被用于磁盘缓存。唉,free 只显示以下内容:
total used free shared buffers cached
Mem: 1536 1381 154 0 0 0
-/+ buffers/cache: 1381 154
Swap: 0 0 0
我现在很困惑。这些额外的内存都用到哪里去了?Linux 是不是“吃掉了我的 RAM”?
编辑:抱歉造成一些混淆,此 VPS 在 OpenVZ 上运行。
答案1
您的交换分区已禁用。如果您确实配置了交换分区,则使用
swapon -a
以启用它。如果您忘记创建交换分区,那么您可能应该创建并激活它。
dd if=/dev/zero of=/swap bs=1M count=1024
其中 1024 表示您需要多少交换内存。对于台式机系统,我建议您使用两倍的内存。现在您应该“格式化”交换文件。
mkswap /swap
现在你应该启用它:
swapon /swap
现在运行 free -m 您应该会看到免费的交换。
如果希望在启动时启用交换,请在 /etc/fstab 中添加以下行
/swap none swap sw 0 0
如果您仍然有可用磁盘,则配置一个交换分区并重新运行我的 mkswap 指令并使用分区的 id 更改 /swap。