diff options
| author | 2018-05-14 12:31:21 +0000 | |
|---|---|---|
| committer | 2018-05-14 12:31:21 +0000 | |
| commit | 531d8034253fb82282f0f353c086e9ad827e031c (patch) | |
| tree | 2ff6558583b14dbec8a9390a12118fb3a9bb8b6e /sys/kern/kern_clock.c | |
| parent | Remove duplicated word ("scope scope"). (diff) | |
| download | wireguard-openbsd-531d8034253fb82282f0f353c086e9ad827e031c.tar.xz wireguard-openbsd-531d8034253fb82282f0f353c086e9ad827e031c.zip | |
Stopping counting and reporting CPU time spent spinning on a lock as
system time.
Introduce a new CP_SPIN "scheduler state" and modify userland tools
to display the % of timer a CPU spents spinning.
Based on a diff from jmatthew@, ok pirofti@, bluhm@, visa@, deraadt@
Diffstat (limited to 'sys/kern/kern_clock.c')
| -rw-r--r-- | sys/kern/kern_clock.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/kern/kern_clock.c b/sys/kern/kern_clock.c index 2aef10f72c5..d77a4191d8c 100644 --- a/sys/kern/kern_clock.c +++ b/sys/kern/kern_clock.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kern_clock.c,v 1.93 2017/07/22 14:33:45 kettenis Exp $ */ +/* $OpenBSD: kern_clock.c,v 1.94 2018/05/14 12:31:21 mpi Exp $ */ /* $NetBSD: kern_clock.c,v 1.34 1996/06/09 04:51:03 briggs Exp $ */ /*- @@ -381,6 +381,7 @@ statclock(struct clockframe *frame) return; /* * Came from kernel mode, so we were: + * - spinning on a lock * - handling an interrupt, * - doing syscall or trap work on behalf of the current * user process, or @@ -391,7 +392,9 @@ statclock(struct clockframe *frame) * so that we know how much of its real time was spent * in ``non-process'' (i.e., interrupt) work. */ - if (CLKF_INTR(frame)) { + if (spc->spc_spinning) + spc->spc_cp_time[CP_SPIN]++; + else if (CLKF_INTR(frame)) { if (p != NULL) p->p_iticks++; spc->spc_cp_time[CP_INTR]++; |
