`echo :: memstat | mdb -k“在某些机器上很慢

正如标题所述,当我运行echo ::memstat | mdb -k echo ::memstat | mdb -k在某些机器上,这是非常慢的。 我的munin图表显示,当我经常运行这个时候,CPU负载大大增加。 我打算使用::memstat作为munin图的input,所以需要经常运行。

当进程正在运行时,我在prstat输出中看到:

  PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP 6865 root 14M 12M cpu2 0 0 0:00:26 23% mdb/1 6868 root 14M 12M cpu1 0 0 0:00:26 23% mdb/1 

正如你所看到的,它已经运行了26秒。 监视prstat在进程运行时显示CPU使用率不断增加。 它需要大约30秒完成。

在另一台机器上(硬件方面更为强大),运行速度更快。 重点是,它比我预期的硬件规格(8GB vs 12GB内存,8核心与4核心, SunOS 5.10 Generic_147441-01 i86pc i386 i86pcSunOS 5.10 Generic_127128-11 i86pc i386 i86pc )的运行速度要快得多。 但这不是真正的重点。 我的主要问题是, echo ::memstat | mdb -k echo ::memstat | mdb -k需要30秒才能完成。

有人能解释一下这里发生了什么吗? 什么可以解释“缓慢”?

老版本的Solaris有更慢的::memstat操作,主要是因为需要大量的TLB击落。 (还有一个事实是没有人打算对其进行configuration和优化。)较新的版本(Solaris 10 Update 8)有一个优化的版本。 看到评论。