我的情况非常简单:我备份了一些文档并将它们放在 NAS 上,因为我宁愿传输一个大文件而不是数百万个小文件,所以我创建了一个 tar
\n\ntar cf backup/2013-07-12-pictures.tar Pictures\n
Run Code Online (Sandbox Code Playgroud)\n\n我的Pictures
目录包含大约 12GB 的数据,并且我的缓存逐渐填满。如果我压缩更多文件(例如我的项目,等等),不需要很长时间,并且我所有的32GB RAM都会被使用:
sheldor:~$ free -g\n total used free shared buffers cached\nMem: 31 31 0 0 0 27\n-/+ buffers/cache: 2 28\nSwap: 29 0 29\n
Run Code Online (Sandbox Code Playgroud)\n\n此时,虽然鼠标和系统通常负责,但启动程序(从磁盘读取)需要很长时间。字面上的年龄:我有一个 SSD 并启动 Chrome,通常需要一秒钟,现在大约需要 2 分钟。
\n\n现在你会在互联网上找到所有关于清除缓存不好的帖子等等。在这里,在Ask Ubuntu上你也可以找到这样的帖子,它通过提供命令救了我的命
\n\nsudo sync && sudo sysctl -w vm.drop_caches=3\n
Run Code Online (Sandbox Code Playgroud)\n\n如果您仔细阅读评论,您会发现例如这里:
\n\n\n\n\n这不是问题,这就是页面缓存的工作原理。它将尽可能长时间地缓存内容,但当其他应用程序的内存压力增加时会自动释放项目。无需手动清除。\xe2\x80\x93 铯 11 年 11 月 22 日 16:08
\n
什么?我的系统(Intel Core i7 3.50GHz \xc3\x97 8、32GB RAM、NVidia Gtx 590)在简单的 tar 后被冻结。我的意思是,在我的缓存自动释放之前我必须施加多大的压力?
\n\n问题:有没有办法调整设置,以便更频繁地清除我的缓存?或者这只是我必须忍受的事情?
\n我同意 Linux 中的缓存处理远非最佳。事实上,在许多方面,Linux 对于服务器/工作站的使用仍然比桌面使用更优化。有关 CPU/IO 调度的类似问题,请参阅此问答。
话虽如此,有一些解决方案可以缓解这个问题。您可以手动清除缓存或设置 cronjob,就像user197590指出的那样。另一种方法是禁用特定应用程序的缓存生成。您可以使用该nocache
实用程序来执行此操作。目前它仅在13.10 存储库中可用,但我能够在 12.04 上安装 Saucy 包,没有任何问题。
nocache
使用起来相当简单。您可以将其添加到要在没有缓存的情况下执行的任何命令之前,例如:
nocache tar cf backup/2013-07-12-pictures.tar Pictures
这不是一个因果解决方案,但它绝对可以治愈过度缓存的症状。
归档时间: |
|
查看次数: |
2774 次 |
最近记录: |