Назад | Перейти на главную страницу

`echo :: memstat | mdb -k` очень медленно на некоторых машинах

Как сказано в названии, когда я бегу 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) имеют оптимизированную версию. См. Комментарии.