Messages in this thread |  | | Subject | RE: [PATCH] sched: Make nr_uninterruptible count a signed value | | From | Peter Zijlstra <> | | Date | Wed, 09 May 2012 00:27:00 +0200 |
| |
On Tue, 2012-05-08 at 15:14 -0700, Diwakar Tundlam wrote: > Sorry to bug you when it is late for you.. > Nah, I'm the idiot still behind the screen after midnight, its just the brain that's slightly slower and needs more hints.
> You're right, there is no real difference at all. > Only cosmetic difference when you look at the output of > cat /proc/sched_debug.
Not sure I see that.. the printf is still using %Ld (signed) so the output shouldn't matter regardless of if the variable is unsigned long or long. > > But I suddenly realized maybe the increment/decrement of > nr_interruptible is reversed. > Maybe that's the source of the problem: decrement in activate task and > increment in deactivate task !!
No that's right. nr_uninterruptible counts the number of tasks in uninterruptible sleep, so deactivate_task puts a task to sleep, so we need to increment the number of sleeping tasks, activate_task wakes a task up so we need to decrement the number of sleeping tasks.
I think the problem you're having is that we don't match the cpu where we inc and dec the counter, and that's fully on purpose since its rather expensive -- it would require atomics.
|  |