在FreeBSD上放置caching内存

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

在我的networking服务器上; 我使用下面的命令来删除与cronjobcaching的内存;

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

但是,这个命令在我的Freenas服务器上不起作用。 我如何将caching内存放到FreeBSD 8.2上的FreeNAS盒子上

谢谢

首先,CentOS是一个Linux操作系统。 Linux和FreeBSD是完全不同的(除了从BSD借来的BSD,做一个完整的操作系统,还没有用自己的代码代替)。

你真的不需要释放caching的内存,可能你不需要在你的Cent盒上,但是它确实取决于你正在运行的内容。 当你有一个真正的具体和充分的理由时,你应该只是与内存pipe理混乱。

你想要在生产环境中这样做的唯一原因就是如果你有一个应用程序,那么这个应用程序会根据自己的内存使用情况来使用它。 我不知道这样做的任何* nix程序,但它们可能在外面。 即使情况如此,您应该在系统caching上使用智能内存限制,而不是手动或定期清除它们。

刷新caching唯一的其他常见原因是基准testing和testing目的。

如果上述两个中的一个不适用,请不要冲洗caching。

更新:
除了下面的评论之外,让我用一个简单的testing锤击性能差异。

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字节/秒)

第一次读取testing文件没有被caching; 第二次它已经在caching中,所以读取操作完成了四倍。 在一个典型的服务器中,90%的读取量是磁盘上1%的文件/数据。 如果这1%的大部分可以留在caching内存中,那么磁盘读取速度通常会提高4倍(至less在我的服务器上)。

对于那些因为testing原因需要放弃caching的人来说,看起来在FreeBSD中放弃caching并不是一个简单的方法。

通常oscaching是文件系统文件(或mmap文件)的caching。 这个文件的caching可以通过卸载相应的分区来清除。

资料来源: http : //unix.derkeiler.com/Mailing-Lists/FreeBSD/hackers/2010-03/msg00244.html

只是为了澄清卸载解决scheme :试图卸载文件系统刷新并清除该文件系统的caching,即使卸载本身不必成功。

 cd /mnt umount /mnt 

umount失败,因为当前的工作目录保持繁忙,但是/mnt任何caching数据都被清除

例:

 root:/usr/home/user> dd if=test of=/dev/null bs=1048576 count=1000 1048576000 bytes transferred in 10.012924 secs (104722255 bytes/sec) root:/usr/home/user> dd if=test of=/dev/null bs=1048576 count=1000 1048576000 bytes transferred in 0.290137 secs (3614071699 bytes/sec) root:/usr/home/user> umount /usr umount: unmount of /usr failed: Device busy root:/usr/home/user> dd if=test of=/dev/null bs=1048576 count=1000 1048576000 bytes transferred in 10.149973 secs (103308253 bytes/sec)