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, использованием фьютексов и вызовами функций |
|
Число вытеснений потока процесса другими потоками исполнения |
|
Приоритет потока исполнения |
|
Класс планирования потока исполнения (в соответствии с перечислением |
|
Число системных вызовов |
|
Число системных вызовов |
|
Число системных вызовов |