在我的系统上,我有一个日志文件,每小时轮换和上传一次。此文件写入量很大,仅在轮换和上传时才需要读取。
我的系统内存cached
不断增加,直到分配了整个 RAM,然后操作系统清除了其中的一部分。我想改进这个过程,我怀疑缓存不断增加是因为我一直在写入这个日志文件。
我需要找到一种方法来在上传文件后清除文件的缓存,这样我就可以告诉操作系统不再需要它并让它释放内存。
据我所知,echo 3 > /proc/sys/vm/drop_caches
清除所有缓存内存。对吗?
有没有办法可以仅清除一个文件的缓存内存?
答案1
一般而言,最好让操作系统自己管理内存。用作缓存的内存将在进程请求时返回给进程。
只有当您的系统经常使用大量内存用于进程或超出该范围并进行交换时,您才需要开始采取行动。您应该设置监控来提醒您这些问题。
不建议使用/proc/sys/vm/drop_caches
,除非你知道自己在做什么。相关内核文档有话要说
使用此文件可能会导致性能问题。由于它会丢弃缓存的对象,因此可能需要大量 I/O 和 CPU 来重新创建丢弃的对象,尤其是在这些对象使用率很高的情况下。因此,不建议在测试或调试环境之外使用。