All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] De-couple sysfs memory directories from memory sections
@ 2011-01-20 16:36 ` Nathan Fontenot
  0 siblings, 0 replies; 27+ messages in thread
From: Nathan Fontenot @ 2011-01-20 16:36 UTC (permalink / raw)
  To: Greg KH
  Cc: linux-mm, linuxppc-dev, linux-kernel, KAMEZAWA Hiroyuki, Robin Holt

This is a re-send of the remaining patches that did not make it
into the last kernel release for de-coupling sysfs memory
directories from memory sections.  The first three patches of the
previous set went in, and this is the remaining patches that
need to be applied.

The patches decouple the concept that a single memory section corresponds
to a single directory in /sys/devices/system/memory/.  On systems
with large amounts of memory (1+ TB) there are performance issues
related to creating the large number of sysfs directories.  For
a powerpc machine with 1 TB of memory we are creating 63,000+
directories.  This is resulting in boot times of around 45-50
minutes for systems with 1 TB of memory and 8+ hours for systems
with 2 TB of memory.  With this patch set applied I am now seeing
boot times of 5 minutes or less.

The root of this issue is in sysfs directory creation. Every time
a directory is created a string compare is done against sibling
directories ( see sysfs_find_dirent() ) to ensure we do not create 
duplicates.  The list of directory nodes in sysfs is kept as an
unsorted list which results in this being an exponentially longer
operation as the number of directories are created.

The solution solved by this patch set is to allow a single
directory in sysfs to span multiple memory sections.  This is
controlled by an optional architecturally defined function
memory_block_size_bytes().  The default definition of this
routine returns a memory block size equal to the memory section
size. This maintains the current layout of sysfs memory
directories as it appears to userspace to remain the same as it
is today.

For architectures that define their own version of this routine,
as is done for powerpc and x86 in this patchset, the view in userspace
would change such that each memoryXXX directory would span
multiple memory sections.  The number of sections spanned would
depend on the value reported by memory_block_size_bytes.

-Nathan Fontenot

^ permalink raw reply	[flat|nested] 27+ messages in thread
* [PATCH 0/4] De-couple sysfs memory directories from memory sections
@ 2011-01-10 18:08 Nathan Fontenot
  2011-01-10 18:11   ` Nathan Fontenot
  0 siblings, 1 reply; 27+ messages in thread
From: Nathan Fontenot @ 2011-01-10 18:08 UTC (permalink / raw)
  To: Greg KH
  Cc: linux-kernel, linuxppc-dev, linux-mm, KAMEZAWA Hiroyuki, Robin Holt

This is a re-send of the remaining patches that did not make it
into the last kernel release for de-coupling sysfs memory
directories from memory sections.  The first three patches of the
previous set went in, and this is the remaining patches that
need to be applied.

The patches decouple the concept that a single memory
section corresponds to a single directory in 
/sys/devices/system/memory/.  On systems
with large amounts of memory (1+ TB) there are performance issues
related to creating the large number of sysfs directories.  For
a powerpc machine with 1 TB of memory we are creating 63,000+
directories.  This is resulting in boot times of around 45-50
minutes for systems with 1 TB of memory and 8 hours for systems
with 2 TB of memory.  With this patch set applied I am now seeing
boot times of 5 minutes or less.

The root of this issue is in sysfs directory creation. Every time
a directory is created a string compare is done against all sibling
directories to ensure we do not create duplicates.  The list of
directory nodes in sysfs is kept as an unsorted list which results
in this being an exponentially longer operation as the number of
directories are created.

The solution solved by this patch set is to allow a single
directory in sysfs to span multiple memory sections.  This is
controlled by an optional architecturally defined function
memory_block_size_bytes().  The default definition of this
routine returns a memory block size equal to the memory section
size. This maintains the current layout of sysfs memory
directories as it appears to userspace to remain the same as it
is today.

For architectures that define their own version of this routine,
as is done for powerpc and x86 in this patchset, the view in userspace
would change such that each memoryXXX directory would span
multiple memory sections.  The number of sections spanned would
depend on the value reported by memory_block_size_bytes.

-Nathan Fontenot

^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2011-02-07  1:43 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-20 16:36 [PATCH 0/4] De-couple sysfs memory directories from memory sections Nathan Fontenot
2011-01-20 16:36 ` Nathan Fontenot
2011-01-20 16:43 ` [PATCH 1/4] Allow memory blocks to span multiple " Nathan Fontenot
2011-01-20 16:43   ` Nathan Fontenot
2011-01-20 16:44 ` [PATCH 2/4] Update phys_index to [start|end]_section_nr Nathan Fontenot
2011-01-20 16:44   ` Nathan Fontenot
2011-01-20 16:45 ` [PATCH 3/4]Define memory_block_size_bytes for powerpc/pseries Nathan Fontenot
2011-01-20 16:45   ` Nathan Fontenot
2011-02-06 23:39   ` Benjamin Herrenschmidt
2011-02-06 23:39     ` Benjamin Herrenschmidt
2011-02-06 23:39     ` Benjamin Herrenschmidt
2011-02-07  1:42     ` Greg KH
2011-02-07  1:42       ` Greg KH
2011-02-07  1:42       ` Greg KH
2011-01-20 16:45 ` [PATCH 0/4] De-couple sysfs memory directories from memory sections Greg KH
2011-01-20 16:45   ` Greg KH
2011-01-20 16:51   ` Nathan Fontenot
2011-01-20 16:51     ` Nathan Fontenot
2011-01-20 17:25     ` Greg KH
2011-01-20 17:25       ` Greg KH
2011-01-20 17:09   ` Dave Hansen
2011-01-20 17:09     ` Dave Hansen
2011-01-20 17:09     ` Dave Hansen
2011-01-20 16:46 ` [PATCH 4/4] Define memory_block_size_bytes for x86_64 with CONFIG_X86_UV Nathan Fontenot
2011-01-20 16:46   ` Nathan Fontenot
  -- strict thread matches above, loose matches on Subject: below --
2011-01-10 18:08 [PATCH 0/4] De-couple sysfs memory directories from memory sections Nathan Fontenot
2011-01-10 18:11 ` [PATCH 1/4] allow memory blocks to span multiple " Nathan Fontenot
2011-01-10 18:11   ` Nathan Fontenot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.