Полезная информация

Server for Information Technologies Сервер поддерживается
Центром Информационных Технологий
(095) 932-9212, 932-9213, 939-0783
E-mail: info@citforum.ru
Сервер содержит море(!) аналитической информации CIT Forum CD-ROM

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 для быстро заканчивающихся команд дает мало информации о реальном размере команды.
Comments: info@citmgu.ru
Designed by Andrey Novikov
Copyright © CIT