arwhite@watmath.UUCP (Alex White) (01/31/84)
Somebody posted something in the last month complaining about problems in accounting cpu times - I don't remember who cuz I assumed that somebody would have posted an answer and it was only several hundred messages later that I realized nobody had... Unfortunately, I think this still has the problem that only seconds of cpu are actually being recorded... This only fixes the memory usage (which we happen to account for). Subject: Accounting time quantities screwed up Index: sys/sys/kern_acct.c etc/sa.c 4.2BSD Description: Accounting records now write times out in seconds, sa still works in 60ths of seconds. Accounting entry ac_mem is incorrect as the kernel divides by SECONDS, the integrated memory usage which is in NBPG ticks. Repeat-By: Use sa -u to see what's being printed out, its wrong. Fix: I can't provide the fix to sa because we have so many changes in it to make it work on uid/gid basis that a diff listing would be horrible. However, basically, everywhere that uses a time currently divides by 60 to get rid of the old hz factor. e.g. routine col() divides by either 60 or 3600 depending on whether it wants seconds or minutes when it should be just divide by 60 for minutes. *** /sys/sys/kern_acct.c Fri Dec 2 14:09:33 1983 --- /usr/distr/4.2/sys/sys/kern_acct.c Fri Jul 29 10:07:16 1983 *************** *** 98,106 ap->ac_gid = u.u_rgid; ap->ac_mem = 0; ! /* ! * Note that ru_i?rss is in units of NBPG core tick ! */ ! if (i = (u.u_ru.ru_utime.tv_sec + u.u_ru.ru_stime.tv_sec)*hz + ! (u.u_ru.ru_utime.tv_usec + u.u_ru.ru_stime.tv_usec)/tick) ap->ac_mem = (u.u_ru.ru_ixrss + u.u_ru.ru_idrss + u.u_ru.ru_isrss) / i; --- 98,102 ----- ap->ac_gid = u.u_rgid; ap->ac_mem = 0; ! if (i = u.u_ru.ru_utime.tv_sec + u.u_ru.ru_stime.tv_sec) ap->ac_mem = (u.u_ru.ru_ixrss + u.u_ru.ru_idrss + u.u_ru.ru_isrss) / i;