Solaris 中的物理内存利用率

Physical Memory Utilization in Solaris

根据之前关于该主题的问题,我发现了两种获取内存使用情况的方法:

  1. echo "::memstat" | mdb -k
  2. a=$(/usr/sbin/prtconf | /usr/bin/awk '/Memory/ {print *1024}'); vmstat 1 2 | tail -1 | awk "{print 100 - ($5 / $a) * 100}"

我选择了第一个,因为我宁愿依赖现有工具也不愿自己计算。但是,在某些系统上,“::memstat”的输出格式与其他系统略有不同(Header 以“Usage Type/Subtype”而不是“Page Summary”等开头)。这有点问题,因为我在代码中解析它。

我可以修复解析器来处理这两个变体,希望没有其他隐藏的变体。

谁能提出一个不会那么脆弱的更好方法?

最终在Solaris documentation中找到了答案。

sysconf 提供 _SC_PHYS_PAGES 总页数和 _SC_AVPHYS_PAGES 可用页数