diff options
author | jhb <jhb@FreeBSD.org> | 2000-09-12 18:57:59 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2000-09-12 18:57:59 +0000 |
commit | b32557dbb8813ae261f652a6964c45bf750a1b71 (patch) | |
tree | 692ad216e7c8f2529a3b6b29b1618a3afe71fbef /sys/kern | |
parent | 8a2681e22e732cee17c04fabdab335dc840a6fa1 (diff) | |
download | FreeBSD-src-b32557dbb8813ae261f652a6964c45bf750a1b71.zip FreeBSD-src-b32557dbb8813ae261f652a6964c45bf750a1b71.tar.gz |
Clean up process accounting some more. Unfortunately, it is still not
quite right on i386 as the CPU who runs statclock() doesn't have a valid
clockframe to calculate statistics with.
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/kern_clock.c | 26 | ||||
-rw-r--r-- | sys/kern/subr_smp.c | 32 |
2 files changed, 26 insertions, 32 deletions
diff --git a/sys/kern/kern_clock.c b/sys/kern/kern_clock.c index 33eef3c..bc6bf06 100644 --- a/sys/kern/kern_clock.c +++ b/sys/kern/kern_clock.c @@ -389,20 +389,18 @@ statclock(frame) } pscnt = psdiv; - if (p != idleproc) { - schedclock(p); - - /* Update resource usage integrals and maximums. */ - if ((pstats = p->p_stats) != NULL && - (ru = &pstats->p_ru) != NULL && - (vm = p->p_vmspace) != NULL) { - ru->ru_ixrss += pgtok(vm->vm_tsize); - ru->ru_idrss += pgtok(vm->vm_dsize); - ru->ru_isrss += pgtok(vm->vm_ssize); - rss = pgtok(vmspace_resident_count(vm)); - if (ru->ru_maxrss < rss) - ru->ru_maxrss = rss; - } + schedclock(p); + + /* Update resource usage integrals and maximums. */ + if ((pstats = p->p_stats) != NULL && + (ru = &pstats->p_ru) != NULL && + (vm = p->p_vmspace) != NULL) { + ru->ru_ixrss += pgtok(vm->vm_tsize); + ru->ru_idrss += pgtok(vm->vm_dsize); + ru->ru_isrss += pgtok(vm->vm_ssize); + rss = pgtok(vmspace_resident_count(vm)); + if (ru->ru_maxrss < rss) + ru->ru_maxrss = rss; } } diff --git a/sys/kern/subr_smp.c b/sys/kern/subr_smp.c index eceaa81..5056ed1 100644 --- a/sys/kern/subr_smp.c +++ b/sys/kern/subr_smp.c @@ -2507,13 +2507,11 @@ forwarded_statclock(int id, int pscnt, int *astmap) if (pscnt > 1) return; - if (p == SMP_prvspace[id].globaldata.gd_idleproc) { - p->p_sticks++; + p->p_sticks++; + if (p == SMP_prvspace[id].globaldata.gd_idleproc) cp_time[CP_IDLE]++; - } else { - p->p_sticks++; + else cp_time[CP_SYS]++; - } break; case CHECKSTATE_INTR: default: @@ -2536,20 +2534,18 @@ forwarded_statclock(int id, int pscnt, int *astmap) p->p_iticks++; cp_time[CP_INTR]++; } - if (p != SMP_prvspace[id].globaldata.gd_idleproc) { - schedclock(p); + schedclock(p); - /* Update resource usage integrals and maximums. */ - if ((pstats = p->p_stats) != NULL && - (ru = &pstats->p_ru) != NULL && - (vm = p->p_vmspace) != NULL) { - ru->ru_ixrss += pgtok(vm->vm_tsize); - ru->ru_idrss += pgtok(vm->vm_dsize); - ru->ru_isrss += pgtok(vm->vm_ssize); - rss = pgtok(vmspace_resident_count(vm)); - if (ru->ru_maxrss < rss) - ru->ru_maxrss = rss; - } + /* Update resource usage integrals and maximums. */ + if ((pstats = p->p_stats) != NULL && + (ru = &pstats->p_ru) != NULL && + (vm = p->p_vmspace) != NULL) { + ru->ru_ixrss += pgtok(vm->vm_tsize); + ru->ru_idrss += pgtok(vm->vm_dsize); + ru->ru_isrss += pgtok(vm->vm_ssize); + rss = pgtok(vmspace_resident_count(vm)); + if (ru->ru_maxrss < rss) + ru->ru_maxrss = rss; } } |