Messages in this thread | | | Date | Thu, 6 Nov 2008 22:44:34 +0100 | From | Ingo Molnar <> | Subject | Re: [PATCH] revert: timers: fix itimer/many thread hang |
| |
* Peter Zijlstra <peterz@infradead.org> wrote:
> This patch reverts all the itimer/many thread patches: > > 7086efe1c1536f6bc160e7d60a9bfd645b91f279 > bb34d92f643086d546b49cef680f6f305ed84414 > 5ce73a4a5a4893a1aa4cdeed1b1a5a6de42c43b6 > 0a8eaa4f9b58759595a1bfe13a1295fdc25ba026 > f06febc96ba8e0af80bcc3eaec0a109e88275fac > > Because I think the per-cpu accounting approach is wrong and makes > things worse for people with a machine that has more than a > hand-full of CPUs.
hm, the revert is rather large but i guess the best way forward. Unless we can avoid this loop:
- for_each_possible_cpu(i) { - tot = per_cpu_ptr(tsk->signal->cputime.totals, i); - times->utime = cputime_add(times->utime, tot->utime); - times->stime = cputime_add(times->stime, tot->stime); - times->sum_exec_runtime += tot->sum_exec_runtime; - }
we have to revert it.
That loop could _perhaps_ be avoided by maintaining the sums from the scheduler tick: by just adding the latest delta values for the current task to times->*time. Plus at exit time cleaning up the remaining delta. That would be a far smaller patch.
Ingo
| |