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]
Date:	Fri, 23 Apr 2010 22:18:38 +0300 (EEST)
From:	Pekka J Enberg <penberg@...helsinki.fi>
To:	Christoph Lameter <cl@...ux.com>
cc:	"Rafael J. Wysocki" <rjw@...k.pl>,
	Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
	Kernel Testers List <kernel-testers@...r.kernel.org>,
	Maciej Rutecki <maciej.rutecki@...il.com>,
	Alex Shi <alex.shi@...el.com>, yanmin_zhang@...ux.intel.com,
	tj@...nel.org
Subject: Re: [Bug #15713] hackbench regression due to commit 9dfc6e68bfe6e

On Thu, 22 Apr 2010, Pekka Enberg wrote:
>>> The following bug entry is on the current list of known regressions
>>> from 2.6.33.  Please verify if it still should be listed and let the 
>>> tracking team
>>> know (either way).
>> 
>> I have not been able to reproduce it so far.
>
> So what are our options? We can revert the SLUB conversion patch for now but 
> I still can't see what's wrong with it...

I haven't been able to reproduce this either on my Core 2 machine.

Yanmin, does something like this help on your machines? I'm thinking false 
sharing with some other per-CPU data structure that happens to be put in 
same percpu slot as struct kmem_cache_cpu...

 			Pekka

diff --git a/mm/slub.c b/mm/slub.c
index 7d6c8b1..d8159d6 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -2066,7 +2066,7 @@ init_kmem_cache_node(struct kmem_cache_node *n, struct kmem_cache *s)
  #endif
  }

-static DEFINE_PER_CPU(struct kmem_cache_cpu, kmalloc_percpu[KMALLOC_CACHES]);
+static DEFINE_PER_CPU_ALIGNED(struct kmem_cache_cpu, kmalloc_percpu[KMALLOC_CACHES]);

  static inline int alloc_kmem_cache_cpus(struct kmem_cache *s, gfp_t flags)
  {
@@ -2077,7 +2077,7 @@ static inline int alloc_kmem_cache_cpus(struct kmem_cache *s, gfp_t flags)
  		 */
  		s->cpu_slab = kmalloc_percpu + (s - kmalloc_caches);
  	else
-		s->cpu_slab =  alloc_percpu(struct kmem_cache_cpu);
+		s->cpu_slab = __alloc_percpu(sizeof(struct kmem_cache_cpu), cache_line_size());

  	if (!s->cpu_slab)
  		return 0;
--
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