svn commit: r193690 - user/kmacy/releng_7_2_fcs/sys/vm

Kip Macy kmacy at FreeBSD.org
Mon Jun 8 06:12:47 UTC 2009


Author: kmacy
Date: Mon Jun  8 06:12:47 2009
New Revision: 193690
URL: http://svn.freebsd.org/changeset/base/193690

Log:
  avoid false sharing by aligning sections

Modified:
  user/kmacy/releng_7_2_fcs/sys/vm/uma_int.h

Modified: user/kmacy/releng_7_2_fcs/sys/vm/uma_int.h
==============================================================================
--- user/kmacy/releng_7_2_fcs/sys/vm/uma_int.h	Mon Jun  8 06:11:36 2009	(r193689)
+++ user/kmacy/releng_7_2_fcs/sys/vm/uma_int.h	Mon Jun  8 06:12:47 2009	(r193690)
@@ -177,7 +177,7 @@ struct uma_cache {
 	uma_bucket_t	uc_allocbucket;	/* Bucket to allocate from */
 	u_int64_t	uc_allocs;	/* Count of allocations */
 	u_int64_t	uc_frees;	/* Count of frees */
-};
+} __aligned(128);
 
 typedef struct uma_cache * uma_cache_t;
 
@@ -280,11 +280,12 @@ struct uma_zone {
 	uma_dtor	uz_dtor;	/* Destructor */
 	uma_init	uz_init;	/* Initializer for each item */
 	uma_fini	uz_fini;	/* Discards memory */
+	/* separate uz_flags from stats keeping */
+	u_int32_t	uz_flags;/* Flags inherited from kegs */
 
-	u_int64_t	uz_allocs;	/* Total number of allocations */
+	u_int64_t	uz_allocs __aligned(128);	/* Total number of allocations */
 	u_int64_t	uz_frees;	/* Total number of frees */
 	u_int64_t	uz_fails;	/* Total number of alloc failures */
-	u_int32_t	uz_flags;	/* Flags inherited from kegs */
 	u_int32_t	uz_size;	/* Size inherited from kegs */
 	uint16_t	uz_fills;	/* Outstanding bucket fills */
 	uint16_t	uz_count;	/* Highest value ub_ptr can have */
@@ -293,7 +294,7 @@ struct uma_zone {
 	 * This HAS to be the last item because we adjust the zone size
 	 * based on NCPU and then allocate the space for the zones.
 	 */
-	struct uma_cache	uz_cpu[1];	/* Per cpu caches */
+	struct uma_cache	uz_cpu[1] __aligned(128);	/* Per cpu caches */
 };
 
 /*


More information about the svn-src-user mailing list