Solaris中的物理内存利用率

问题描述

从以前有关该主题的问题中,我发现了两种获取内存使用率的方法

  1. echo "::memstat" | mdb -k
  2. 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