Как сказано в названии, когда я бегу echo ::memstat | mdb -k
на некоторых машинах это очень медленно. Мои графики munin показывают значительно увеличенную загрузку процессора, когда я запускаю это регулярно. Я собираюсь использовать ::memstat
в качестве входных данных для графиков мунинов, поэтому его нужно запускать часто.
Пока процесс запущен, я вижу это в 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
показывает постоянно увеличивающееся использование ЦП во время выполнения процессов. Для завершения требуется около 30 секунд.
На другой машине (конечно, с точки зрения оборудования она мощнее) она работает много Быстрее. Дело в том, что он работает намного быстрее, чем я ожидал, сравнивая характеристики оборудования (8 ГБ против 12 ГБ памяти, 8 ядер против 4 ядер, SunOS 5.10 Generic_147441-01 i86pc i386 i86pc
против SunOS 5.10 Generic_127128-11 i86pc i386 i86pc
). Но дело не в этом. Моя основная проблема в том, что echo ::memstat | mdb -k
занимает 30 секунд.
Может кто-нибудь объяснить, что здесь происходит? Чем можно объяснить «медлительность»?
Более старые версии Solaris работают намного медленнее. ::memstat
работы, в основном из-за большого количества требуемых перестрелок TLB. (И тот факт, что никто еще не позаботился о профилировании и оптимизации.) Более новые версии (Solaris 10 Update 8) имеют оптимизированную версию. См. Комментарии.