Страница:
ров.
Таблица 8.3
Зависимость ключевых параметров от размера памяти
+----------------+--------------------------------------------+
| Параметр | Размер памяти |
| +------------+----------------+--------------+
| | 2 M | 3 M | 4 M |
+----------------+------------+----------------+--------------+
|NBUF | 250 | 300 | 400 |
|NHBUF | 64 | 64 | 128 |
|NCALL | 30 | 40 | 50 |
|NINODE | 150 | 200 | 300 |
|NS5INODE | 150 | 200 | 300 |
|NFILE | 150 | 200 | 300 |
|NREGION | 210 | 250 | 300 |
|NCLIST | 120 | 140 | 170 |
|NPROC | 100 | 120 | 150 |
+----------------+------------+----------------+--------------+
Организация файловой системы
В этом разделе описываются действия, предпринимаемые для
уменьшения числа обращений к файлам. При использовании файловой
системы блоки отдельных файлов имеют тенденцию распространяться
по всему диску, и следовательно ввод/вывод становится менее эф-
фективным. Из-за этого распространения образуется плохой порядок
блоков и плохая организация каталога.
- 8-12 -
Организация списка свободных областей в файловой структуре
Свободные блоки размещаются файловой структурой таким обра-
зом, чтобы обеспечить эффективное проведение операций чтения и
записи файлов. Список свободных областей создается тогда, когда
создается файловая система с помощью команды mkfs(ADM). Однако,
когда Вы начинаете изменять файлы(т.е. менять их размеры или пе-
ремещать их), эффективность работы уменьшается. Когда файлы соз-
даются первый раз, они состоят из блоков, взятых из списка сво-
бодных областей. Некоторые из блоков распределяются файлам не по
порядку. Как Вы можете видеть, список свободных областей также
распространяется по всему диску, как и блоки распределенные фай-
лам и освобожденные блоки.
Организация каталога
Организация каталогов также влияют на производительность
операций ввода/вывода. Проблема возникает во время перемещения
пользователем своих файлов. Когда файл удаляется из каталога,
тогда индексный дескриптор этого файла аннулируется. Из-за этого
образуется неиспользуемое место для этого дескриптора; через неко-
торое время число таких пустых мест становится слишком большим.
Если Вы имеете каталог для 100 файлов и удаляете первые 99
файлов, то этот каталог содержит 99 пустых неиспользуемых мест, по
16 байтов каждое, которые предшествуют активному индексному дес-
криптору файла. Разумеется, пока каталог не реорганизован на диске,
он будет сохранять тот максимальный размер, который когда-то получил.
Восстановление хорошей организации файловой системы
Не существует автоматических путей решения этих проблем;
однако, Вы можете вручную реорганизовать файловую систему. Су-
ществует несколько путей реорганизации. Учтите, что в случаях 1
и 3 , приведенных ниже, файловая система(ы) должна(ы) быть раз-
монтирована(ы).
1. Для реорганизации списка свободных участков, активизи-
руйте команду fsck(ADM), используя опцию -s
________________________________________________________________
Примечание
Реорганизация списка свободных участков не поддерживает
файловые системы AFS.
________________________________________________________________
- 8-13 -
2. Для реорганизации отдельных структур каталога, исполь-
зуйте команду cpio(C) -pdm для копирования их во времен-
ное новое место, удалите эти первичные структуры, а
затем используйте команду cpio -pdm для копирования их
обратно на первоначальное место.
Используйте следующую командную строку:
Ъ2find Ъ1sourcedirЪ2 -print | cpio -pdm destdir
где sourcedir - имя исходного каталога; destdir - имя
каталога, в который Вы перемещаете конкретную структу-
ру. После получения подтверждения того, что вся структу-
ра полностью скопирована, удалите полностью исходный ка-
талог. Наконец, произведите обмен указанных в
командной строке, описанной выше, имени каталога, в
который было проведено перемещение исходного каталога,
на имя исходного каталога, и выполните эту команду
снова. После удаления временного каталога, структура
Вашего исходного каталога будет реорганизована.
3. Для реорганизации файловой системы полностью использует-
ся выбор sysadmsh "Backups(Создание резервных копий)"
для выполнения незапланированного дублирования с нулевым
уровнем файловой системы. (Подробное описание дано в
разделе "Создание резервных копий файловых систем" этого
руководства). Когда операция создания резервной копии
будет завершена, следуйте инструкциям по восстановлению
всей файловой системы.
4. Если Вы имеете более одного диска, установите равновесие
распределения файловых систем.
- 8-14 -
________________________________________________________________
Определение эффективного способа использования системы
После того, как произведена настройка ядра и функций систе-
мы, и организована файловая система, следующим шагом в увеличе-
нии производительности системы будет выполнение служебных функ-
ций и проверка того, уменьшилось ли время первоначальной
загрузки. Ответственный администратор системы должен проверять
следующее :
* не смешиваются менее важные работы с более важными
* устранены ли ненужные действия
* спланированы ли определенные работы для времени, когда
система не занята
* эффективны ли определенные пользователем элементы, такие
как Ъ1profileЪ3 и $PATH
Команда ps
Команда ps(C) используется для получения информации об ак-
тивных процессах. Команда дает "моментальную" картину того, что
сейчас происходит, которая бывает очень полезна, когда Вы пытае-
тесь понять, какие процессы происходят в системе. Она вероятно
изменится к тому времени, когда появится вывод команды; однако,
Вас могут заинтересовать значения TIME (минуты и секунды работы
процессора для этих процессов) и STIME (время начала процесса).
Когда Вы определите "ворующий" процесс (тот, который захва-
тывает все больше ресурсов системы за период времени, в течение
которого Вы наблюдаете за ним), Вы должны определить, кто его
запускает. Возможно, что такой процесс должен быть немедленно
остановлен командой kill(C). Если это действительно выходящий из
под контроля процесс, то он будет продолжать поглощать системные
ресурсы, пока система не зависнет. Для такого "неубиваемого"
процесса единственным средством прекратить его является перезаг-
рузка.
Когда Вы заметите процесс, который выполняется слишком дол-
го, Вы можете использовать команду cron(C) для того, чтобы вы-
полнить задание в течение превышающего времени.
- 8-15 -
Переменные пользователя $PATH
$PATH просматривается при каждом выполнении команды. Перед
отображением на экран сообщения "not found(не найдено)" система
должна просмотреть каждый каталог $PATH. Этот просмотр требу-
ет времени как процессора, так и диска. Если диск или процессор
являются узким местом в работе системы, то изменения связанные с
ними, могут улучшить производительность системы.
Вы должны проверить среди пользовательских переменных:
* Эффективность пути
$PATH читается слева направо, так чтобы определить место-
нахождение команды в первом из перечисленных путей (/bin
и /usr/bin). Сделать так, чтобы некоторые каталоги не
повторялись больше одного раза для некоторой команды.
* Удобство и человеческий фактор
Пользователи могут отдать предпочтение просмотру текущего
каталога перед тем как просматривать их из перечислен-
ных путей (:/bin).
* Длину пути
В основном, переменная $PATH должна иметь как можно мень-
ше элементов.
* Ъ1Просмотр больших Ъ3каталогов
По возможности большие каталоги должны быть обойдены.
Поместите большие каталоги в конец переменной $PATH.
- 8-16 -
________________________________________________________________
Использование средств измерения производительности для ди-
агностирования эффективности системы
Операционная система содержит ряд средств для измерения
производительности системы. Администратор системы может исполь-
зовать эти средства для локализации области проблемы. В этом
разделе описаны следующие средства измерения продуктивности:
sar работает с внутренними системными регистрами совокуп-
ной деятельности системы и подготавливает отчеты по
различным аспектам работы системы.
timex подготавливает отчеты по работе системы и по процес-
сам во время выполнения команды или программы.
Внутренняя активность измеряется числом содержащихся в ядре
счетчиков. Каждый раз при выполнении операции наращивается соот-
ветствующий счетчик. Утилита sar(ADM) используется для диагнос-
тирования системных проблем. Двумя наиболее критическими для те-
кущего контроля областями являются использование памяти и
центрального процессора. Это средство позволяет Вам проверить
значение этих счетчиков. В следующих разделах приведены примеры
использования этих средств. В следующих разделах также обсужда-
ются функции, которыми можно управлять с помощью утилиты sar. В
этом разделе описываются опции sar c анализом выходной информа-
ции по измерениям, полученных с помощью этих опций. Sar можно
использовать для того, чтобы собирать данные о работе системы, а
также для выбора того, что было накоплено в информационных фай-
лах, созданных sa1 и sa2 . sa1 и sa2 инициируются элементами,
помещенными в файл crontab sys.
Основной синтаксис команды sar имеет следующий вид:
Ъ2 sar <опция> t
где
t выбранный интервал в секундах, может принимать
значения 5 и более.
Вы должны обеспечить работу системы в течении выбранного
интервала времени, если Вы хотите видеть данные в реальном вре-
мени; в противном случае будут отображены ранее собранные данные
из каталога /usr/adm/sa. Для получения большей информации по
более полному об'ему собираемых данных смотрите руководство по
команде sar(ADM).
- 8-17 -
Эти примеры даны для системы с 2 мегабайтами основной памя-
ти и жестким диском емкостью 30 мегабайт. Выходная информация
команды имеет типичные значения для пользовательской загрузки
системы. Значения, которые Вы получаете, могут отличаться от
значений в примерах, в зависимости от Вашего программного прило-
жения или контрольной задачи. Во время настройки системы реко-
мендуется использовать контрольную задачу или ставить систему
под стандартную нагрузку, чтобы настраивать систему непосредс-
твенно на Ваше конкретное применение.
Использование памяти: буферы и страницы
Определяя число системных дисковых буферов (или явно ис-
пользуя утилиту configure, или неявно, используя значения по
умолчанию), эффективно разделите доступную память между двумя
пулами: дисковым буферным пулом и страничным пулом. Страничный
пул содержит программы, которые должны выполняться, и кэш-копии
недавно использованных страниц программ. Если страничный пул
слишком мал для загрузки, возложенной на систему, то система бу-
дет постоянно обменивать страницы туда и обратно, чтобы только
поддержать текущие процессы.
Если страничный пул только слегка занижен в размере, эффект
будет виден не в увеличенном обмене, а в уменьшении работоспо-
собности кэша при повторном прогоне одних и тех же программ. Это
означает, что страниц достаточно для эффективной обработки теку-
щих программ, но их не хватает для сохранения часто используемых
страниц в памяти для того, чтобы имелся потенциальный доступ к
ним.
При использовании команды sar Вы можете определить, сколько
программ должны участвовать в обмене в течении данного интервала
времени. Если очевиден чрезмерный свопинг, Вы можете перераспре-
делить память так, чтобы увеличить страничный пул. (См. "Сво-
пинг: sar -w" для информации о текущем контроле свопинга).
Использование буферов: sar -b
Опция -b позволяет получить отчет о работе буферов:
bread/s Среднее число физических блоков, считываемых в
системные буфера с диска (или другого блок-ори-
ентированного устройства) в секунду.
lread/s Среднее число логических блоков, считываемых из
системных буферов в секунду.
%rcache Доля логического чтения из системного кэш-буфера
(100% минус отношение breads/lreads).
- 8-18 -
bwrit/s Среднее число физических блоков, записываемых из
системных буферов на диск (или другое блок-ори-
ентированное устройство) в секунду.
lwrit/s Среднее число логических блоков, записываемых в
системные буфера в секунду.
%wcache Доля операций логической записи в кэш-буфер
(100% минус отношение bwrit/s к lwrit/s).
pread/s Среднее число запросов физического чтения в се-
кунду.
pwrit/s Среднее число запросов физической записи в се-
кунду.
Наиболее интересным значением является удачное соотношение
%rcache и %wcache, которое показывает эффективность работы сис-
темных буферов. Если %rcache опускается ниже 90, или %wcache
опускается ниже 65, то возможно улучшить работоспособность сис-
темы за счет увеличения числа буферов.
Пример выходной информации sar -b:
+---------------------------------------------------------------
| unix unix 3.2 2 386i 02/18/89
|16:32:57 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s
|16:33:07 3 39 93 1 16 91 0 0
|16:33:17 4 40 90 2 16 87 0 0
|16:33:27 4 41 90 3 7 64 0 0
| Average 4 40 91 2 13 84 0 0
|(среднее)
Этот пример показывает что буфера не являются узким местом,
так как все данные находятся в приемлемых пределах.
Производительность процесса: sar -q
Опция sar -q позволяет определить среднее значение длины
очереди в то время как она существует и процент времени, в тече-
нии которого она существует.
runq-sz Прохождение очереди процессов в памяти; обычно
это значение должно быть меньше 2. Если это зна-
чение постоянно больше, то это означает, что про-
цессор работает на пределе.
%runocc Процент времени, занимаемого очередью процессов;
чем больше это значение, тем лучше.
swpq-sz Обмен очереди процессов на свопинг; чем меньше
это значение, тем лучше.
%swpocc Процент времени занятости очереди на свопинг; чем
меньше это значение, тем лучше.
- 8-19 -
Пример выходной информации sar -q:
+---------------------------------------------------------------
| unix unix 3.2 2 386i 02/18/89
| 11:00:56 runq-sz %runocc swpq-sz %swpocc
| 11:01:07 1.7 98 1.5 36
| 11:01:17 1.0 63 1.0 31
| 11:01:27 1.0 58 1.0 49
| Average 1.3 74 1.2 39
|(среднее)
В этом примере использование процессора (%runocc) меняется
в пределах от 58% до 98%, во время того, как очередь на свопинг
не является пустой (%swpocc) и колеблется от 31% до 49%. Это оз-
начает, что память не является узким местом в системе, однако,
увеличение памяти поможет уменьшить активность страничного обме-
на.
Если %runocc принимает значение больше 90% и runq-sz больше
2, то процессор сильно загружен, и время ответа системы увеличи-
вается. В этом случае может потребоваться установка дополнитель-
ного процессора для получения удовлетворительной реакции систе-
мы. Если %swpocc больше 20%, то добавление памяти или нескольких
буферов поможет уменьшить активность страничного обмена.
Использование процессора: sar -u
Использование процессора проверяется с помощью команды sar-
u (значение задано по умолчанию). В каждый данный момент процес-
сор может быть либо занят работой, либо простаивать. В рабочем
состоянии процессор может находиться либо в пользовательском,
либо в системном режиме. В нерабочем состоянии процессор может
либо ожидать завершения ввода/вывода, либо просто не иметь рабо-
ты для выполнения. Опция -u команды sar показывает процент вре-
мени, в течение которого процессор находится в системном режиме
(%sys), пользовательском режиме (%user), в состоянии ожидания
завершения ввода/вывода (%wio) и в состоянии простоя(%idle).
При обычном использовании разделения времени %sys и %usr
имеют примерно равные значения. Для специальных приложений каж-
дый из этих параметров может быть больше других, и это не гово-
рит о какой-либо ненормальности в работе системы. Большая вели-
чина %wio обычно означает, что диск является узким местом в
работе. Большое значение %idle, наряду с ухудшением реакции сис-
темы, может означать стесненные рамки памяти; время, которое
тратится на ожидание освобождения памяти, отражено в %idle.
Колонка "idle" (процент простоя) может также обеспечить не-
которое понимание сущности работы системы. Значения, находящиеся
в этой колонке, обычно колеблются между 40 и 100 процентами, да-
- 8-20 -
же при большом числе активных пользователей. Если это значение
постоянно опускается ниже 30%, то основное соревнование за ре-
сурсы не подразумевает соревнование за память вообще; критичес-
ким ресурсом является мощность процессора. (Выполните команду
ps(C) для того, чтобы определить, что чрезмерное использование
процессора не вызвано процессом-захватчиком, который захватывает
каждый резервный цикл процессора.)
Если работает большое количество пользователей, то может
помочь переход на серийные логические платы, если Вы используете
более общие платы ввода/вывода. Логические платы берут нагрузку
процессора больше на себя, чем добавляют ему работу.
Кроме того, Вы должны просмотреть /usr/spool/crontab, чтобы
определить не стоят ли задания в очереди во время пиковой наг-
рузки, когда они могли бы выполняться при свободном процессоре.
Используйте команду ps для определения того, какой процесс силь-
но загружает систему. Поощряйте пользователя запускать большие,
не-интерактивные команды (такие как nroff(CT) или troff(CT))
только во время небольшой загрузки системы. Возможно также за-
пускать такие команды с меньшим приоритетом посредством исполь-
зования команд nice(C) или batch(C). Пример использования коман-
ды sar-u:
+---------------------------------------------------------------
| unix unix 3.2 2 386i 02/18/89
| 09:20:08 %usr %sys %wio %idle
| 09:40:12 6 7 2 86
| 10:00:03 7 9 3 80
| 10:20:07 14 16 10 61
| Average 9 11 5 76
|(среднее)
Системные таблицы: sar - v
Опция -v сообщает о статусе процесса, индексного дескрип-
тора файла, файла, записи разделенной памяти и файловых таблиц
разделенной памяти. Из этого сообщения Вы можете узнать, нужда-
ются ли в модификации системные таблицы.
proc-sz Число элементов таблицы процессов, которые в насто-
ящее время используются или распределены в ядро систе-
мы.
inod-sz Число элементов таблицы индексных дескрипторов фай-
лов, которые в настоящее время используются или рас-
пределены в ядро системы.
file-sz Число элементов таблицы файлов, которые в настоящее
время используются или распределены в ядро системы.
ov Число случаев переполнения. (Одна колонка для каж-
дого из выше перечисленных понятий).
- 8-21 -
lock-sz Число элементов таблицы разделенной памяти, которая
в настоящее время используются или распределено в ядре
системы.
fhdr-sz Больше не применяется.
Значения даны как уровень/размер таблицы. Пример
использования команды sar -v:
+---------------------------------------------------------------
| unix unix 3.2 2 386i 02/18/89
| 17:36:05 proc-sz ov inod-sz ov file-sz ov lock-sz fhdr-sz
| 17:36:35 17/40 0 39/80 0 29/80 0 0/50 0/0
| 17:37:05 19/40 0 46/80 0 35/80 0 0/50 0/0
| 17:37:35 18/40 0 43/80 0 34/80 0 0/50 0/0
Этот пример показывает, что все таблицы достаточно велики,
чтобы не иметь переполнений. Размеры можно уменьшить для того,
чтобы оставить больше памяти, если эти значения являются макси-
мальными.
Свопинг: sar -w
Опция -w предоставляет отчет о свопингах и действии перек-
лючения. Далее следует некоторые целевые значения параметров и
пояснения.
swpin/s Число перемещений в память за секунду.
bswin/s Число 512-байтовых блоковых единиц (блоков), пере-
мещаемых во время свопинга в память (включая начальную
загрузку некоторых программ) в секунду.
swpot/s Число перемещений из памяти в область свопинга на
диске в секунду. Если это число больше 1, то надо уве-
личить память или уменьшить буфера.
bswot/s Число блоков, перемещаемых в секунду при свопинге
из памяти.
pswch/s Переключения процесса в секунду. Это значение долж-
но быть от 30 до 50 при работе 4-6 пользователей систе-
мы.
- 8-22 -
Пример вывода команды sar -w:
+---------------------------------------------------------------
| unix unix 3.2 2 386i 02/18/89
| 09:20:08 swpin/s bswin/s swpot/s bswot/s pswch/s
| 09:40:12 0.0 0.0 0.0 0.0 37
| 10:00:03 0.0 0.0 0.0 0.0 39
| 10:20:07 0.0 0.0 0.0 0.0 39
| Average 0.0 0.0 0.0 0.0 38
|(среднее)
Этот пример показывает, что памяти достаточно для текущей
работы пользователей, так как свопинга нет.
Проверка работы системы по командам: timex
Команда timex хронометрирует команду и сообщает о действиях
системы, которые отмечены во время выполнения команды. Если в
это время не выполнялись другие программы, то timex поможет вы-
яснить, какие ресурсы использует данная команда во время своего
выполнения. Потребление системных ресурсов для каждой программы
приложения может быть накоплено и использовано для перенастройки
слишком перегруженных ресурсов. timex может быть использована
следующим путем:
$ timex -s <программа приложения>
Ваша программа приложения будет работать нормально. Когда
Вы завершите и выйдете из нее, то результат работы timex появит-
ся на Вашем экране. Вы можете получить ясную картину того, какие
системные ресурсы использовала Ваша программа.
- 8-23 -
________________________________________________________________
Описание настраиваемых системных параметров
Следующий раздел посвящен анализу настраиваемых системных
параметров, определенных в файле /etc/conf/cf.d/mtune. Категории
параметров следующие:
Диски и буферы
Символьные буферы
Файлы, индексные дескрипторы файлов и файловые системы
Процессы, управление памятью и свопинг
Часы
Мультиэкраны
Очередь сообщений
Сигнальные устройства
Разделенные данные
Имя системы
Потоки данных
Очереди событий и устройства
Аппаратно-зависимые параметры
Разделенные параметры удаленных файлов
Диски и буферы
NDISK Число дисковых драйверов, присоединенных к системе.
Этот параметр устанавливается во время загрузки.
NBUF Определяет, сколько распределять системных буферов
размером 1К. Кэш данных является матрицей памяти и
содержит информацию о файлах на диске. Кэш имеет
тенденцию к увеличению с увеличением числа буферов.
Кэш уменьшается с увеличением числа доступных дис-
ков и поэтому может улучшить общую продуктивность
системы. Эти значения обычно находятся в пределах
от 100 до 600. Каждый буфер содержит 1076 байт. Ко-
личество хэш-буферов по 1К (NHBUF) должно быть уве-
личено наряду с количеством системных буферов (NBUF)
для достижения оптимальной продуктивности.
NPBUF Определяет, число буферов физического ввода/вывода,
которые надо распределить. Требуется один буфер
ввода/вывода для каждой операции физического чтения
или записи. Каждый элемент содержит 52 байта. Зна-
чение по умолчанию - 20.
- 8-24 -
NHBUF Определяет сколько "корзин для мусора" распределить
для буферов в 1К. Это используется для преимущест-
венного поиска буфера по заданному номеру устройс-
тва или номеру блока перед прямолинейным просмотром
всего списка буферов. Это значение должно быть сте-
пенью 2. Каждый элемент содержит 12 байтов. Значе-
ние NHBUF должно быть выбрано таким образом, чтобы
NBUF, разделенное на NHBUF, равнялось приблизитель-
но 4.
MAXBUF Максимально возможное число кэш-буферов. Это число
буферных описательных заголовков в ядре. Число бу-
феров меньшее этого может быть автоматически внесе-
но в конфигурацию ядра во время загрузки, в зависи-
мости от того, сколько имеется в распоряжении
ферритовой памяти. Если число NBUF не нулевое, то
именно NBUF буферов должно стоять в конфигурации, и
не имеет смысла MAXBUF делать больше, чем NBUF. Ес-
ли NBUF равно нулю, то ядро будет конфигурировано с
ненулевым числом MAXBUF автоматически.
NREGION Определяет сколько элементов таблицы регионов надо
распределить. Каждый элемент NREGION содержит 36
байтов. Большинство процессов имеет три региона:
текстовый, регион данных и стек. Дополнительные об-
ласти нужны для каждого из присоединенных разделен-
ного сегмента памяти и разделенной библиотеки
(текстовой или с данными). Однако, элементы таблицы
регионов для текста программы с "разделенным текс-
том" будут разделяться всеми процессами, обращающи-
мися к этой программе. Каждый разделенный сегмент
памяти принадлежит одному или более процессам, ко-
торые используют другие элементы таблицы регионов.
Хорошее начальное значение для этого параметра -
это примерно в 3,5 раза превышающее NPROC. Если
система выходит за рамки таблицы регионов, то на
системной отображается следующее сообщение:
Таблица 8.3
Зависимость ключевых параметров от размера памяти
+----------------+--------------------------------------------+
| Параметр | Размер памяти |
| +------------+----------------+--------------+
| | 2 M | 3 M | 4 M |
+----------------+------------+----------------+--------------+
|NBUF | 250 | 300 | 400 |
|NHBUF | 64 | 64 | 128 |
|NCALL | 30 | 40 | 50 |
|NINODE | 150 | 200 | 300 |
|NS5INODE | 150 | 200 | 300 |
|NFILE | 150 | 200 | 300 |
|NREGION | 210 | 250 | 300 |
|NCLIST | 120 | 140 | 170 |
|NPROC | 100 | 120 | 150 |
+----------------+------------+----------------+--------------+
Организация файловой системы
В этом разделе описываются действия, предпринимаемые для
уменьшения числа обращений к файлам. При использовании файловой
системы блоки отдельных файлов имеют тенденцию распространяться
по всему диску, и следовательно ввод/вывод становится менее эф-
фективным. Из-за этого распространения образуется плохой порядок
блоков и плохая организация каталога.
- 8-12 -
Организация списка свободных областей в файловой структуре
Свободные блоки размещаются файловой структурой таким обра-
зом, чтобы обеспечить эффективное проведение операций чтения и
записи файлов. Список свободных областей создается тогда, когда
создается файловая система с помощью команды mkfs(ADM). Однако,
когда Вы начинаете изменять файлы(т.е. менять их размеры или пе-
ремещать их), эффективность работы уменьшается. Когда файлы соз-
даются первый раз, они состоят из блоков, взятых из списка сво-
бодных областей. Некоторые из блоков распределяются файлам не по
порядку. Как Вы можете видеть, список свободных областей также
распространяется по всему диску, как и блоки распределенные фай-
лам и освобожденные блоки.
Организация каталога
Организация каталогов также влияют на производительность
операций ввода/вывода. Проблема возникает во время перемещения
пользователем своих файлов. Когда файл удаляется из каталога,
тогда индексный дескриптор этого файла аннулируется. Из-за этого
образуется неиспользуемое место для этого дескриптора; через неко-
торое время число таких пустых мест становится слишком большим.
Если Вы имеете каталог для 100 файлов и удаляете первые 99
файлов, то этот каталог содержит 99 пустых неиспользуемых мест, по
16 байтов каждое, которые предшествуют активному индексному дес-
криптору файла. Разумеется, пока каталог не реорганизован на диске,
он будет сохранять тот максимальный размер, который когда-то получил.
Восстановление хорошей организации файловой системы
Не существует автоматических путей решения этих проблем;
однако, Вы можете вручную реорганизовать файловую систему. Су-
ществует несколько путей реорганизации. Учтите, что в случаях 1
и 3 , приведенных ниже, файловая система(ы) должна(ы) быть раз-
монтирована(ы).
1. Для реорганизации списка свободных участков, активизи-
руйте команду fsck(ADM), используя опцию -s
________________________________________________________________
Примечание
Реорганизация списка свободных участков не поддерживает
файловые системы AFS.
________________________________________________________________
- 8-13 -
2. Для реорганизации отдельных структур каталога, исполь-
зуйте команду cpio(C) -pdm для копирования их во времен-
ное новое место, удалите эти первичные структуры, а
затем используйте команду cpio -pdm для копирования их
обратно на первоначальное место.
Используйте следующую командную строку:
Ъ2find Ъ1sourcedirЪ2 -print | cpio -pdm destdir
где sourcedir - имя исходного каталога; destdir - имя
каталога, в который Вы перемещаете конкретную структу-
ру. После получения подтверждения того, что вся структу-
ра полностью скопирована, удалите полностью исходный ка-
талог. Наконец, произведите обмен указанных в
командной строке, описанной выше, имени каталога, в
который было проведено перемещение исходного каталога,
на имя исходного каталога, и выполните эту команду
снова. После удаления временного каталога, структура
Вашего исходного каталога будет реорганизована.
3. Для реорганизации файловой системы полностью использует-
ся выбор sysadmsh "Backups(Создание резервных копий)"
для выполнения незапланированного дублирования с нулевым
уровнем файловой системы. (Подробное описание дано в
разделе "Создание резервных копий файловых систем" этого
руководства). Когда операция создания резервной копии
будет завершена, следуйте инструкциям по восстановлению
всей файловой системы.
4. Если Вы имеете более одного диска, установите равновесие
распределения файловых систем.
- 8-14 -
________________________________________________________________
Определение эффективного способа использования системы
После того, как произведена настройка ядра и функций систе-
мы, и организована файловая система, следующим шагом в увеличе-
нии производительности системы будет выполнение служебных функ-
ций и проверка того, уменьшилось ли время первоначальной
загрузки. Ответственный администратор системы должен проверять
следующее :
* не смешиваются менее важные работы с более важными
* устранены ли ненужные действия
* спланированы ли определенные работы для времени, когда
система не занята
* эффективны ли определенные пользователем элементы, такие
как Ъ1profileЪ3 и $PATH
Команда ps
Команда ps(C) используется для получения информации об ак-
тивных процессах. Команда дает "моментальную" картину того, что
сейчас происходит, которая бывает очень полезна, когда Вы пытае-
тесь понять, какие процессы происходят в системе. Она вероятно
изменится к тому времени, когда появится вывод команды; однако,
Вас могут заинтересовать значения TIME (минуты и секунды работы
процессора для этих процессов) и STIME (время начала процесса).
Когда Вы определите "ворующий" процесс (тот, который захва-
тывает все больше ресурсов системы за период времени, в течение
которого Вы наблюдаете за ним), Вы должны определить, кто его
запускает. Возможно, что такой процесс должен быть немедленно
остановлен командой kill(C). Если это действительно выходящий из
под контроля процесс, то он будет продолжать поглощать системные
ресурсы, пока система не зависнет. Для такого "неубиваемого"
процесса единственным средством прекратить его является перезаг-
рузка.
Когда Вы заметите процесс, который выполняется слишком дол-
го, Вы можете использовать команду cron(C) для того, чтобы вы-
полнить задание в течение превышающего времени.
- 8-15 -
Переменные пользователя $PATH
$PATH просматривается при каждом выполнении команды. Перед
отображением на экран сообщения "not found(не найдено)" система
должна просмотреть каждый каталог $PATH. Этот просмотр требу-
ет времени как процессора, так и диска. Если диск или процессор
являются узким местом в работе системы, то изменения связанные с
ними, могут улучшить производительность системы.
Вы должны проверить среди пользовательских переменных:
* Эффективность пути
$PATH читается слева направо, так чтобы определить место-
нахождение команды в первом из перечисленных путей (/bin
и /usr/bin). Сделать так, чтобы некоторые каталоги не
повторялись больше одного раза для некоторой команды.
* Удобство и человеческий фактор
Пользователи могут отдать предпочтение просмотру текущего
каталога перед тем как просматривать их из перечислен-
ных путей (:/bin).
* Длину пути
В основном, переменная $PATH должна иметь как можно мень-
ше элементов.
* Ъ1Просмотр больших Ъ3каталогов
По возможности большие каталоги должны быть обойдены.
Поместите большие каталоги в конец переменной $PATH.
- 8-16 -
________________________________________________________________
Использование средств измерения производительности для ди-
агностирования эффективности системы
Операционная система содержит ряд средств для измерения
производительности системы. Администратор системы может исполь-
зовать эти средства для локализации области проблемы. В этом
разделе описаны следующие средства измерения продуктивности:
sar работает с внутренними системными регистрами совокуп-
ной деятельности системы и подготавливает отчеты по
различным аспектам работы системы.
timex подготавливает отчеты по работе системы и по процес-
сам во время выполнения команды или программы.
Внутренняя активность измеряется числом содержащихся в ядре
счетчиков. Каждый раз при выполнении операции наращивается соот-
ветствующий счетчик. Утилита sar(ADM) используется для диагнос-
тирования системных проблем. Двумя наиболее критическими для те-
кущего контроля областями являются использование памяти и
центрального процессора. Это средство позволяет Вам проверить
значение этих счетчиков. В следующих разделах приведены примеры
использования этих средств. В следующих разделах также обсужда-
ются функции, которыми можно управлять с помощью утилиты sar. В
этом разделе описываются опции sar c анализом выходной информа-
ции по измерениям, полученных с помощью этих опций. Sar можно
использовать для того, чтобы собирать данные о работе системы, а
также для выбора того, что было накоплено в информационных фай-
лах, созданных sa1 и sa2 . sa1 и sa2 инициируются элементами,
помещенными в файл crontab sys.
Основной синтаксис команды sar имеет следующий вид:
Ъ2 sar <опция> t
где
t выбранный интервал в секундах, может принимать
значения 5 и более.
Вы должны обеспечить работу системы в течении выбранного
интервала времени, если Вы хотите видеть данные в реальном вре-
мени; в противном случае будут отображены ранее собранные данные
из каталога /usr/adm/sa. Для получения большей информации по
более полному об'ему собираемых данных смотрите руководство по
команде sar(ADM).
- 8-17 -
Эти примеры даны для системы с 2 мегабайтами основной памя-
ти и жестким диском емкостью 30 мегабайт. Выходная информация
команды имеет типичные значения для пользовательской загрузки
системы. Значения, которые Вы получаете, могут отличаться от
значений в примерах, в зависимости от Вашего программного прило-
жения или контрольной задачи. Во время настройки системы реко-
мендуется использовать контрольную задачу или ставить систему
под стандартную нагрузку, чтобы настраивать систему непосредс-
твенно на Ваше конкретное применение.
Использование памяти: буферы и страницы
Определяя число системных дисковых буферов (или явно ис-
пользуя утилиту configure, или неявно, используя значения по
умолчанию), эффективно разделите доступную память между двумя
пулами: дисковым буферным пулом и страничным пулом. Страничный
пул содержит программы, которые должны выполняться, и кэш-копии
недавно использованных страниц программ. Если страничный пул
слишком мал для загрузки, возложенной на систему, то система бу-
дет постоянно обменивать страницы туда и обратно, чтобы только
поддержать текущие процессы.
Если страничный пул только слегка занижен в размере, эффект
будет виден не в увеличенном обмене, а в уменьшении работоспо-
собности кэша при повторном прогоне одних и тех же программ. Это
означает, что страниц достаточно для эффективной обработки теку-
щих программ, но их не хватает для сохранения часто используемых
страниц в памяти для того, чтобы имелся потенциальный доступ к
ним.
При использовании команды sar Вы можете определить, сколько
программ должны участвовать в обмене в течении данного интервала
времени. Если очевиден чрезмерный свопинг, Вы можете перераспре-
делить память так, чтобы увеличить страничный пул. (См. "Сво-
пинг: sar -w" для информации о текущем контроле свопинга).
Использование буферов: sar -b
Опция -b позволяет получить отчет о работе буферов:
bread/s Среднее число физических блоков, считываемых в
системные буфера с диска (или другого блок-ори-
ентированного устройства) в секунду.
lread/s Среднее число логических блоков, считываемых из
системных буферов в секунду.
%rcache Доля логического чтения из системного кэш-буфера
(100% минус отношение breads/lreads).
- 8-18 -
bwrit/s Среднее число физических блоков, записываемых из
системных буферов на диск (или другое блок-ори-
ентированное устройство) в секунду.
lwrit/s Среднее число логических блоков, записываемых в
системные буфера в секунду.
%wcache Доля операций логической записи в кэш-буфер
(100% минус отношение bwrit/s к lwrit/s).
pread/s Среднее число запросов физического чтения в се-
кунду.
pwrit/s Среднее число запросов физической записи в се-
кунду.
Наиболее интересным значением является удачное соотношение
%rcache и %wcache, которое показывает эффективность работы сис-
темных буферов. Если %rcache опускается ниже 90, или %wcache
опускается ниже 65, то возможно улучшить работоспособность сис-
темы за счет увеличения числа буферов.
Пример выходной информации sar -b:
+---------------------------------------------------------------
| unix unix 3.2 2 386i 02/18/89
|16:32:57 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s
|16:33:07 3 39 93 1 16 91 0 0
|16:33:17 4 40 90 2 16 87 0 0
|16:33:27 4 41 90 3 7 64 0 0
| Average 4 40 91 2 13 84 0 0
|(среднее)
Этот пример показывает что буфера не являются узким местом,
так как все данные находятся в приемлемых пределах.
Производительность процесса: sar -q
Опция sar -q позволяет определить среднее значение длины
очереди в то время как она существует и процент времени, в тече-
нии которого она существует.
runq-sz Прохождение очереди процессов в памяти; обычно
это значение должно быть меньше 2. Если это зна-
чение постоянно больше, то это означает, что про-
цессор работает на пределе.
%runocc Процент времени, занимаемого очередью процессов;
чем больше это значение, тем лучше.
swpq-sz Обмен очереди процессов на свопинг; чем меньше
это значение, тем лучше.
%swpocc Процент времени занятости очереди на свопинг; чем
меньше это значение, тем лучше.
- 8-19 -
Пример выходной информации sar -q:
+---------------------------------------------------------------
| unix unix 3.2 2 386i 02/18/89
| 11:00:56 runq-sz %runocc swpq-sz %swpocc
| 11:01:07 1.7 98 1.5 36
| 11:01:17 1.0 63 1.0 31
| 11:01:27 1.0 58 1.0 49
| Average 1.3 74 1.2 39
|(среднее)
В этом примере использование процессора (%runocc) меняется
в пределах от 58% до 98%, во время того, как очередь на свопинг
не является пустой (%swpocc) и колеблется от 31% до 49%. Это оз-
начает, что память не является узким местом в системе, однако,
увеличение памяти поможет уменьшить активность страничного обме-
на.
Если %runocc принимает значение больше 90% и runq-sz больше
2, то процессор сильно загружен, и время ответа системы увеличи-
вается. В этом случае может потребоваться установка дополнитель-
ного процессора для получения удовлетворительной реакции систе-
мы. Если %swpocc больше 20%, то добавление памяти или нескольких
буферов поможет уменьшить активность страничного обмена.
Использование процессора: sar -u
Использование процессора проверяется с помощью команды sar-
u (значение задано по умолчанию). В каждый данный момент процес-
сор может быть либо занят работой, либо простаивать. В рабочем
состоянии процессор может находиться либо в пользовательском,
либо в системном режиме. В нерабочем состоянии процессор может
либо ожидать завершения ввода/вывода, либо просто не иметь рабо-
ты для выполнения. Опция -u команды sar показывает процент вре-
мени, в течение которого процессор находится в системном режиме
(%sys), пользовательском режиме (%user), в состоянии ожидания
завершения ввода/вывода (%wio) и в состоянии простоя(%idle).
При обычном использовании разделения времени %sys и %usr
имеют примерно равные значения. Для специальных приложений каж-
дый из этих параметров может быть больше других, и это не гово-
рит о какой-либо ненормальности в работе системы. Большая вели-
чина %wio обычно означает, что диск является узким местом в
работе. Большое значение %idle, наряду с ухудшением реакции сис-
темы, может означать стесненные рамки памяти; время, которое
тратится на ожидание освобождения памяти, отражено в %idle.
Колонка "idle" (процент простоя) может также обеспечить не-
которое понимание сущности работы системы. Значения, находящиеся
в этой колонке, обычно колеблются между 40 и 100 процентами, да-
- 8-20 -
же при большом числе активных пользователей. Если это значение
постоянно опускается ниже 30%, то основное соревнование за ре-
сурсы не подразумевает соревнование за память вообще; критичес-
ким ресурсом является мощность процессора. (Выполните команду
ps(C) для того, чтобы определить, что чрезмерное использование
процессора не вызвано процессом-захватчиком, который захватывает
каждый резервный цикл процессора.)
Если работает большое количество пользователей, то может
помочь переход на серийные логические платы, если Вы используете
более общие платы ввода/вывода. Логические платы берут нагрузку
процессора больше на себя, чем добавляют ему работу.
Кроме того, Вы должны просмотреть /usr/spool/crontab, чтобы
определить не стоят ли задания в очереди во время пиковой наг-
рузки, когда они могли бы выполняться при свободном процессоре.
Используйте команду ps для определения того, какой процесс силь-
но загружает систему. Поощряйте пользователя запускать большие,
не-интерактивные команды (такие как nroff(CT) или troff(CT))
только во время небольшой загрузки системы. Возможно также за-
пускать такие команды с меньшим приоритетом посредством исполь-
зования команд nice(C) или batch(C). Пример использования коман-
ды sar-u:
+---------------------------------------------------------------
| unix unix 3.2 2 386i 02/18/89
| 09:20:08 %usr %sys %wio %idle
| 09:40:12 6 7 2 86
| 10:00:03 7 9 3 80
| 10:20:07 14 16 10 61
| Average 9 11 5 76
|(среднее)
Системные таблицы: sar - v
Опция -v сообщает о статусе процесса, индексного дескрип-
тора файла, файла, записи разделенной памяти и файловых таблиц
разделенной памяти. Из этого сообщения Вы можете узнать, нужда-
ются ли в модификации системные таблицы.
proc-sz Число элементов таблицы процессов, которые в насто-
ящее время используются или распределены в ядро систе-
мы.
inod-sz Число элементов таблицы индексных дескрипторов фай-
лов, которые в настоящее время используются или рас-
пределены в ядро системы.
file-sz Число элементов таблицы файлов, которые в настоящее
время используются или распределены в ядро системы.
ov Число случаев переполнения. (Одна колонка для каж-
дого из выше перечисленных понятий).
- 8-21 -
lock-sz Число элементов таблицы разделенной памяти, которая
в настоящее время используются или распределено в ядре
системы.
fhdr-sz Больше не применяется.
Значения даны как уровень/размер таблицы. Пример
использования команды sar -v:
+---------------------------------------------------------------
| unix unix 3.2 2 386i 02/18/89
| 17:36:05 proc-sz ov inod-sz ov file-sz ov lock-sz fhdr-sz
| 17:36:35 17/40 0 39/80 0 29/80 0 0/50 0/0
| 17:37:05 19/40 0 46/80 0 35/80 0 0/50 0/0
| 17:37:35 18/40 0 43/80 0 34/80 0 0/50 0/0
Этот пример показывает, что все таблицы достаточно велики,
чтобы не иметь переполнений. Размеры можно уменьшить для того,
чтобы оставить больше памяти, если эти значения являются макси-
мальными.
Свопинг: sar -w
Опция -w предоставляет отчет о свопингах и действии перек-
лючения. Далее следует некоторые целевые значения параметров и
пояснения.
swpin/s Число перемещений в память за секунду.
bswin/s Число 512-байтовых блоковых единиц (блоков), пере-
мещаемых во время свопинга в память (включая начальную
загрузку некоторых программ) в секунду.
swpot/s Число перемещений из памяти в область свопинга на
диске в секунду. Если это число больше 1, то надо уве-
личить память или уменьшить буфера.
bswot/s Число блоков, перемещаемых в секунду при свопинге
из памяти.
pswch/s Переключения процесса в секунду. Это значение долж-
но быть от 30 до 50 при работе 4-6 пользователей систе-
мы.
- 8-22 -
Пример вывода команды sar -w:
+---------------------------------------------------------------
| unix unix 3.2 2 386i 02/18/89
| 09:20:08 swpin/s bswin/s swpot/s bswot/s pswch/s
| 09:40:12 0.0 0.0 0.0 0.0 37
| 10:00:03 0.0 0.0 0.0 0.0 39
| 10:20:07 0.0 0.0 0.0 0.0 39
| Average 0.0 0.0 0.0 0.0 38
|(среднее)
Этот пример показывает, что памяти достаточно для текущей
работы пользователей, так как свопинга нет.
Проверка работы системы по командам: timex
Команда timex хронометрирует команду и сообщает о действиях
системы, которые отмечены во время выполнения команды. Если в
это время не выполнялись другие программы, то timex поможет вы-
яснить, какие ресурсы использует данная команда во время своего
выполнения. Потребление системных ресурсов для каждой программы
приложения может быть накоплено и использовано для перенастройки
слишком перегруженных ресурсов. timex может быть использована
следующим путем:
$ timex -s <программа приложения>
Ваша программа приложения будет работать нормально. Когда
Вы завершите и выйдете из нее, то результат работы timex появит-
ся на Вашем экране. Вы можете получить ясную картину того, какие
системные ресурсы использовала Ваша программа.
- 8-23 -
________________________________________________________________
Описание настраиваемых системных параметров
Следующий раздел посвящен анализу настраиваемых системных
параметров, определенных в файле /etc/conf/cf.d/mtune. Категории
параметров следующие:
Диски и буферы
Символьные буферы
Файлы, индексные дескрипторы файлов и файловые системы
Процессы, управление памятью и свопинг
Часы
Мультиэкраны
Очередь сообщений
Сигнальные устройства
Разделенные данные
Имя системы
Потоки данных
Очереди событий и устройства
Аппаратно-зависимые параметры
Разделенные параметры удаленных файлов
Диски и буферы
NDISK Число дисковых драйверов, присоединенных к системе.
Этот параметр устанавливается во время загрузки.
NBUF Определяет, сколько распределять системных буферов
размером 1К. Кэш данных является матрицей памяти и
содержит информацию о файлах на диске. Кэш имеет
тенденцию к увеличению с увеличением числа буферов.
Кэш уменьшается с увеличением числа доступных дис-
ков и поэтому может улучшить общую продуктивность
системы. Эти значения обычно находятся в пределах
от 100 до 600. Каждый буфер содержит 1076 байт. Ко-
личество хэш-буферов по 1К (NHBUF) должно быть уве-
личено наряду с количеством системных буферов (NBUF)
для достижения оптимальной продуктивности.
NPBUF Определяет, число буферов физического ввода/вывода,
которые надо распределить. Требуется один буфер
ввода/вывода для каждой операции физического чтения
или записи. Каждый элемент содержит 52 байта. Зна-
чение по умолчанию - 20.
- 8-24 -
NHBUF Определяет сколько "корзин для мусора" распределить
для буферов в 1К. Это используется для преимущест-
венного поиска буфера по заданному номеру устройс-
тва или номеру блока перед прямолинейным просмотром
всего списка буферов. Это значение должно быть сте-
пенью 2. Каждый элемент содержит 12 байтов. Значе-
ние NHBUF должно быть выбрано таким образом, чтобы
NBUF, разделенное на NHBUF, равнялось приблизитель-
но 4.
MAXBUF Максимально возможное число кэш-буферов. Это число
буферных описательных заголовков в ядре. Число бу-
феров меньшее этого может быть автоматически внесе-
но в конфигурацию ядра во время загрузки, в зависи-
мости от того, сколько имеется в распоряжении
ферритовой памяти. Если число NBUF не нулевое, то
именно NBUF буферов должно стоять в конфигурации, и
не имеет смысла MAXBUF делать больше, чем NBUF. Ес-
ли NBUF равно нулю, то ядро будет конфигурировано с
ненулевым числом MAXBUF автоматически.
NREGION Определяет сколько элементов таблицы регионов надо
распределить. Каждый элемент NREGION содержит 36
байтов. Большинство процессов имеет три региона:
текстовый, регион данных и стек. Дополнительные об-
ласти нужны для каждого из присоединенных разделен-
ного сегмента памяти и разделенной библиотеки
(текстовой или с данными). Однако, элементы таблицы
регионов для текста программы с "разделенным текс-
том" будут разделяться всеми процессами, обращающи-
мися к этой программе. Каждый разделенный сегмент
памяти принадлежит одному или более процессам, ко-
торые используют другие элементы таблицы регионов.
Хорошее начальное значение для этого параметра -
это примерно в 3,5 раза превышающее NPROC. Если
система выходит за рамки таблицы регионов, то на
системной отображается следующее сообщение: