lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <46B2471C.5060801@felicis.org>
Date:	Thu, 02 Aug 2007 23:05:32 +0200
From:	Martin Roehricht <ml@...icis.org>
To:	Ingo Molnar <mingo@...e.hu>
CC:	linux-kernel@...r.kernel.org
Subject: Re: Scheduling the highest priority task

On 02.08.2007 21:48, Ingo Molnar wrote:
> * Martin Roehricht <ml@...icis.org> wrote:
> 
>> On 08/02/2007 05:19 PM, Ingo Molnar wrote:
>> >* Martin Roehricht <ml@...icis.org> wrote:
>> >
>> >>That's fine with me, that within the same priority-queue any task can 
>> >>be chosen. But assume two tasks with highly different priorities, such 
>> >>as 105 and 135 are scheduled on the same processor and one of them is 
>> >>now to be migrated -- shouldn't be the queue with task P=105 
>> >>considered first for migration by this code? Both tasks would use 
>> >>different queues with their own linked lists, right?
>> >
>> >yes. What makes you believe that the lower priority one (prio 135) is 
>> >chosen? [ as i said before, that will only be chosen if all tasks in the 
>> >higher-priority queue (prio 105) are either already running on a CPU or 
>> >have recently run so that the cache-hot logic skips them. ]
>> 
>> This believe is primarily based on my observations of multiple 
>> benchmark runs and also on your statement earlier: »in the SMP 
>> migration code, the 'old scheduler' indeed picks the lowest priority 
>> one«.
> 
> oh, sorry, that was meant to be the 'highest priority one' :-/
> 
> so i think you got it all right, i just typoed that first sentence.

Okay, now I think I understood this part of the code correctly. The 
reason why I observe a continous migration of the _lower_ priority tasks 
is most probably due to the fact that the higher priority one is 
currently running, according to:
	can_migrate_task() in move_tasks(), and therein:

	if (task_running(rq, p))
		return 0;

I tracked down via an extended /proc/schedstats that my tasks fall 
frequently into this pitfall. I basically solved it by making use of the 
more active push-strategy which is called later by load_balance() once 
the move_tasks() function did not succeed. So in case I need the higher 
priority tasks, I return immediately from move_tasks().

Thanks for your help,
Martin
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ