Этот вопрос относится к определению конкретных метрик, записанных в / proc / vmstat в RHEL 5.3.
Я использую nmon для мониторинга нагрузочного теста, который состоит из моделирования 2500 пользователей, выполняющих дневную рабочую нагрузку за один час. Недавно я заметил плохую производительность и сейчас пытаюсь диагностировать и исключать различные соображения.
Мы запускаем Red Hat Enterprise Linux Server версии 5.3 (Tikanga) на vmware ESX. Физический сервер, на котором я сосредоточен, и сервер приложений Oracle (он включает HTTP-сервер Apache и контейнер OC4J J2EE).
Диаграммы nmon, которые я просматриваю, показывают последовательное распределение по метрике pswpin. Обобщено как; min = 4312; макс = 245352; avg = 86734. Nmon показывает эти значения, измеренные в «кбайтах в секунду».
Следующие показатели равны нулю на протяжении всего теста;
Я не понимаю, что означает эта комбинация показателей, учитывая мое понимание разбиения по страницам и свопинга.
Мои вопросы):
На данный момент я пытаюсь исключить проблемы с виртуальной памятью как причину низкой производительности.
РЕДАКТИРОВАТЬ: Я нашел свидетельства большого количества вызовов fork () на протяжении всего теста. Я подозреваю демонов Apache. Но может ли создание процесса быть причиной этих показателей?
РЕДАКТИРОВАТЬ: Я добавил типичный образец вывода виртуальной машины из nmon. Извинения за плохое форматирование.
Заранее спасибо за любые ответы.
T0001 -1 22 -1 -1 -1 150 -1 -1 -1 5196046163 -1 0 30 100199751 3060 -1 0 -1 885 -1 -1 -1 46163 -1 -1 18 -1 828189171 -1 -1 3838 -1 -1 -1 -1 -1 165231
03:07:23 Paging and Virtual Memory nr_dirty nr_writeback nr_unstable nr_page_table_pages nr_mapped nr_slab pgpgin pgpgout pswpin pswpout pgfree pgactivate pgdeactivate pgfault pgmajfault pginodesteal slabs_scanned kswapd_steal kswapd_inodesteal pageoutrun allocstall pgrotated pgalloc_high pgalloc_normal pgalloc_dma pgrefill_high pgrefill_normal pgrefill_dma pgsteal_high pgsteal_normal pgsteal_dma pgscan_kswapd_high pgscan_kswapd_normal pgscan_kswapd_dma pgscan_direct_high pgscan_direct_normal pgscan_direct_dma
03:07:33 -1 99 -1 -1 -1 241 0 0 0 77526 0 0 0 824 0 0 0 0 0 0 0 0 77526 0 0 0 0 0 0 0 78216 0 0 0 0 0 0
03:07:43 -1 10 -1 -1 -1 262 0 0 0 21653 0 0 8 500 2 0 0 0 0 0 0 0 21653 0 0 0 0 0 0 0 17675 0 0 0 0 0 0
03:07:53 -1 69 -1 -1 -1 257 0 0 0 115744 0 0 0 724 0 0 0 0 0 0 0 0 115744 0 0 0 0 0 0 0 -79544 0 0 0 0 0 0
03:08:03 -1 69 -1 -1 -1 196 0 0 0 81202 0 0 0 628 0 0 0 0 0 0 0 0 81202 0 0 0 0 0 0 0 -18335 0 0 0 0 0 0
03:08:13 -1 81 -1 -1 -1 205 0 0 0 29051 0 0 0 352 0 0 0 0 0 0 0 0 29051 0 0 0 0 0 0 0 24449 0 0 0 0 0 0
03:08:24 -1 91 -1 -1 -1 131 0 0 0 122795 0 0 0 1172 0 0 0 0 0 0 0 0 122795 0 0 0 0 0 0 0 9640 0 0 0 0 0 0
03:08:34 -1 6 -1 -1 -1 182 0 0 0 74914 0 0 4 372 1 0 0 0 0 0 0 0 74914 0 0 0 0 0 0 0 -24477 0 0 0 0 0 0
03:08:44 -1 38 -1 -1 -1 200 0 0 0 42957 0 0 4 464 1 0 0 0 0 0 0 0 42957 0 0 0 0 0 0 0 42778 0 0 0 0 0 0
03:08:54 -1 6 -1 -1 -1 141 0 0 0 89751 0 0 36 1000 9 0 0 0 0 0 0 0 89751 0 0 0 0 0 0 0 -9665 0 0 0 0 0 0
03:09:04 -1 6 -1 -1 -1 171 0 0 0 74740 0 0 4 516 1 0 0 0 0 0 0 0 74740 0 0 0 0 0 0 0 -24583 0 0 0 0 0 0
03:09:14 -1 10 -1 -1 -1 179 0 0 0 56063 0 0 0 500 0 0 0 0 0 0 0 0 56063 0 0 0 0 0 0 0 56384 0 0 0 0 0 0
03:09:24 -1 6 -1 -1 -1 74 0 0 0 75623 0 0 0 696 0 0 0 0 0 0 0 0 75623 0 0 0 0 0 0 0 -23994 0 0 0 0 0 0
03:09:34 -1 6 -1 -1 -1 137 0 0 0 75466 0 0 8 972 2 0 0 0 0 0 0 0 75466 0 0 0 0 0 0 0 -23837 0 0 0 0 0 0
03:09:44 -1 3 -1 -1 -1 153 0 0 0 72535 0 0 4 460 1 0 0 0 0 0 0 0 -927465 0 0 0 0 0 0 0 -26880 0 0 0 0 0 0
03:09:54 -1 6 -1 -1 -1 170 0 0 0 56775 0 0 0 284 0 0 0 0 0 0 0 0 56775 0 0 0 0 0 0 0 56895 0 0 0 0 0 0
03:10:04 -1 6 -1 -1 -1 166 0 0 0 74756 0 0 0 1116 0 0 0 0 0 0 0 0 74756 0 0 0 0 0 0 0 -24568 0 0 0 0 0 0
03:10:14 -1 6 -1 -1 -1 148 0 0 0 78043 0 0 0 432 0 0 0 0 0 0 0 0 78043 0 0 0 0 0 0 0 -21241 0 0 0 0 0 0
03:10:24 -1 64 -1 -1 -1 189 0 0 0 64057 0 0 0 412 0 0 0 0 0 0 0 0 64057 0 0 0 0 0 0 0 60788 0 0 0 0 0 0
pgpgin - Number of kilobytes the system has paged in from disk per second.
pgpgout - Number of kilobytes the system has paged out to disk per second.
pswpin - Number of kilobytes the system has swapped in from disk per second.
pswpout - Number of kilobytes the system has swapped out to disk per second.
Я на 87% уверен, что каждая страница, увеличивающая счетчик pswpin, должна также увеличивать pgpgin. Вы говорите, что это не так. Хммм.
Это может быть слишком упрощенно для проверки (извините!), Но ... Вы на 200% уверены, что наблюдаемая вами метрика - это pswpin, а не pgpgin? Последнее будет означать: процесс читает некоторые файлы.
Другое объяснение заключается в том, что приложение было сильно заменено перед тестом, после чего система получила много свободной памяти. И во время теста вы наблюдаете, как он «оживает» (постоянно меняет местами - по мере выполнения кода), без чтения / записи каких-либо файлов. Но почему в таком сценарии не увеличивается pgpgin вместе с pswpin, мне непонятно.
Может быть, ваши диаграммы подправлены, поэтому pswpin вычитается из pgpgin? Одним из аргументов в пользу этого является то, что обе метрики обычно находятся на страницах (в / proc / vmstat), и вы конвертируете их в КБ / с.
EDIT: это может быть связано с ESX. Мое безумное предположение, что это побочный эффект либо всплытия, либо прозрачного совместного использования страниц (TPS). Вы можете анализировать через esxtop на ESX? Вот это другое руководство по esxtop.
EDIT: ваша статистика nmon кажется сломанной. Прежде всего, имен столбцов больше, чем фактических показателей (т.е. у вас нет данных для последнего столбца pgscan_direct_dma
). В загруженной системе должно быть много значений -1 или 0 для метрик, не только pgpgin отсутствует. Pgsteal и pgrotated есть, но иногда отрицательные, что невозможно.
Итак, посмотрите / proc / vmstat, что там происходит? И используйте другие инструменты для подтверждения статистики nmon.