On Sat, 2013-07-13 at 19:45 +0400, Kirill Tkhai wrote: > This patch adds optimization of try_to_wake_up() function > for cases when the system is doing parallel wake_up > of the same task on the different cpus. Also it adds > accounting the statistics of these situations. > > We check the status of the task we want to wake up. > If it is TASK_WAKING then the task is manipulated > by try_to_wake_up() on another cpu. And after this > check it will be a moment when the task is queued > and his status is TASK_RUNNING. We just return > earlier when we are sure the task will be TASK_RUNNING > in the future (maybe right after the check). The profit is > we don't loop while we are waiting the spinlock.
Hm, you're adding cycles to the common case to shave spin cycles in the very rare case, then spending some to note that a collision happened. What makes recording worth even 1 cycle? What am I gonna do with the knowledge that $dinkynum wakeups intersected at a some random task? -Mike -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/