acct file format

Zweck

Stellt das Abrechnungsdateiformat für jeden Prozess bereit

Beschreibung

Die Abrechnungsdateien bieten eine Möglichkeit, die Verwendung des Systems zu überwachen. Diese Dateien dienen auch als Abrechnungsmethode für jeden Prozess für Prozessorauslastung, Material und Services. Der Systemaufruf Konto erzeugt Abrechnungsdateien. Die Datei /usr/include/sys/acct.h definiert die Datensätze in diesen Dateien, die geschrieben werden, wenn ein Prozess beendet wird.

Die acct-Struktur

Die Struktur acct in der Headerdatei acct.h enthält die folgenden Felder:

Element Beschreibung
ac_flag Gibt eines der folgenden Abrechnungsflags für den Prozess an, für den der Abrechnungsdatensatz geschrieben wird:
AFORK Der Prozess wurde mit einem Verzweigung -Befehl erstellt, aber eine Exec -Subroutine wurde noch nicht ausgeführt. Die Subroutine Exec inaktiviert das Flag AFORK.
ASU Der Prozess hat Rootberechtigung verwendet.
ac_stat Gibt den Exit-Status an Ein Flag, das angibt, wie der Prozess beendet wurde
ac_uid Gibt die Benutzer-ID des Prozesses an, für den der Abrechnungsdatensatz geschrieben wird.
ac_gid Gibt die Gruppen-ID des Prozesses an, für den der Abrechnungsdatensatz geschrieben wird.
ac_tty Gibt das Terminal an, von dem der Prozess gestartet wurde.
ac_wlmkey Enthält einen numerischen 64-Bit-Schlüssel, der die Workload-Manager-Klasse darstellt, zu der der Prozess gehört. Die Anwendungsprogrammierschnittstelle von Workload Manager stellt die Subroutine wlm_key2class bereit, um den Schlüssel zurück in einen Klassennamen zu konvertieren.
ac_btime Gibt die Anfangszeit an. Die Zeit, zu der der Prozess gestartet wurde
ac_utime Gibt die Benutzerzeit in Sekunden an, die vom Prozess benötigt wird.
ac_stime Gibt die vom Prozess benötigte Systemzeit in Sekunden an.
ac_etime Gibt die Zeit in Sekunden an, die seit der Befehlsausführung verstrichen ist.
ac_mem Gibt die durchschnittliche Speicherkapazität an, die vom Prozess verwendet wird. Bei jeder Taktunterbrechung (oder tick,100 Uhrzeiten pro Sekunde) wird die Routine sys_zeitgeber aufgerufen, um die Benutzerdaten für den aktuellen Prozess zu aktualisieren. Wenn sich der Prozess im Benutzermodus befindet, werden sowohl der Wert für u_uzeit als auch der Wert für die Speicherbelegung erhöht. Andernfalls wird nur der Wert für u_szeit erhöht. Die Routine sys_zeitgeber ruft die Routine vms_rusage auf, um die Kilobyte des Realspeichers abzurufen, die von TEXTSEG (#1), PRIVSEG (#2) und den Big-Data-Segmenten (#3-11) verwendet werden (falls verwendet). Diese Werte werden zum Wert für die Gesamtspeichernutzung an jedem Taktschritt addiert, bei dem sich der Prozess nicht im Kernelmodus befindet. Wenn der Prozess endet, berechnet die Routine Acctexit , wie viele Taktimpulse aufgetreten sind, während der Prozess ausgeführt wurde (sowohl im Benutzer-als auch im Kernelmodus), und dividiert den Wert für die Gesamtspeicherbelegung durch diese Zahl, um eine durchschnittliche Speicherbelegung für den Prozess zu erhalten. Dieser Wert wird als kurze ganze Zahl mit zwei Byte ohne Vorzeichen aufgezeichnet.
ac_io Gibt die Anzahl der vom Prozess übertragenen Zeichen an.
ac_rw Gibt die Anzahl der Blöcke an, die von dem Prozess gelesen oder geschrieben wurden
ac_comm Gibt den Namen des Befehls an, der den Prozess gestartet hat. Ein von einer Verzweigung -Subroutine erstellter untergeordneter Prozess empfängt diese Informationen vom übergeordneten Prozess. Eine Exec -Subroutine setzt dieses Feld zurück.

tacct-Struktur

Die Struktur tacct , die nicht Teil der Headerdatei acct.h ist, stellt das Gesamtabrechnungsformat dar, das von den verschiedenen Abrechnungsbefehlen verwendet wird:

struct tacct {
       uid_t ta_uid;          /* user-ID */
       char ta_name[8];       /* login name */
       float ta_cpu[2];       /* cum. CPU time, p/np (mins) */
       float ta_kcore[2];     /* cum. kcore-mins, p/np */
       float ta_io[2];        /* cum. chars xferred (512s) */
       float ta_rw[2];        /* cum. blocks read/written */
       float ta_con[2];       /* cum. connect time, p/np, mins */
       float ta_du;           /* cum. disk usage */
       long ta_qsys;          /* queuing sys charges (pgs) */
       float ta_fee;          /* fee for special services */
       long ta_pc;            /* count of processes */
       unsigned short ta_sc;  /* count of login sessions */
       unsigned short ta_dc;  /* count of disk samples */
};