ACCT(4)

НАЗВАНИЕ
acct - формат файла с информацией о процессах

СИНТАКСИС


#include <sys/acct.h>

ОПИСАНИЕ
Файлы, которые образуются системным вызовом acct(2), содержат записи следующей структуры, определенной во включаемом файле <sys/acct.h>:


typedef ushort comp_t; /* "Вещественное число": 13 бит

                          мантисса, 3 бита порядок */



struct acct {

  char   ac_flag;    /* Флаг учетной информации */

  char   ac_stat;    /* Код завершения */

  ushort ac_uid;

  ushort ac_gid;

  dev_t  ac_tty;

  time_t ac_btime;   /* Время начала */

  comp_t ac_utime;   /* Пользовательское время ЦП в

                        тактах часов */

  comp_t ac_stime;   /* Системное время ЦП в тактах

                        часов */

  comp_t ac_etime;   /* Астрономическое время выполне-

                        ния в тактах часов */

  comp_t ac_mem;     /* Расход памяти в Кб */

  comp_t ac_io;      /* Кол-во переданных символов */

  comp_t ac_rw;      /* Общее число прочитанных и за-

                        писанных блоков */

  char   ac_comm[8]; /* Имя команды  */

};



extern struct acct  acctbuf;

extern struct inode *acctp; /* Описатель файла учетной

                               информации */

#define AFORK 01     /* Выполнен fork, но не exec */

#define ASU   02     /* Привилегии суперпользователя */

#define ACCTF 0300   /* Тип записи: 00 = acct */

В поле ac_flag флаг AFORK устанавливается при каждом вызове fork(2) и сбрасывается при вызове exec(2). Поле ac_comm наследуется от родительского процесса и сбрасывается при exec(2). Каждый раз, когда система выделяет процессу квант времени, она также добавляет к ac_mem текущий размер процесса, вычисляемый как


     (размер сегмента данных) +  (размер  сегмента  команд) / 

     (количество процессов в памяти, использующих этот сегмент команд)

Значение ac_mem/(ac_stime+ac_utime) может служить хорошим приближением среднего размера процесса, с учетом разделения сегмента команд.

Следующая структура используется различными командами работы с учетной информацией:


/* Общая учетная информация за некоторый период */



struct tacct {

  uid_t          ta_uid;      /* Идент. пользователя */

  char           ta_name[8];  /* Входное имя */

  float          ta_cpu[2];   /* Среднее время ЦП в

                                 минутах */

  float          ta_kcore[2]; /* Среднее значение

                                 килобайтоминут */

  float          ta_con[2];   /* Среднее астрономичес-

                                 кое время выполнения

                                 в минутах */

  float          ta_du;       /* Суммарное использова-

                                 ние диска */

  long           ta_pc;       /* Число процессов */

  unsigned short ta_sc;       /* Число сеансов раб. */

  unsigned short ta_dc;       /* Число дисковых прими-

                                 тивов */

  unsigned short ta_fee;      /* Для спец. применений

                                 */

};

СМ. ТАКЖЕ
acct(2), exec(2), fork(2).
acctcom(1) в Справочнике пользователя.

СЮРПРИЗЫ
Значение поля ac_mem для быстро заканчивающихся команд дает мало информации о реальном размере команды.