В этой главе описывается администрирование элементов управления ресурсами.
Краткое описание механизма элементов управления ресурсами приведены в Глава 6Элементы управления ресурсами (обзор).
Задача |
Описание |
Инструкции |
---|---|---|
Настройка элементов управления ресурсами |
Элементы управления ресурсами для проектов настраиваются в файле /etc/project. | |
Получение или пересмотр значений элементов управления ресурсов для активных процессов, задач или проектов в локальной области действия. |
Опрос или изменение в рабочем режиме элементов управления ресурсами, связанных с активным процессом, задачей или проектом. | |
Просмотр или обновление глобального состояния элементов управления ресурсами в работающей системе |
Просмотр глобального состояния журналирования каждого элемента управления ресурсами по всей системе. Кроме того, настройка уровня журналирования syslog при превышении значений элементов управления. | |
Отчет о состоянии активных средств взаимодействия процессов (IPC) |
Отображение информации об активных средствах взаимодействия процессов (IPC). Определение объектов IPC, вносящих вклад в потребление ресурсов проектом. | |
Определение достаточности процессорной мощности, выделенной для веб-сервера |
Настройка глобального действия для элемента управления ресурсами. Это действие позволяет получать извещение о любой сущности, для которой установлено слишком низкое значение элемента управления ресурсами. |
Определение достаточности процессорной мощности, выделенной для веб-сервера |
Эта процедура позволяет добавить проект с названием x-files в файл /etc/project и установить максимальное количество LWP для задач, создаваемых в проекте.
Перейдите в режим суперпользователя или воспользуйтесь эквивалентной ролью.
Роли содержат подтвержденные полномочия и привилегированные команды. Для получения дополнительной информации о ролях см. Using the Solaris Management Tools With RBAC (Task Map) в System Administration Guide: Basic Administration.
Создайте проект с названием x-files, используя команду projadd с параметром -K. Для всех задач, создаваемых в проекте, устанавливается максимальное количество LWP, равное 3 .
# projadd -K 'task.max-lwps=(privileged,3,deny)' x-files |
Просмотрите запись в файле /etc/project одним из следующих способов:
Введите следующее:
# projects -l system projid : 0 comment: "" users : (none) groups : (none) attribs: . . . x-files projid : 100 comment: "" users : (none) groups : (none) attribs: task.max-lwps=(privileged,3,deny) |
Введите следующее:
# cat /etc/project system:0:System::: . . . x-files:100::::task.max-lwps=(privileged,3,deny) |
После выполнения этих действий при создании суперпользователем новой задачи в проекте x-files путем соединения проекта с newtask суперпользователь не сможет создать в этой задаче более трех LWP. Это можно проиллюстрировать следующим примером сеанса.
# newtask -p x-files csh # prctl -n task.max-lwps $$ process: 111107: csh NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT task.max-lwps privileged 3 - deny - system 2.15G max deny - # id -p uid=0(root) gid=1(other) projid=100(x-files) # ps -o project,taskid -p $$ PROJECT TASKID x-files 73 # csh /* creates second LWP */ # csh /* creates third LWP */ # csh /* cannot create more LWPs */ Vfork failed # |
Файл /etc/project может содержать параметры для ряда элементов управления ресурсами по каждому проекту, а также несколько пороговых значений для каждого элемента управления. Пороговые значения определяются в выражениях действия, разделяемых запятыми в случае указания нескольких значений.
Перейдите в режим суперпользователя или воспользуйтесь эквивалентной ролью.
Роли содержат подтвержденные полномочия и привилегированные команды. Для получения дополнительной информации о ролях см. Using the Solaris Management Tools With RBAC (Task Map) в System Administration Guide: Basic Administration.
Настройте элементы управления ресурсами для проекта x-files командой projmod с параметрами -s и -K:
# projmod -s -K 'task.max-lwps=(basic,10,none),(privileged,500,deny); process.max-file-descriptor=(basic,128,deny)' x-filesone line in file |
Задаются следующие элементы управления:
Базовый (basic) элемент управления, не влияющий на максимальное количество LWP в задаче.
Привилегированный элемент управления deny, управляющий максимальным количеством LWP на задачу. Этот элемент управления приводит к отклонению любой попытки создания LWP, в результате которой будет превышено максимальное количество, как показано в предыдущем примере Настройка максимального количества LWP для каждой задачи в проекте.
Ограничение по максимальным дескрипторам файла для каждого процесса на уровне basic, приводящее к отклонению любого вызова open, превышающего максимальное значение.
Просмотрите запись в файле одним из следующих способов:
Введите следующее:
# projects -l . . . x-files projid : 100 comment: "" users : (none) groups : (none) attribs: process.max-file-descriptor=(basic,128,deny) task.max-lwps=(basic,10,none),(privileged,500,deny) one line in file |
Введите следующее:
# cat etc/project . . . x-files:100::::process.max-file-descriptor=(basic,128,deny); task.max-lwps=(basic,10,none),(privileged,500,deny) one line in file |
Команда prctl используется для опроса и модификации элементов управления ресурсами, связанных с процессами, задачами или проектами, активными в системе. Для получения дополнительной информации см. справочную страницу prctl(1).
Эту процедуру необходимо выполнять в системе, в которой не создавались и не изменялись элементы управления ресурсами. В файле /etc/system или в базе данных project должны находиться только значения, отличные от значений по умолчанию.
Команду prctl можно ввести для любого процесса, например для интерпретатора команд, выполняющегося в текущий момент.
# prctl $$ process: 100337: -sh NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT process.max-port-events privileged 65.5K - deny - system 2.15G max deny - process.crypto-buffer-limit system 16.0EB max deny - process.max-crypto-sessions system 18.4E max deny - process.add-crypto-sessions privileged 100 - deny - system 18.4E max deny - process.min-crypto-sessions privileged 20 - deny - system 18.4E max deny - process.max-msg-messages privileged 8.19K - deny - system 4.29G max deny - process.max-msg-qbytes privileged 64.0KB - deny - system 16.0EB max deny - process.max-sem-ops privileged 512 - deny - system 2.15G max deny - process.max-sem-nsems privileged 512 - deny - system 32.8K max deny - process.max-address-space privileged 16.0EB max deny - system 16.0EB max deny - process.max-file-descriptor basic 256 - deny 100337 privileged 65.5K - deny - system 2.15G max deny - process.max-core-size privileged 8.00EB max deny - system 8.00EB max deny - process.max-stack-size basic 8.00MB - deny 100337 privileged 8.00EB - deny - system 8.00EB max deny - process.max-data-size privileged 16.0EB max deny - system 16.0EB max deny - process.max-file-size privileged 8.00EB max deny,signal=XFSZ - system 8.00EB max deny - process.max-cpu-time privileged 18.4Es inf signal=XCPU - system 18.4Es inf none - task.max-cpu-time system 18.4Es inf none - task.max-lwps system 2.15G max deny - project.max-contracts privileged 10.0K - deny - system 2.15G max deny - project.max-device-locked-memory privileged 499MB - deny - system 16.0EB max deny - project.max-port-ids privileged 8.19K - deny - system 65.5K max deny - project.max-shm-memory privileged 1.95GB - deny - system 16.0EB max deny - project.max-shm-ids privileged 128 - deny - system 16.8M max deny - project.max-msg-ids privileged 128 - deny - system 16.8M max deny - project.max-sem-ids privileged 128 - deny - system 16.8M max deny - project.max-tasks system 2.15G max deny - project.max-lwps system 2.15G max deny - project.cpu-shares privileged 1 - none - system 65.5K max none - zone.max-lwps system 2.15G max deny - zone.cpu-shares privileged 1 - none - system 65.5K max none - |
Эта команда позволяет вывести максимальный дескриптор файла для текущего работающего интерпретатора команд.
# prctl -n process.max-file-descriptor $$ process: 110453: -sh NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT process.max-file-descriptor basic 256 - deny 110453 privileged 65.5K - deny - system 2.15G max deny |
В этом примере команда prctl используется для временного добавления нового привилегированного значения, запрещающего использование более трех LWP на проект x-files. Результат можно сравнить с результатом Настройка максимального количества LWP для каждой задачи в проекте.
Перейдите в режим суперпользователя или воспользуйтесь эквивалентной ролью.
Роли содержат подтвержденные полномочия и привилегированные команды. Для получения дополнительной информации о ролях см. Using the Solaris Management Tools With RBAC (Task Map) в System Administration Guide: Basic Administration.
Выполните команду newtask для присоединения к проекту x-files.
# newtask -p x-files |
Для проверки правильности присоединения к проекту можно воспользоваться командой id с параметром - p.
# id -p uid=0(root) gid=1(other) projid=101(x-files) |
Добавьте новое привилегированное значение для project.max-lwps , ограничивающее количество LWP значением 3.
# prctl -n project.max-lwps -t privileged -v 3 -e deny -i project x-files |
Проверьте результат.
# prctl -n project.max-lwps -i project x-files process: 111108: csh NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT project.max-lwps privileged 3 - deny - system 2.15G max deny - |
Перейдите в режим суперпользователя или воспользуйтесь эквивалентной ролью.
Роли содержат подтвержденные полномочия и привилегированные команды. Для получения дополнительной информации о ролях см. Using the Solaris Management Tools With RBAC (Task Map) в System Administration Guide: Basic Administration.
Команда prctl с параметром -r используется для изменения самого низкого значения элемента управления ресурсами process.max-file-descriptor .
# prctl -n process.max-file-descriptor -r -v 128 $$ |
Перейдите в режим суперпользователя или воспользуйтесь эквивалентной ролью.
Роли содержат подтвержденные полномочия и привилегированные команды. Для получения дополнительной информации о ролях см. Using the Solaris Management Tools With RBAC (Task Map) в System Administration Guide: Basic Administration.
Выведите значение project.cpu-shares для проекта group.staff.
# prctl -n project.cpu-shares -i project group.staff project: 2: group.staff NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT project.cpu-shares privileged 1 - none - system 65.5K max none |
Замените текущее значение project.cpu-shares , равное 1, значением 10.
# prctl -n project.cpu-shares -v 10 -r -i project group.staff |
Выведите значение project.cpu-shares для проекта group.staff.
# prctl -n project.cpu-shares -i project group.staff project: 2: group.staff NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT project.cpu-shares privileged 10 - none - system 65.5K max none |
Команда rctladm позволяет опрашивать и модифицировать глобальное состояние механизма элементов управления ресурсами во время выполнения. Для получения дополнительной информации см. справочную страницуrctladm(1M).
Например, команду rctladm с параметром -e можно использовать для включения глобального атрибута syslog для элемента управления ресурсами. При превышении значения элемента управления в журнал заносится уведомление на указанном уровне syslog. Для включения глобального атрибута syslog для process.max-file-descriptor используется следующая команда:
# rctladm -e syslog process.max-file-descriptor |
При использовании без аргументов команда rctladmвыводит для каждого элемента управления ресурсами глобальные флаги, в том числе глобальный флаг типа.
# rctladm process.max-port-events syslog=off [ deny count ] process.max-msg-messages syslog=off [ deny count ] process.max-msg-qbytes syslog=off [ deny bytes ] process.max-sem-ops syslog=off [ deny count ] process.max-sem-nsems syslog=off [ deny count ] process.max-address-space syslog=off [ lowerable deny no-signal bytes ] process.max-file-descriptor syslog=off [ lowerable deny count ] process.max-core-size syslog=off [ lowerable deny no-signal bytes ] process.max-stack-size syslog=off [ lowerable deny no-signal bytes ] . . . |
Служебная программа ipcs используется для вывода информации по активным средствам взаимодействия процессов (IPC). Для получения дополнительной информации см. справочную страницу ipcs(1).
Вызов команды ipcs с параметром -J позволяет получить информацию о проекте, для ограничения которого выделен объект IPC.
# ipcs -J IPC status from <running system> as of Wed Mar 26 18:53:15 PDT 2003 T ID KEY MODE OWNER GROUP PROJECT Message Queues: Shared Memory: m 3600 0 --rw-rw-rw- uname staff x-files m 201 0 --rw-rw-rw- uname staff x-files m 1802 0 --rw-rw-rw- uname staff x-files m 503 0 --rw-rw-rw- uname staff x-files m 304 0 --rw-rw-rw- uname staff x-files m 605 0 --rw-rw-rw- uname staff x-files m 6 0 --rw-rw-rw- uname staff x-files m 107 0 --rw-rw-rw- uname staff x-files Semaphores: s 0 0 --rw-rw-rw- uname staff x-files |
Глобальное действие для элемента управления ресурсами позволяет получать уведомления о сущностях, сталкивающихся с чрезмерно низкими значениями элементов управления ресурсами.
Например, предположим, что требуется определить, достаточно ли процессорной мощности выделено веб-серверу для его типичной нагрузки. Для этого можно проанализировать результаты работы команды sar и определить время простоя процессора и среднюю нагрузку. Также можно исследовать данные расширенного учета и определить количество одновременно работающих процессов веб-сервера.
Однако более простой подход заключается в размещении веб-сервера в задаче. Затем командой syslog можно задать глобальное действие, отправляющее уведомление при каждом превышении задачей запланированного количества LWP, соответствующего возможностям оборудования.
Для получения дополнительной информации см. справочную страницу sar(1).
С помощью команды prctl установите привилегированный (принадлежащий суперпользователю) элемент управления ресурсами для задач, содержащих процесс httpd. Задайте для каждой задачи ограничение по количеству LWP, равное 40, и отключите все локальные действия.
# prctl -n task.max-lwps -v 40 -t privileged -d all `pgrep httpd` |
Активируйте глобальное действие системного журнала для элемента управления ресурсами task.max-lwps.
# rctladm -e syslog task.max-lwps |
Проверьте, срабатывает ли элемент управления ресурсами под рабочей нагрузкой.
Если срабатывает, появится сообщение /var/adm/messages, подобное следующему:
Jan 8 10:15:15 testmachine unix: [ID 859581 kern.notice] NOTICE: privileged rctl task.max-lwps exceeded by task 19 |