> Linux Reviews > man >

getrusage


  1. getrusage.2.man


1. getrusage.2.man

Manpage of GETRUSAGE

GETRUSAGE

Section: Руководство программиста Linux (2)
Updated: 2010-06-14
Index Return to Main Contents
 

ИМЯ

getrusage - считывает использованные ресурсы  

ОБЗОР

#include <sys/time.h>
#include <sys/resource.h>

int getrusage(int who, struct rusage *usage);  

ОПИСАНИЕ

getrusage() возвращает текущие ограничения на ресурсы для значения who, которое может быть:

RUSAGE_SELF
Возвращает статистику по использованию ресурсов вызывающим процессом (суммируются значения всех нитей процесса).
RUSAGE_CHILDREN
Возвращает статистику по использованию ресурсов всех потомков вызывающего процесса, которые завершились или завершение которых ожидается. Эта статистика включает в себя ресурсы, использованные внучками и дальнейшими потомками, если все промежуточные потомки завершились или их завершение ожидается.
RUSAGE_THREAD (начиная с Linux 2.6.26)
Возвращает статистику по использованию ресурсов вызывающей нитью.

Данные по использованным ресурсам возвращаются в структуре, на которую указывает 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)
Количество переключений контекста в следствии вытеснения процессом с более высоким приоритетом или из-за истечения рабочего временного интервала процесса.

 

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном выполнении возвращается 0. В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение.  

ОШИБКИ

EFAULT
usage указывает за пределы доступного адресного пространства.
EINVAL
Неверное значение who.
 

СООТВЕТСТВИЕ СТАНДАРТАМ

SVr4, 4.3BSD. В POSIX.1-2001 вызов getrusage() определён, но указаны только поля ru_utime и ru_stime.

RUSAGE_THREAD есть только в Linux.  

ЗАМЕЧАНИЯ

Значения использованных ресурсов сохраняются при execve(2).

Включать <sys/time.h> в настоящее время не требуется, но это увеличивает переносимость. (Хотя struct timeval определена в <sys/time.h>.)

В ядрах Linux до версии 2.6.9, если значение SIGCHLD равно SIG_IGN, то использованные ресурсы потомков процессов автоматически включаются в значение, возвращаемое RUSAGE_CHILDREN, хотя в POSIX.1-2001 это явно запрещено. Это несоответствие исправлено в Linux 2.6.9 и более новых версиях.

Определение структуры, показанное в начале страницы, взято из 4.3BSD Reno.

Смотрите также описание /proc/PID/stat в proc(5).  

СМОТРИТЕ ТАКЖЕ

clock_gettime(2), getrlimit(2), times(2), wait(2), wait4(2), clock(3)


 

Index

ИМЯ
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
СООТВЕТСТВИЕ СТАНДАРТАМ
ЗАМЕЧАНИЯ
СМОТРИТЕ ТАКЖЕ

This document was created by man2html using the manual pages.
Time: 17:41:19 GMT, October 23, 2013

SVENSKA - SVENSKA - SVENSKA - ja - nl - pl