重复读取 /proc 是否昂贵?

重复读取 /proc 是否昂贵?

由于内容/proc存在于内存中,重复读取其内容(例如每秒)的成本有多大?程序是否会像top,htopatop那样做(/proc在每个给定的时间间隔内读取)?

答案1

/proc在正常情况下,作为用户每秒读取一次并不昂贵。然而,有一些文件可能会很昂贵,因为它们需要内核端锁定,这可能会延迟其他事情。

例如,这可能是这样的情况:https://serverfault.com/questions/943866/proc-sys-net-netfilter-nf-conntrack-count-extreme-drop-when-reading-proc-net-n

出于多种原因,类似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

相关内容