Содержание

Диагностика Linux, информация об оборудовании

Инструменты системного администрирования

Цели оценки производительности

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

После определения рабочей схемы, в которой будут исследоваться системы, вы можете выбрать критерий, по которому системы будут оцениваться, и установить цели отбора на основе этого критерия. Основными критериями оценки производительности является время ответа и эффективность работы.

Связи между этими показателями достаточно сложны. В одних случаях значение одного показателя можно улучшить только за счет другого показателя. В других случаях определенные изменения могут улучшить обе величины. Довольно часто можно добиться высокой эффективности работы системы за счет увеличения времени ответа, либо уменьшения времени ответа за счет снижения эффективности работы. Оптимальной считается производительность, при которой значения обоих показателей приемлемы.

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

Стандартные тесты.

Тестом называется рабочая схема, позволяющая сравнивать производительность различных систем. Все стандартные тесты тщательно изучены разработчиками систем. Операционные системы, компиляторы и, в ряде случаев, аппаратное обеспечение, могли быть спроектированы так, чтобы такие тесты выполнялись с отличными показателями. К сожалению, реальные нагрузки редко повторяют алгоритмы и требования стандартного теста. Даже те тесты, которые были созданы на основе реальных приложений, часто упрощаются и стандартизируются таким образом, чтобы они могли выполняться на различных аппаратных платформах. Среды, в которых запускаются такие тесты, имеют ряд искусственных ограничений, которые были созданы для того, чтобы измерения давали воспроизводимые результаты. Любое утверждение типа "Система A выполняет тест MegaThings на 50 процентов быстрее, чем система B, поэтому система A будет выполнять ваши программы на 50 процентов быстрее, чем система B" выглядит довольно убедительно, но на самом деле не является точным. Настолько универсального теста не существует. Единственное применение стандартных тестов производительности - это грубый отбор систем для дальнейшего тщательного тестирования. Единственным решением является составление точного описания своей рабочей схемы и оценка скорости ее выполнения в различных системах.

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

Процессор: 90% Диск: 70% Память: 60%

Работа такой системы зависит от скорости процессора. Если вам удастся настроить рабочую схему таким образом, что значение показателя использования процессора сократится с 90 до 45 процентов, то вы вправе ожидать, что производительность возрастет в два раза. Однако на деле получится, что теперь производительность системы ограничена скоростью дискового ввода-вывода, а показатели использования ресурсов станут примерно следующими:

Процессор: 45% Диск: 90% Память: 60%

Снижение нагрузки на процессор позволяет программам быстрее передавать запросы на общение к диску, в результате чего может быть достигнуто ограничение на использование диска. В результате производительность возрастет всего лишь на 30 процентов, а не на 100.

Ресурсы, которые ограничивают производительность, есть всегда. Важно лишь то, достигнуты ли цели оптимизации с помощью имеющихся в наличии ресурсов.

Что подлежит проверке?

Сбор информации о дисковом вводе-выводе применяется при решении следующих задач:

Существует множество параметров сети, которые могут быть измерены специальными средствами, но только часть из этих параметров важны для настройки производительности.

В каких случаях нужно увеличить значения параметров очередей приема и передачи?

Ниже описаны случаи, в которых рекомендуется увеличить значения параметров очередей приема и передачи:

Сетевая подсистема Linux

Драйвер сетевой карты переправляет принятые пакеты в буфер сетевой подсистемы. Все передаваемые и принимаемые пакеты в сетевой подсистеме Linux хранятся и обрабатываются в специальных типовых буферах, называемых структурами буфера сокетов (struct sk_buff). Имеющиеся в памяти буферы организованы в очередь, которая управляется ОС. В случае, если нужно разместить поступивший в сетевую подсистему пакет, а существующие буфера заполнены данными, система выделяет в памяти место под новый буфер. Когда пакет обработан и надобности в нём больше нет, буфер не уничтожается, а помечается как свободный и может быть использован для размещения вновь поступившего пакета. Таким образом, обычно в системе существует некоторое количество свободных буферов, которые могут быть использованы для обмена пакетами с сетевыми интерфейсами.

Каждое ТСР- соединение требует наличия приемного и передающего буфера, тогда как для входящих UDP-соединений требуется только приёмный буфер.

Большой объём буфера часто может улучшить работу сети TCP, но также будет потреблять больше памяти.

Сетевые карты - устройства, управляемые прерываниями, то есть при получении пакета будет вызвано прерывание,так что драйвер знает, что есть пакет, который будет обработан. Как уже говорилось ранее, для загруженой системы, большой трафик, а соответственно и большое количество прерываний может стать проблемой. В Polling - режиме сетевая карта никогда не генерирует прерывание, а ждет, когда ОС опросит карту, накапливая тем временем информацю в буфере и надеясь, что он не переполнится. Этот Polling - драйвер обычно вызывается между двумя процессами, таким образом сокращающая время контекстного переключения. Хорошие драйвера могли бы переключать между IRQ и pollinfg режимами в случае если работа по прерываниям обнаруживает несколько раз подряд пустой буфер, и обратно, если буфер начинает переполняться.

Fedora p4-clockmod: Warning: EST-capable CPU detected

OC: Fedora 13 (Goddard) Linux 2.6.34.9-69.fc13.x86_64.

Утилита dmesg выводит для каждого ядра процессора сообщение:

p4-clockmod: Warning: EST-capable CPU detected.
The acpi-cpufreq module offers voltage scaling in addition of frequency scaling.
You should use that instead of p4-clockmod, if possible.

Это сообщение связано с CPU Frequency Scaling - утилитами для масштабирования частоты процессора, для анализа можно использовать powertop и cpufreq-info (из пакета cpufrequtils).

Модуль ядра p4-clockmod поддерживает только performance и powersave регуляторов. Для процессоров Intel рекомендуется модуль acpi-cpufreq. Варианты модулей можно найти здесь:

# ls /lib/modules/$(uname -r)/kernel/arch/x86/kernel/cpu/cpufreq/
acpi-cpufreq.ko  p4-clockmod.ko  pcc-cpufreq.ko  powernow-k8.ko  speedstep-lib.ko

Отключим p4-clockmod и загрузим acpi-cpufreq.

# modprobe -r p4-clockmod
# modprobe acpi-cpufreq
FATAL: Error inserting acpi_cpufreq (/lib/modules/2.6.34.9-69.fc13.x86_64/kernel/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.ko): No such device

Вывод ошибки говорит о том что у нас старый процессор и загрузка модуля acpi-cpufreq невозможно. Проверим какой процессор установлен:

# cat /proc/cpuinfo | grep "model name"
model name	: Intel(R) Xeon(R) CPU           E5410  @ 2.33GHz
model name	: Intel(R) Xeon(R) CPU           E5410  @ 2.33GHz
model name	: Intel(R) Xeon(R) CPU           E5410  @ 2.33GHz
model name	: Intel(R) Xeon(R) CPU           E5410  @ 2.33GHz
model name	: Intel(R) Xeon(R) CPU           E5410  @ 2.33GHz
model name	: Intel(R) Xeon(R) CPU           E5410  @ 2.33GHz
model name	: Intel(R) Xeon(R) CPU           E5410  @ 2.33GHz
model name	: Intel(R) Xeon(R) CPU           E5410  @ 2.33GHz

Странно по информации в интернете с этими моделями процессоров работать правильно умеет только модуль acpi-cpufreq. Пробуем загрузить модуль SpeedStep

# modprobe speedstep-lib

Загрузился без ошибок.

Отключаем загрузку модуля p4-clockmod, для этого нужно создать файл как указано ниже или дописать строку в файл blacklist.conf

# nano /etc/modprobe.d/blacklist-p4-clockmod.conf
blacklist p4-clockmod
Для работы модуля acpi-cpufreq в BIOS должны быть включена поддержка EIST(Enhanced Intel Speedstep Technology).