Руководство по системному администрированию: контейнеры в Solaris - управление ресурсами и зонами

Глава 4 Расширенный учет (обзор)

Контроль потребления ресурсов каждой задачей достигается путем классификации и разделения задач с помощью средств работы с процессами и задачами, описанными в Глава 2Проекты и задачи (обзор). Для регистрации подробной статистики потребления ресурсов по процессам и по задачам используется подсистема расширенного учета.

В этой главе рассматриваются следующие темы.

Вводная информация по использованию расширенного учета приведена в Активация расширенного учета для процессов, задач и потоков.

Новые функции и возможности расширенного учета в Solaris 10

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

Полный список новых функций Solaris 10 и описание версий Solaris приведены в Solaris 10 What’s New.

Введение в расширенный учет

Записи об использовании ресурсов маркируются в подсистеме расширенного учета метками проекта, для которого выполняется сбор данных. Расширенный учет также может использоваться для регистрации информации о сетевых потоках в системе вместе с модулем учета потоков IPQoS (Internet Protocol Quality of Service), описанным в разделе Глава 36, Using Flow Accounting and Statistics Gathering (Tasks), в System Administration Guide: IP Services.

Перед использованием механизмов управления ресурсами необходимо сначала охарактеризовать потребности в ресурсах, свойственные различным рабочим нагрузкам в системе. Подсистема расширенного учета в операционной системе Solaris обеспечивает гибкий способ регистрации потребления системных и сетевых ресурсов для отдельных задач или процессов, либо на основании селекторов, предоставленных модулем IPQoS flowacct. Для получения дополнительной информации см. ipqos(7IPP).

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

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

Принцип действия расширенного учета

Для хранения учетных данных в подсистеме расширенного учета операционной Solaris используется расширяемый формат файла с версиями. Файлы с этим форматом данных можно использовать или создавать посредством API, обеспечиваемого поставляемой библиотекой libexacct (см. libexacct(3LIB)). Эти файлы затем могут быть проанализированы на любой платформе с включенным расширенным учетом, и их данные могут использоваться для планирования доступных ресурсов и гибкого управления ими.

Если активен расширенный учет, выполняется сбор статистики, которую можно исследовать с помощью интерфейса API libexacct. Библиотека libexacct позволяет исследовать файлы exacct в прямом или обратном направлении. API поддерживает файлы, генерируемые libexacct, а также файлы, создаваемые ядром. Существует также интерфейс Perl (Practical Extraction and Report Language) для libexacct, позволяющий разрабатывать собственные сценарии для создания отчетов и извлечения данных. См. Интерфейс Perl к libexacct.

Например, при включенном расширенном учете каждая задача отслеживает совокупное использование ресурсов задействованными процессами. Учетная запись задачи записывается по завершении ее выполнения. Также могут создаваться промежуточные записи по выполняемым процессам и задачам. Для получения дополнительной информации о задачах см. Глава 2Проекты и задачи (обзор).

Рисунок 4–1 Отслеживание задач при включенном расширенном учете

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

Расширяемый формат

Формат расширенного учета существенно более гибок с точки зрения расширения по сравнению со старым форматом учета системных ресурсов SunOSTM (см. What is System Accounting? в System Administration Guide: Advanced Administration). Расширенный учет позволяет добавлять и удалять метрики учета в системе – как при переходе с одной версии на другую, так и во время нормальной работы системы.


Примечание –

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


Записи и формат exacct

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

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

Для преобразования и создания файлов в формате exacct используется библиотека libexacct. Эта библиотека является единственным поддерживаемым интерфейсом к файлам формата exacct.


Примечание –

Системные вызовы getacct, putacct и wracct не применимы к потокам. Если настроен потоковый учет IPQoS, ядро создает записи потока и записывает их в файл.


Использование расширенного учета в системе Solaris с установленными зонами

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

Настройка расширенного учета

Текущая конфигурация расширенного учета содержится в файле /etc/acctadm.conf. Этот файл редактируется через интерфейс acctadm ; непосредственное редактирование пользователем не допускается.

Стандартным расположением данных расширенного учета является каталог /var/adm/exacct. Для указания другого места назначения для файлов данных учета процессов и задач используется команда acctadm. Для получения дополнительной информации см. acctadm(1M).

Команды, используемые совместно с расширенным учетом

Справочная информация по командам 

Описание 

acctadm(1M)

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

wracct(1M)

Регистрация записей расширенного учета для активных процессов и задач. 

lastcomm(1)

Вывод ранее введенных команд. Команда lastcomm принимает на входе либо стандартные данные процесса учета, либо данные процесса расширенного учета.

Информацию по командам, связанным с задачами и проектами, приведены в Примеры команд и их параметров. Информацию по учету потоков IPQoS приведены в ipqosconf(1M).

Интерфейс Perl к libexacct

Интерфейс Perl позволяет создавать сценарии на Perl для чтения учетных файлов, созданных архитектурой exacct. Также имеется возможность создания сценариев на Perl, записывающих файлы exacct.

Интерфейс функционально эквивалентен API на C, лежащему в его основе. Когда это возможно, данные, полученные из основного API на C, представляются в виде типов данных Perl. Эта функциональность упрощает доступ к данным и устраняет необходимость в операциях помещения в буфер и изъятия из буфера. Кроме того, все управление памятью выполняется библиотекой Perl.

Разнообразные функции, связанные с проектами, задачами и exacct, разнесены по группам. Каждая группа функций располагается в отдельном модуле Perl. Каждый модуль начинается со стандартного префикса пакетов Perl Sun::Solaris::. Все классы, предоставляемые библиотекой Perl exacct, располагаются в модуле Sun::Solaris::Exacct.

Лежащая в основе библиотека libexacct(3LIB) обеспечивает операции над файлами в формате exacct, тегами каталогов и объектами exacct. Объекты exacct подразделяются на два типа:

В следующей таблице дается краткая характеристика каждого из модулей.

Модуль (не должен содержать пробелов) 

Описание 

Дополнительная информация 

Sun::Solaris::Project

Этот модуль предоставляет функции для доступа к функциям манипулирования проектами getprojid(2), endprojent(3PROJECT) , fgetprojent(3PROJECT), getdefaultproj(3PROJECT), getprojbyid(3PROJECT), getprojbyname(3PROJECT), getprojent(3PROJECT), getprojidbyname(3PROJECT), inproj(3PROJECT), project_walk(3PROJECT), setproject(3PROJECT) и setprojent(3PROJECT).

Project(3PERL)

Sun::Solaris::Task

Этот модуль предоставляет функции для доступа к функциям манипулирования задачами gettaskid(2) и settaskid(2).

Task(3PERL)

Sun::Solaris::Exacct

Это модуль верхнего уровня exacct. Этот модуль предоставляет функции для доступа к системным вызовам, связанным с exacct getacct(2), putacct(2) и wracct(2). Этот модуль также предоставляет функции для доступа к средствам библиотеки libexacct(3LIB) ea_error(3EXACCT). Также в этом модуле содержатся константы для всех макросов exacct EO_*, EW_*, EXR_*, P_* и TASK_*.

Exacct(3PERL)

Sun::Solaris::Exacct:: Catalog

В этом модуле содержатся объектно-ориентированные методы для доступа к битовым полям тега каталога exacct. Модуль также используется для доступа к константам для макросов EXC_*, EXD_* и EXD_*.

Exacct::Catalog(3PERL)

Sun::Solaris::Exacct:: File

Этот модуль предоставляет объектно-ориентированные методы для доступа к функциям учетного файла libexacct ea_open(3EXACCT), ea_close(3EXACCT), ea_get_creator(3EXACCT), ea_get_hostname(3EXACCT), ea_next_object(3EXACCT), ea_previous_object(3EXACCT) и ea_write_object(3EXACCT).

Exacct::File(3PERL)

Sun::Solaris::Exacct:: Object

Этот модуль предоставляет объектно-ориентированные методы для доступа к отдельным объектам учетного файла exacct. Объект exacct представляется в виде непрозрачной ссылки, создаваемой (bless) в соответствующем подклассе Sun::Solaris::Exacct::Object . Этот модуль далее подразделяется на типы объектов Item (элемент) и Group (группа). На этом уровне имеются методы для доступа к функциям ea_match_object_catalog(3EXACCT) и ea_attach_to_object(3EXACCT).

Exacct::Object(3PERL)

Sun::Solaris::Exacct:: Object::Item

Этот модуль предоставляет объектно-ориентированные методы для доступа к отдельным элементам учетного файла exacct. Объекты этого типа являются наследниками Sun::Solaris::Exacct::Object.

Exacct::Object::Item(3PERL)

Sun::Solaris::Exacct:: Object::Group

Этот модуль предоставляет объектно-ориентированные методы для доступа к отдельным группам учетного файла exacct. Объекты этого типа являются наследниками Sun::Solaris::Exacct::Object. Эти объекты предоставляют доступ к функции ea_attach_to_group(3EXACCT). Элементы, содержащиеся внутри группы, представляются в виде массива Perl.

Exacct::Object::Group(3PERL)

Sun::Solaris::Kstat

Этот модуль предоставляет увязанный с Perl интерфейс хеширования для средства kstat. Примером использования этого модуля может служить /bin/kstat, написанный на Perl.

Kstat(3PERL)

Примеры использования модулей, описанных в предыдущей таблице, приведены в Использование интерфейса Perl для libexacct.