问题描述
从以前有关该主题的问题中,我发现了两种获取内存使用率的方法:
-
echo "::memstat" | mdb -k
-
a=$(/usr/sbin/prtconf | /usr/bin/awk '/Memory/ {print $3*1024}'); vmstat 1 2 | tail -1 | awk "{print 100 - (\$5 / $a) * 100}"
我选择第一个是因为我宁愿依靠现有工具,也不愿自己计算。但是,在某些系统上,“ :: memstat”的输出格式与其他格式略有不同(标头以“用法类型/子类型”开头,而不是“页面摘要”等)。这是一个问题,因为我正在用代码对其进行解析。
我可以修复解析器以处理这两种变体,希望隐藏起来没有其他变体。
有人能建议一种更好的方法,而不是那么脆弱吗?
解决方法
最终在Solaris documentation中找到了答案。
sysconf为总页面提供_SC_PHYS_PAGES,为可用页面提供_SC_AVPHYS_PAGES