Европейский Университет в Санкт-Петербурге
Опубликован: 19.10.2005 | Доступ: свободный | Студентов: 1764 / 170 | Оценка: 4.31 / 3.82 | Длительность: 18:28:00
Лекция 7:

Настройка производительности системы

Эффективное использование памяти и свопинга

Вопрос об установке в систему дополнительной оперативной памяти представляет собой классический вопрос выбора между ценой и производительностью. Если цена важнее производительности, то при нехватке памяти увеличивают размер раздела свопинга, если важнее производительность - увеличивают объем оперативной памяти. Если же нет возможности сделать ни то ни другое, новые процессы не смогут быть запущены при нехватке виртуальной памяти (это можно заметить по сообщениям "Not enough space" или "WARNING: /tmp: File system full, swap space limit exceeded").

Если виртуальной памяти достаточно, но оперативной памяти хронически не хватает, система будет в значительной степени занята пейджингом и не сможет нормально откликаться на запросы. В такой ситуации можно наблюдать невиданную дисковую активность, а сканер страниц будет занимать до 80% времени процессора.

Индикаторами нехватки памяти в системе являются активность сканирования страниц на предмет пометки для выгрузки и активная работа устройства, на котором расположен swap-раздел.

При этом высокая активность может быть временной или постоянной. В любом случае, имеет смысл уяснить ее причину.

Частота сканирования страниц

Повышенная частота сканирования страниц (scan rate) - главный показатель того, что в системе перестало хватать оперативной памяти. Для просмотра значения scan rate используйте команды

sar -g

или

vmstat

При анализе частоты сканирования с помощью vmstat имеет смысл запустить эту программу с параметром 60 для получения статистики каждые 60 секунд:

vmstat 60
kthr memory page disk faults cpu
r b w swap free re mf pi po fr de sr cd f0 s0 -- in sy cs us sy id
0 0 0 482100 7288 23 63 126 31 46 8 54 28 0 0 0 333 1519 327 5 11 84
0 1 0 470816 2060 0 26 1 51 103 0 123 240 0 0 0 960 969 649 4 92 4
...

Первую строку (суммарную статистику) можно игнорировать. Если показатель page/sr остается выше 200 страниц в секунду в течение длительного времени, это говорит о вероятной нехватке оперативной памяти в системе.

Постоянно низкое значение частоты сканирования страниц говорит о том, что системе хватает памяти. С другой стороны, высокое значение может быть вызвано активностью процесса (или нескольких процессов одновременно), читающего данные с диска или получающего их через сеть - эти данные не только кэшируются операционной системой, но и занимают место в памяти процессов, поэтому вполне могут вызвать активный пейджинг. Таким образом, не следует слепо полагаться на обсуждаемые рекомендации и считать 200 страниц в секунду абсолютной догмой индикации нехватки памяти: действуйте по ситуации, смотрите, какие процессы в действительности запущены и насколько они требовательны к памяти.

Активность свопинга

Если устройство, на котором находится область свопинга, загружено вводом-выводом, это говорит о нехватке памяти. Можно оценить дисковую активность с помощью программы iostat. В Solaris 2.6 и выше следует использовать команду

iostat -xPnce

для получения информации об активности передачи данных в/из конкретных разделов дисков, в Solaris 2.5.1 доступна команда

iostat -xc

которая позволяет получить статистику ввода-вывода только для целого диска (физического устройства), без деления на разделы.

Если своп-раздел расположен на отдельном диске (что неплохо), версия системыне важна, в противном случае в старых системах оценить реальную загрузку диска передачами данных свопинга тяжелее.

Можно также использовать

sar -d

или

vmstat

Длинная очередь страниц для выгрузки свидетельствует о необходимости нарастить оперативную память в системе.