`echo ::memstat | mdb -k` 在某些机器上非常慢

`echo ::memstat | mdb -k` 在某些机器上非常慢

正如标题所述,当我echo ::memstat | mdb -k在某些机器上运行它时,它非常慢。当我定期运行它时,我的 munin 图表显示 CPU 负载大幅增加。我打算将其用作::memstatmunin 图表的输入,因此需要频繁运行它。

当进程运行时,我在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 核 vs 4 核SunOS 5.10 Generic_147441-01 i86pc i386 i86pcvs SunOS 5.10 Generic_127128-11 i86pc i386 i86pc)所预期的要快得多。但这不是真正的重点。我的主要问题是它echo ::memstat | mdb -k需要 30 秒才能完成。

有人能解释一下这是怎么回事吗?什么可以解释“缓慢”?

答案1

旧版本的 Solaris 运行速度较慢::memstat,主要是因为需要执行大量 TLB 击落。(而且事实上还没有人费心对其进行分析和优化。)较新版本(Solaris 10 Update 8)有一个优化版本。请参阅评论。

相关内容