Опубликован: 12.11.2008 | Доступ: свободный | Студентов: 3585 / 355 | Оценка: 4.31 / 4.35 | Длительность: 19:07:00
Лекция 13:

Настраиваемые параметры

< Лекция 12 || Лекция 13: 1234

13.4.10. Параметры Asyncio

  • NAIOSYS - максимальное количество известных системных вызовов асинхронного ввода/вывода. Используется модулем "async", не являющимся частью основной системы SVR4.0;
  • MINAIOS - минимальное количество процессоров асинхронного ввода/вывода. Используется модулем "async", не являющимся частью основной системы SVR4.0;
  • MAXAIOS - максимальное количество процессоров асинхронного ввода/вывода. Используется модулем "async", не являющимся частью основной системы SVR4.0;
  • AIOTIMEOUT - количество секунд, в течение которых процессор асинхронного ввода/вывода ожидает начала работы. Используется модулем "async", не являющимся частью основной системы SVR4.0;
  • NAIOPROC - Допустимое количество запросов на асинхронный ввод/вывод на один процесс. Используется модулем "async", не являющимся частью основной системы SVR4.0.

13.4.11. Параметры событий

  • MEVQUEUES - максимальное количество структур событий ядра системы ( evkev_t ) для распределения. Используется модулем "events", не являющимся частью основной системы SVR4.0;
  • MEVKEVS - максимальное количество структур очереди событий ( evqueue_t ) для распределения. Используется модулем "events", не являющимся частью основной системы SVR4.0;
  • MEVEXPREFS - максимальное количество структур ссылок на выражения о событиях ( evexref_t ) для распределения. Используется модулем "events", не являющимся частью основной системы SVR4.0;
  • MEVEXPRS - максимальное количество выражений со структурами событий ( evexpr_t ) для распределения. Используется модулем "events", не являющимся частью основной системы SVR4.0;
  • MEVTERMS - максимальное количество структур термов событий ( evterm_t ) для распределения. Используется модулем "events", не являющимся частью основной системы SVR4.0;
  • MEVSEXPRS - максимальное количество структур выполненных выражений о событиях ( evsexpr_t ) для распределения. Используется модулем "events", не являющимся частью основной системы SVR4.0;
  • MEVSTERMS - максимальное количество структур выполненных термов событий ( evsterm_t ) для распределения. Используется модулем "events", не являющимся частью основной системы SVR4.0;
  • MEVTIDS - максимальное количество структур идентификаторов прерываний ( evtid_t ) для распределения. Используется модулем "events", не являющимся частью основной системы SVR4.0;
  • MEVRETRYS - максимальное количество структур повторной передачи ( evretry_t ) для распределения. Используется модулем "events", не являющимся частью основной системы SVR4.0;
  • MEVEXITS - максимальное количество структур выхода событий ( evexit_t ) для распределения. Используется модулем "events", не являющимся частью основной системы SVR4.0;
  • MEVSIGS - максимальное количество сигнальных структур событий ( evsig_t ) для распределения. Используется модулем "events", не являющимся частью основной системы SVR4.0;
  • MEVSTRDS - максимальное количество структур данных потока ( evd_stream_t ) для распределения. Используется модулем "events", не являющимся частью основной системы SVR4.0;
  • MEVDIRENTS - максимальное количество элементов каталога ( dirent_t ) для распределения. Используется модулем "events", не являющимся частью основной системы SVR4.0;
  • EVDATA - максимальное количество байтов, выделяемых для хранения данных, зависящих от типа событий, и для других различных целей. Используется модулем "events", не являющимся частью основной системы SVR4.0;
  • EVTIDHTS - количество элементов в хеш-таблице идентификаторов внутренних прерываний. Параметр должен быть числом, являющимся степенью числа 2. Используется модулем "events", не являющимся частью основной системы SVR4.0;
  • EVFNHTS - количество элементов в хеш-таблице файловых имен. Значение параметра должно быть числом, являющимся степенью числа 2. Используется модулем "events", не являющимся частью основной системы SVR4.0;
  • EVMAXEV - максимальное количество событий по умолчанию, допускаемых в очереди. Используется модулем "events", не являющимся частью основной системы SVR4.0;
  • EVMAXDPE - максимальное количество по умолчанию байтов данных, допустимых для одного события. Используется модулем "events", не являющимся частью основной системы SVR4.0;
  • EVMAXMEM - максимальное общее количество байтов данных (по умолчанию), разрешенных в памяти для всех событий в очереди событий. Используется модулем "events", не являющимся частью основной системы SVR4.0;
  • EVMAXTRAPS - максимальное количество по умолчанию выражений с прерываниями для одного процесса. Используется модулем "events", не являющимся частью основной системы SVR4.0;
  • EVMAXETERMS - максимальное количество термов по умолчанию в одном выражении. Используется модулем "events", не являющимся частью основной системы SVR4.0.

13.4.12. Параметры диспетчера/планировщика/таймера

  • HRTIME - этот параметр используется для определения размера массива hrtimes. Массив используется для сохранения дорожки от запроса на переход в режим ожидания или на аварийный сигнал для генератора импульсов реального времени;
  • HRVTIME - параметр используется для определения размера массива itimes. Массив используется для сохранения дорожки запросов на аварийный сигнал для того, чтобы генератор тактовых импульсов мог измерить виртуальное время пользовательского процесса;
  • RTMAXPRI - диапазон, в котором пользователи могут регулировать пользовательский приоритет процесса реального времени, от -RTMAXPRI до +RTMAXPRI ;
  • RTNPROCS - определяет размер таблицы, содержащей информацию о приоритете для процессов реального времени;
  • TSMAXUPRI - диапазон, в котором пользователи могут регулировать пользовательский приоритет процесса разделения времени, от -TSMAXUPRI до +TSMAXPRI. Планирование конфигурации с более высокими значениями позволяет пользователям тщательнее контролировать приоритет их процессов (учтите, что только привилегированный пользователь можетповысить приоритет). Значение по умолчанию 20 - это степень контроля, эквивалентная той, что была в прошлом в интерфейсе nice(2) ;
  • TSNPROCS - определяет размер таблицы, содержащей информацию о приоритете для процессов разделения времени;
  • MAXCLSYSPRI - максимальный глобальный приоритет, используемый классом планировщиков SYS для планирования процессов ядра системы. Изменение этого параметра изменяет диапазон приоритетов и может значительно повлиять на работу системы. В общем, нет необходимости изменять этот параметр, если вы не добавляете новые классы планировщиков или заново не конфигурируете приоритеты других сконфигурированных классов.

13.4.13. Параметры границ ресурса (структура rlimit)

Следующие параметры представляют значения по умолчанию в границах ресурса процесса, использующихся для объявления структуры rlimit. В системе SVR4.0. команда ulimit(1) возвращает пользователю несколько новых границ ядра системы, взятых из структуры rlimit. В следующих параметрах префикс S обозначает гибкие границы, префикс H - жесткие границы. Любой пользовательский процесс может изменить свои гибкие границы до соответствующей жесткой границы. Только root может увеличить (расширить) жесткие границы. Установка параметра в 0x7FFFFFFF указывает на неопределенную границу.

  • SCPULIM - гибкая граница с максимальным значением объединяла пользовательское и системное CPU время в секундах, разрешаемое процессом. Сигнал SIGXCPU посылается процессам, время CPU которых превышает это значение;
  • HCPULIM - максимальное значение SCPULIM ;
  • SFSZLIM - гибкая граница, определяющая наибольшее смещение в байтах любого одиночного файла, который может создаваться процессом. Сигнал SIGXFSX посылается процессам, которые пытаются записать файл, смещение которого больше этого значения. К тому же запись будет неудачной с ошибкой EFBIG. Этот параметр замещает параметр ULIMIT системы SRV3.2., существуют способы преодоления этой границы ядра системы на уровне пользователей, например, команда ulimit(1) и строка ULIMIT в каталоге /etc/default/login ;
  • SDATLIM - максимальное значение SFSZLIM ;
  • SDATLIM - гибкая граница, определяющая максимальный размер в байтах динамической области процесса. Если процесс пытается расширить свою динамическую область за пределами этой границы, используя brk(2), попытка потерпит неудачу и сообщение об ошибке будет установлено в значение ENOMEM ;
  • HDATLIM - максимальное значение SDATLIM ;
  • SSTKLIM - гибкая граница, определяющая максимальный размер в байтах сегмента стека для процесса. Это определяет границу автоматического роста стека с помощью системы. Сигнал SIGSEGV посылается процессам, пытающимся увеличить стек за пределы его значения. Если процесс не организован так, чтобы улавливать этот сигнал в отдельном стеке, процесс прекратится;
  • HSTKLIM - максимальное значение SSTKLIM ;
  • SCORLIM - гибкая граница, определяющая наибольший размер в байтах файла ядра, который может быть создан. Гибкая граница 0 предотвращает создание файлов ядра;
  • HCORLIM - максимальное значение SCORLIM ;
  • SFNOLIM - гибкая граница, определяющая максимальное число открытых файлов, которое может иметь процесс. Когда этот предел превзойден, попытки открыть файлы терпят неудачу и сообщение об ошибке будет установлено в EMFILE. Обратите внимание, что этот параметр замещает параметр NOFILE системы SRV3.2;
  • HFNOLIM - максимальное значение SFNOLIM ;
  • SVMMLIM - гибкая граница, определяющая максимальное пространство адреса. Попытки увеличить пространство адреса процесса за пределы этого значения неудачны, с ошибкой ENOMEM ;
  • HVMMLIM - максимальное значение SVMMLIM.

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

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

13.5. Когда настраивать и что настраивать

13.5.1. Особые случаи

Часто использование системы требует настройки определенных параметров на особые условия. Общая необходимость - создавать очень большие файлы. Это можно выполнить, если стать привилегированным пользователем и изменить "ulimit" для процесса оболочки ядра shell командой ulimit(1) или путем изменения строки ULIMIT в файле /etc/default/login. Альтернативное решение - модифицировать систему SFNOLIM для всех пользователей.

13.5.2. Сообщения ядра системы о превышении границ системы

Бывают случаи, когда ядро системы UNIX рекомендует превысить границы системы. Эти сообщения поступают на консоль оператора. Некоторые сообщения только рекомендательные, в других случаях распечатываются дополнительные диагностичнские сообщения, требующие повторной начальной загрузки. Если такие сообщения возникают, необходимо обратиться к соответствующему настраиваемому параметру за дополнительной информацией.

13.5.3. Кэш-буферы

Системы UNIX используют буферы памяти для хранения данных, записанных или считанных с диска. Буферы используются повторно. В системе SVR3.2 и ранних системах UNIX размер кэш-буфера соответствовал значению настраиваемого параметра главной системы. В системе SVR4.0 буферы распределяются системой как нужно. Дополнительную информацию смотрите в описании параметров NBUF и BUFHVM.

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

В файле /etc/conf/bin дается сценарий idtune для упрощения модификации и добавления элемента stune. Этот сценаций особенно полезен при подготовке пакетов расширений ПО, которые нужны для изменения параметра системы. Эта команда использует индивидуальные параметры системы, осуществляет поиск в файле stune и изменяет существующее значение или добавляет параметр к файлу stune, если он не определен. Выбранное значение всегда должно быть в пределах от минимального до максимального значения в файле mtune.

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

13.6. Изменение существующего параметра ядра системы

13.6.1. Переконфигурация ядра системы для разрешения новых параметров

После модификации файла stune нужно повторно выполнить конфигурацию системы с помощью команды /etc/conf/bin/idbuild. Затем систему нужно закрыть и заново запустить. С помощью команды idbuild строится новое ядро системы UNIX и устанавливается файл, который используется при закрытии системы. Новое ядро системы UNIX будет связано с /stand/unix; оно автоматически выполняется при следующем повторном запуске.

Для модификации параметра выполните следующие действия:

  1. Модифицируйте файл /etc/conf/cf.d/stune. Это можно сделать или отредактировав файл stune, или выполнив команду idtune.
  2. Выполните команду /etc/conf/bin/idbuild.
  3. Выполните команду cd /, чтобы попасть в корневой каталог и наберите:
    /etc/shutdown -i6 -g0 -y

13.6.2. Что делать, если система не запускается

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

  1. Вставить гибкий диск N1 ПО основной системы.
  2. Загрузить систему с гибкого диска.
  3. После запроса системы вставить гибкий диск N2.
  4. Когда появится подсказка Strike RETURN to install the UNIX system on your hard disk, нажать Del, чтобы выйти из программы инсталяции.
  5. Проверить и смонтировать жесткий диск, затем скопировать ядро системы с помощью следующих команд:
    /etc/fs/bfs/fsck -y /dev/dsk/0s10
    /etc/fs/bfs/mount /dev/dsk/0s10 /mnt
    cp /unix /mnt/stand/unix
    umount /dev/dsk/0s10
  6. Удалить гибкий диск и загрузить восстановленное ядро системы.
  7. Изменить параметры файла /etc/conf/cf.d/stune, установив их в их первоначальные значения и выполнить команду idbuild, затем сделать начальную загрузку системы.
< Лекция 12 || Лекция 13: 1234