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] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160503182207.GU24771@twins.programming.kicks-ass.net>
Date:	Tue, 3 May 2016 20:22:07 +0200
From:	Peter Zijlstra <peterz@...radead.org>
To:	Ingo Molnar <mingo@...nel.org>
Cc:	Mike Galbraith <mgalbraith@...e.de>, Chris Mason <clm@...com>,
	Matt Fleming <matt@...eblueprint.co.uk>,
	linux-kernel@...r.kernel.org
Subject: Re: sched: tweak select_idle_sibling to look for idle threads

On Tue, May 03, 2016 at 01:31:31PM +0200, Peter Zijlstra wrote:
> Then flip on the last_idle tracking in select_idle_core():
> 
> root@...-ep:~/bench/sysbench# for i in NO_OLD_IDLE NO_ORDER_IDLE IDLE_CORE NO_FORCE_CORE IDLE IDLE_SMT IDLE_LAST NO_IDLE_FIRST ; do echo $i > /debug/sched_features ; done ; ./doit-psql 30 2 5 10 20 40 80
>   2: [30 secs]     transactions:                        54355  (1811.78 per sec.)
>   5: [30 secs]     transactions:                        122609 (4086.81 per sec.)
>  10: [30 secs]     transactions:                        238738 (7957.66 per sec.)
>  20: [30 secs]     transactions:                        354693 (11822.49 per sec.)
>  40: [30 secs]     transactions:                        421807 (14059.32 per sec.)
>  80: [30 secs]     transactions:                        427088 (14234.25 per sec.)
> 
> 
> And see the top end collapse..

> +	if (sched_feat(IDLE_CORE)) {
> +		if (test_idle_cores(target)) {
> +			i = select_idle_core(p, start);
> +			if ((unsigned)i < nr_cpumask_bits)
> +				return i;
>  
>  			/*
> +			 * Failed to find an idle core; stop looking for one.
>  			 */
> +			clear_idle_cores(target);
> +		}
>  	}

'Obvious' bug there; if we start returning idle threads; we'll not get
to clear_idle_cores() and the thing remains active and badness happens.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ