Получение значений счетчиков производительности (value_api.h)
API определен в заголовочном файле sysroot-*-kos/include/coresrv/stat/value_api.h из состава KasperskyOS SDK.
API позволяет получать значения счетчиков производительности, таких как счетчики времени, размеров памяти, объектов.
Сведения о функциях API приведены в таблице ниже.
Использование API
Чтобы получать значения счетчиков производительности, нужно использовать следующие функции:
KnStatGetValueAsInt64()– получить значение счетчика производительности в формате 64-битного знакового целого числа.KnStatGetValueAsUInt64()– получить значение счетчика производительности в формате 64-битного беззнакового целого числа.KnStatGetValues()– получить набор значений счетчиков производительности.KnStatGetObjectValues()– получить набор значений счетчиков производительности, связанных с системным ресурсом (процессом или потоком исполнения).
Функции KnStatGetValueAsInt64() и KnStatGetValueAsUInt64() через параметр name принимают имя счетчика производительности. Функции KnStatGetValues() и KnStatGetObjectValues() через параметр names принимают массив с именами счетчиков производительности. Имя счетчика производительности представляет собой строку, состоящую из одного или нескольких сегментов, разделенных точкой (см. таблицы ниже с именами и значениями счетчиков производительности).
Через опциональный параметр prefix функции KnStatGetValueAsInt64() и KnStatGetValueAsUInt64() принимают префикс для имени счетчика производительности, заданного через параметр name, а функция KnStatGetValues() принимает префикс для имен счетчиков производительности, заданных через параметр names. Этот префикс является начальной частью имени счетчика производительности, которая состоит из одной или нескольких сегментов, разделенных точкой, и заканчивается точкой. Параметр prefix удобно использовать, когда требуется получить значения нескольких счетчиков производительности с именами, которые имеют одинаковую начальную или конечную часть. При этом префикс может содержать одинаковую либо отличающуюся начальную часть.
С использованием функции KnStatGetObjectValues() можно получить значения только тех счетчиков производительности, которые связаны с процессом или потоком исполнения, заданным через параметр handle. При этом имена счетчиков производительности, связанных с процессом, нужно указать без начальной части task.<PID>., а имена счетчиков производительности, связанных с потоком исполнения, нужно указать без начальной части task.<PID>.thread.<TID>..
Сведения о функциях API
Функции value_api.h
Функция | Сведения о функции |
|---|---|
| Назначение Позволяет получить значение счетчика производительности в формате 64-битного знакового целого числа. Параметры
Возвращаемые значения В случае успеха возвращает |
| Назначение Позволяет получить значение счетчика производительности в формате 64-битного беззнакового целого числа. Параметры
Возвращаемые значения В случае успеха возвращает |
| Назначение Позволяет получить значения счетчиков производительности. Параметры
Возвращаемые значения В случае успеха возвращает |
| Назначение Позволяет получить значения счетчиков производительности, связанных с системным ресурсом (процессом или потоком исполнения). Параметры
Возвращаемые значения В случае успеха возвращает |
Имена и значения счетчиков производительности
Счетчики времени имеют значения в наносекундах. Время отсчитывается с момента запуска ядра KasperskyOS. Большинство счетчиков размера памяти имеет значения в страницах памяти. Размер страницы памяти составляет 4 КБ для всех аппаратных платформ, поддерживаемых KasperskyOS. Имена счетчиков производительности, связанных с процессом, содержат идентификатор процесса (PID). Имена счетчиков производительности, связанных с потоком исполнения, содержат идентификатор процесса (PID) и идентификатор потока исполнения (TID). Квалифицированные имена служб ядра см. в "Методы служб ядра KasperskyOS".
Общесистемные счетчики производительности
Имя счетчика | Значение счетчика |
|---|---|
| Число процессов (без учета процесса ядра) |
| Число потоков исполнения (включая потоки ядра) |
| Суммарное время работы всех процессоров в пользовательском режиме |
| Суммарное время работы всех процессоров в режиме ядра |
| Суммарное время работы всех процессоров в режиме бездействия |
| Суммарное время блокировки всех потоков исполнения в ожидании IPC |
| Суммарное время блокировки всех потоков исполнения в результате использования фьютексов |
| Суммарное время блокировки всех потоков исполнения в результате вызовов функций |
| Суммарное время блокировки всех потоков исполнения по причинам, не связанным с ожиданием IPC, использованием фьютексов и вызовами функций |
| Размер установленной физической памяти, в страницах памяти |
| Размер свободной физической памяти, в страницах памяти |
| Размер физической памяти, используемой в качестве разделяемой, в страницах памяти |
| Размер физической памяти с атрибутом "доступ на исполнение", в страницах памяти |
| Размер физической памяти, зарезервированной для распределения аллокатором ядра, в страницах памяти |
| Размер свободной физической памяти, зарезервированной для распределения аллокатором ядра, в страницах памяти |
| Число регионов физической памяти, распределенных аллокатором ядра |
| Размер физической памяти, распределенной аллокатором ядра, в байтах |
| Размер свободной физической памяти, которая зарезервирована для распределения аллокатором ядра и недоступна на любом процессоре (вычислительном ядре), а только отдельно на каждом процессоре, в байтах |
| Число буферов DMA |
| Суммарный размер всех буферов DMA, в страницах памяти |
| Признак наличия образа ROMFS в памяти ядра ( |
| Число файлов в образе ROMFS |
| Размер образа ROMFS, в страницах памяти |
| Число объектов ядра |
| Число дескрипторов (handles) |
| Суммарный размер таблиц дескрипторов (handles), включающих использованные и неиспользованные идентификаторы, в байтах |
| Число идентификаторов безопасности (SIDs) |
| Максимально возможное число идентификаторов безопасности (SIDs) |
| Число системных вызовов |
| Число системных вызовов |
| Число системных вызовов |
Счетчики производительности, связанные с процессором (вычислительным ядром)
Имя счетчика | Значение счетчика |
|---|---|
| Время работы процессора в пользовательском режиме |
| Время работы процессора в режиме ядра |
| Время работы процессора в режиме бездействия |
| Число переключений контекстов потоков исполнения на процессоре |
| Число прерываний, обработанных на процессоре |
| Число прерываний таймера, обработанных на процессоре |
| Число прерываний на перепланирование потоков исполнения, обработанных на процессоре |
Счетчики производительности, связанные с прерываниями
Имя счетчика | Значение счетчика |
|---|---|
| Максимальное число аппаратных прерываний, которые могут быть зарегистрированы, включая прерывания MSI и прерывания, возникающие при обращении устройств к контроллеру прерываний через линии аппаратных прерываний |
| Число прерываний, полученных процессором (вычислительным ядром) |
| Приоритет прерывания |
| Признак того, что к прерыванию привязан хотя бы один поток исполнения ( |
| Число обработчиков прерывания |
| Условия возникновения прерывания (в соответствии с перечислением |
Счетчики производительности, связанные с процессом
Имя счетчика | Значение счетчика |
|---|---|
| Состояние процесса (в соответствии с перечислением |
| Число потоков исполнения в процессе |
| Время между запуском ядра и загрузкой образа программы в память процесса |
| Размер образа программы в памяти процесса, в байтах |
| Идентификатор родительского процесса (PPID) |
| Приоритет начального потока процесса |
| Размер физической памяти, используемой процессом, в страницах памяти (характеризует только ту память, которая выделена непосредственно для процесса; если, например, в память процесса отображен буфер MDL, созданный другим процессом, то размер этого буфера не включается в это значение) |
| Размер виртуальной памяти процесса, в страницах памяти |
| Размер виртуальной памяти процесса, отображаемой на разделяемую физическую память, в страницах памяти |
| Размер таблицы страниц процесса, в страницах памяти |
| Размер памяти для DMA, отображаемой на виртуальную память процесса, в страницах памяти |
| Размер памяти для MMIO, отображаемой на виртуальную память процесса, в страницах памяти |
| Суммарное время исполнения всех потоков процесса в пользовательском режиме |
| Суммарное время исполнения всех потоков процесса в режиме ядра |
| Суммарное время блокировки всех потоков процесса в ожидании IPC |
| Суммарное время блокировки всех потоков процесса в результате использования фьютексов |
| Суммарное время блокировки всех потоков процесса в результате вызовов функций |
| Суммарное время блокировки всех потоков процесса по причинам, не связанным с ожиданием IPC, использованием фьютексов и вызовами функций |
| Число дескрипторов (handles), принадлежащих процессу |
| Размер таблицы дескрипторов (handles) процесса, включающей использованные и неиспользованные идентификаторы, в байтах |
| Число дескрипторов (handles), которые вмещаются в таблицу дескрипторов процесса |
| Число созданных процессом дескрипторов (handles) пользовательских ресурсов |
| Число системных вызовов |
| Число системных вызовов |
| Число системных вызовов |
Счетчики производительности, связанные с потоком исполнения
Имя счетчика | Значение счетчика |
|---|---|
| Время исполнения потока процесса в пользовательском режиме |
| Время исполнения потока процесса в режиме ядра |
| Время блокировки потока процесса в ожидании IPC |
| Время блокировки потока процесса в результате использования фьютексов |
| Время блокировки потока процесса в результате вызовов функций |
| Время блокировки потока процесса по причинам, не связанным с ожиданием IPC, использованием фьютексов и вызовами функций |
| Число вытеснений потока процесса другими потоками исполнения |
| Приоритет потока исполнения |
| Класс планирования потока исполнения (в соответствии с перечислением |
| Число системных вызовов |
| Число системных вызовов |
| Число системных вызовов |