由于内容/proc
存在于内存中,重复读取其内容(例如每秒)的成本有多大?程序是否会像top
,htop
或atop
那样做(/proc
在每个给定的时间间隔内读取)?
答案1
/proc
在正常情况下,作为用户每秒读取一次并不昂贵。然而,有一些文件可能会很昂贵,因为它们需要内核端锁定,这可能会延迟其他事情。
出于多种原因,类似top
和的程序conntrack
将尝试使用其他方式(例如):netlink
/proc
是一种基于文本的方法,并非 100% 稳定。程序需要扫描文件并解析它,希望它不会跨内核版本而改变- 如前所述,某些 /proc 文件的读取成本可能很高,这也取决于它们的大小
- 该
netlink
方法可以返回比/proc
答案2
这可能不是您正在寻找的答案,是的,对于您的第一个问题,它仍然存在,但不认为它会很昂贵(变量太多)。对于第二个问题,我不知道。在监视系统负载时,您可能想尝试“测试”添加命令以清除正在运行的过程中的内存。
同步; echo 1 > /proc/sys/vm/drop_caches
同步; echo 2 > /proc/sys/vm/drop_caches
同步; echo 3 > /proc/sys/vm/drop_caches