getrusage -
считывает
использованные
ресурсы
Standard C library (
libc,
-lc)
#include <sys/resource.h>
int getrusage(int who, struct rusage *usage);
getrusage()
возвращает
текущие
ограничения
на ресурсы
для
значения
who,
которое
может быть:
- RUSAGE_SELF
- Возвращает
статистику
по
использованию
ресурсов
вызывающим
процессом
(суммируются
значения
всех нитей
процесса).
- RUSAGE_CHILDREN
- Возвращает
статистику
по
использованию
ресурсов
всех
потомков
вызывающего
процесса,
которые
завершились
или
завершение
которых
ожидается.
Эта
статистика
включает в
себя
ресурсы,
использованные
внучками и
дальнейшими
потомками,
если все
промежуточные
потомки
завершились
или их
завершение
ожидается.
-
RUSAGE_THREAD
(начиная с Linux
2.6.26)
- Возвращает
статистику
по
использованию
ресурсов
вызывающей
нити. Чтобы
получить
определение
этой
константы
из <sys/resource.h>
должен
быть
определён
макрос
тестирования
свойств
_GNU_SOURCE (до
включения
всех
заголовочных
файлов).
Данные по
использованным
ресурсам
возвращаются
в
структуре,
на которую
указывает
usage; она
имеет
следующий
вид:
struct rusage {
struct timeval ru_utime; /* время ЦП, исполь. в режиме пользователя */
struct timeval ru_stime; /* время ЦП, исполь. в режиме системы */
long ru_maxrss; /* максимальный rss */
long ru_ixrss; /* полный объём общей памяти */
long ru_idrss; /* полный объём собственной памяти */
long ru_isrss; /* полный объём собственного стека */
long ru_minflt; /* количество восстановленных страниц
(мягких отказов) */
long ru_majflt; /* количество отказавших страниц
(жёстких отказов) */
long ru_nswap; /* количество обращений при подкачке */
long ru_inblock; /* количество операций блокового ввода */
long ru_oublock; /* количество операций блокового вывода */
long ru_msgsnd; /* количество посланных сообщений IPC */
long ru_msgrcv; /* количество принятых сообщений IPC */
long ru_nsignals; /* количество принятых сигналов */
long ru_nvcsw; /* количество переключений контекста */
long ru_nivcsw; /* кол-во принудительных переключений контекста */
};
Не все поля
заполняются;
несопровождаемые
поля
устанавливаются
ядром в
ноль.
(Несопровождаемые
поля
предоставляются
для
совместимости
с другими
системами,
и
когда-нибудь
станут
поддерживаться
в Linux.) Поля
следует
понимать
так:
- ru_utime
- Общее
количество
времени,
проведённое
в режиме
пользователя,
выражается
структурой
timeval (секунды
и
микросекунды).
- ru_stime
- Общее
количество
времени,
проведённое
в режиме
ядра,
выражается
структурой
timeval (секунды
и
микросекунды).
-
ru_maxrss
(начиная с Linux
2.6.32)
- Максимальный
используемый
размер
постоянно
занимаемый
в памяти (в
килобайтах).
Для RUSAGE_CHILDREN
определяется
наибольший
размер
постоянной
памяти
среди
потомков, а
не
максимальный
размер
постоянной
памяти
всего
дерева
процесса.
-
ru_ixrss (не
ведётся)
- В
настоящее
время в Linux не
учитывается.
-
ru_idrss (не
ведётся)
- В
настоящее
время в Linux не
учитывается.
-
ru_isrss (не
ведётся)
- В
настоящее
время в Linux не
учитывается.
- ru_minflt
- Количество
сбойных
страниц,
обслуженных
без
операций
ввода-вывода;
в данном
случае
страницы
«восстановлены»
из списка
страниц,
ожидающих
перемещения.
- ru_majflt
- Количество
сбойных
страниц,
обслуженных
с помощью
операций
ввода-вывода.
-
ru_nswap (не
ведётся)
- В
настоящее
время в Linux не
учитывается.
-
ru_inblock
(начиная с Linux
2.6.22)
- Количество
обращений
на чтение
из
файловой
системы.
-
ru_oublock
(начиная с Linux
2.6.22)
- Количество
обращений
на запись в
файловую
систему.
-
ru_msgsnd (не
ведётся)
- В
настоящее
время в Linux не
учитывается.
-
ru_msgrcv (не
ведётся)
- В
настоящее
время в Linux не
учитывается.
-
ru_nsignals (не
ведётся)
- В
настоящее
время в Linux не
учитывается.
-
ru_nvcsw
(начиная с Linux
2.6)
- Количество
переключений
контекста
в
следствии
добровольной
отдачи
процессом
процессора
до того,
как истёк
его
рабочий
временной
интервал
(обычно,
из-за
ожидания
доступности
ресурса).
-
ru_nivcsw
(начиная с Linux
2.6)
- Количество
переключений
контекста
в
следствии
вытеснения
процессом
с более
высоким
приоритетом
или из-за
истечения
рабочего
временного
интервала
процесса.
On success, zero is returned. On error, -1 is returned, and
errno is set
to indicate the error.
- EFAULT
-
usage
указывает
за пределы
доступного
адресного
пространства.
- EINVAL
- Неверное
значение
who.
Описание
терминов
данного
раздела
смотрите в
attributes(7).
Интерфейс |
Атрибут |
Значение |
getrusage() |
Безвредность
в нитях |
MT-Safe |
POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD. В POSIX.1
определён
вызов
getrusage(), но
указаны
только
поля
ru_utime и
ru_stime.
RUSAGE_THREAD есть
только в Linux.
Значения
использованных
ресурсов
сохраняются
при
execve(2).
Before Linux 2.6.9, if the disposition of
SIGCHLD is set to
SIG_IGN then the resource usages of child processes are automatically
included in the value returned by
RUSAGE_CHILDREN, although
POSIX.1-2001 explicitly prohibits this. This nonconformance is rectified in
Linux 2.6.9 and later.
Определение
структуры,
показанное
в начале
страницы,
взято из 4.3BSD Reno.
Ancient systems provided a
vtimes() function with a similar purpose to
getrusage(). For backward compatibility, glibc (up until Linux 2.32)
also provides
vtimes(). All new applications should be written using
getrusage(). (Since Linux 2.33, glibc no longer provides an
vtimes() implementation.)
Смотрите
также
описание
/proc/pid
/stat в
proc(5).
clock_gettime(2),
getrlimit(2),
times(2),
wait(2),
wait4(2),
clock(3)
Русский
перевод
этой
страницы
руководства
был сделан
Azamat Hackimov <
[email protected]>, Dmitry Bolkhovskikh
<
[email protected]>, Vladislav <
[email protected]>,
Yuri Kozlov <
[email protected]> и
Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]