在 FreeBSD 上删除缓存内存

use*_*698 6 freebsd

我使用基于操作系统版本 FreeBSD 8.2-RELEASE-p6 构建的 FreeNAS 服务器。我在安装了 8GB 物理内存的盒子上使用带有 13TB HDD 的 ZFS 文件系统。它在处理某些请求时几乎使用了安装的所有 RAM。但是,它在空闲时间仍然使用相同数量的内存。所以这有时会成为一个问题。

在我的 centos 网络服务器上;我使用以下命令通过 cronjob 删除缓存内存;

sync; echo 3 > /proc/sys/vm/drop_caches

但是,此命令在我的 Freenas 服务器上不起作用。如何在我的 FreeNAS 机器上删除缓存内存,它是基于 FreeBSD 8.2 构建的

谢谢

Chr*_*s S 7

首先,CentOS 是一个 Linux 操作系统。Linux 与 FreeBSD 完全不同。

你真的不需要释放缓存的内存,可能你不需要在你的 Cent 盒子上,但这确实取决于你在它上面运行的内容。只有当你有一个非常具体和充分的理由时,你才应该搞乱内存管理。

您希望在生产设备上执行此操作的唯一原因是,如果您有一个应用程序,它的内存使用量取决于可用内存量。我不知道有任何 *nix 程序可以做到这一点,但它们可能就在那里。即使是这种情况,您也应该对系统缓存使用智能内存限制,而不是手动或定期刷新它们。

刷新缓存的唯一另一个常见原因是用于基准测试和测试目的。

如果上述两种情况之一不适用,请不要刷新缓存。

更新:
除了下面的评论,让我通过一个简单的测试来敲定性能差异。

dd if=/dev/zero of=/path/to/test.1g bs=1m count=1024
1073741824 字节在 20.998713 秒内传输(51133697 字节/秒)

dd if=/path/to/test.1g of=/dev/null bs=1m
1073741824 字节在4.496601 秒内传输(238789654 字节/秒)

dd if=/path/to/test.1g of=/dev/null bs=1m
1073741824 字节在1.071374 秒内传输(1002210138 字节/秒)

第一次读取测试文件时没有缓存;第二次它已经在缓存中,所以读取操作完成的速度快了四倍。在典型的服务器中,90% 的读取是磁盘上 1% 的文件/数据。如果这 1% 中的大部分可以保留在缓存内存中,则磁盘读取速度通常会快 4 倍(至少在我的服务器上)。

  • “它的内存使用让我很恼火”<-- 这不是搞砸内存的好理由。说真的,你不应该这样做。FreeBSD 基于 4.4BSD,而不是贝尔实验室的 Unix。维基百科有一个很好的图表,列出了各种 *nix 的 [遗产](http://en.wikipedia.org/wiki/File:Unix_history-simple.svg)。 (2认同)
  • @user1066698 因为缓存内存**帮助**您的系统运行得更快。空闲内存不是*好*。 (2认同)