linux/Documentation
Paul Jackson 825a46af5a [PATCH] cpuset memory spread basic implementation
This patch provides the implementation and cpuset interface for an alternative
memory allocation policy that can be applied to certain kinds of memory
allocations, such as the page cache (file system buffers) and some slab caches
(such as inode caches).

The policy is called "memory spreading." If enabled, it spreads out these
kinds of memory allocations over all the nodes allowed to a task, instead of
preferring to place them on the node where the task is executing.

All other kinds of allocations, including anonymous pages for a tasks stack
and data regions, are not affected by this policy choice, and continue to be
allocated preferring the node local to execution, as modified by the NUMA
mempolicy.

There are two boolean flag files per cpuset that control where the kernel
allocates pages for the file system buffers and related in kernel data
structures.  They are called 'memory_spread_page' and 'memory_spread_slab'.

If the per-cpuset boolean flag file 'memory_spread_page' is set, then the
kernel will spread the file system buffers (page cache) evenly over all the
nodes that the faulting task is allowed to use, instead of preferring to put
those pages on the node where the task is running.

If the per-cpuset boolean flag file 'memory_spread_slab' is set, then the
kernel will spread some file system related slab caches, such as for inodes
and dentries evenly over all the nodes that the faulting task is allowed to
use, instead of preferring to put those pages on the node where the task is
running.

The implementation is simple.  Setting the cpuset flags 'memory_spread_page'
or 'memory_spread_cache' turns on the per-process flags PF_SPREAD_PAGE or
PF_SPREAD_SLAB, respectively, for each task that is in the cpuset or
subsequently joins that cpuset.  In subsequent patches, the page allocation
calls for the affected page cache and slab caches are modified to perform an
inline check for these flags, and if set, a call to a new routine
cpuset_mem_spread_node() returns the node to prefer for the allocation.

The cpuset_mem_spread_node() routine is also simple.  It uses the value of a
per-task rotor cpuset_mem_spread_rotor to select the next node in the current
tasks mems_allowed to prefer for the allocation.

This policy can provide substantial improvements for jobs that need to place
thread local data on the corresponding node, but that need to access large
file system data sets that need to be spread across the several nodes in the
jobs cpuset in order to fit.  Without this patch, especially for jobs that
might have one thread reading in the data set, the memory allocation across
the nodes in the jobs cpuset can become very uneven.

A couple of Copyright year ranges are updated as well.  And a couple of email
addresses that can be found in the MAINTAINERS file are removed.

Signed-off-by: Paul Jackson <pj@sgi.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-24 07:33:22 -08:00
..
DocBook [PATCH] remove ISA legacy functions: remove documentation 2006-03-24 07:33:19 -08:00
RCU [PATCH] RCU documentation fixes (January 2006 update) 2006-02-01 08:53:25 -08:00
aoe
arm [ARM] 3332/1: S3C24XX - documentation update 2006-03-21 22:06:03 +00:00
block barrier.txt got lost while the new barrier patchset was climbing up 2006-01-16 09:45:58 +01:00
cdrom
connector [CONNECTOR]: Use netlink_has_listeners() to avoind unnecessary allocations. 2006-03-20 22:21:40 -08:00
cpu-freq [PATCH] cpufreq: documentation for 'ondemand' and 'conservative' 2005-12-01 01:23:23 -08:00
cris
crypto
device-mapper
driver-model [PATCH] Clean up Documentation/driver-model/overview.txt 2006-02-03 08:31:59 -08:00
drivers/edac [PATCH] EDAC: core EDAC support code 2006-01-18 19:20:31 -08:00
dvb Documentation/dvb/get_dvb_firmware: fix firmware URL 2006-03-22 00:43:59 +01:00
early-userspace
fb [PATCH] Update cyblafb driver 2006-01-09 10:00:36 -08:00
filesystems NTFS: 2.1.27 - Various bug fixes and cleanups. 2006-03-23 17:04:12 +00:00
firmware_class
fujitsu/frv [PATCH] FRV: Use virtual interrupt disablement 2006-02-14 16:09:35 -08:00
hwmon [PATCH] w83781d: Don't reset the chip by default 2006-03-23 14:21:53 -08:00
i2c [PATCH] I2C: i2c-piix4: Add Broadcom HT-1000 support 2006-03-23 14:21:55 -08:00
i2o spelling: s/retreive/retrieve/ 2006-01-10 00:10:13 +01:00
i386
ia64
infiniband
input Fix "stuct", "strut", "struc" typos 2006-01-15 02:12:54 +01:00
ioctl spelling: s/appropiate/appropriate/ 2006-01-15 02:00:17 +01:00
isdn
kbuild kbuild: remove GCC_VERSION 2006-01-08 19:58:51 +01:00
kdump [PATCH] kdump: add dmesg gdbmacro into document 2006-01-11 18:42:10 -08:00
m68k
mips [MIPS] Update docs to reflect the latest status of the Alchemy IDE driver. 2006-02-14 19:13:23 +00:00
networking [PKTGEN]: Add MPLS extension. 2006-03-23 01:10:26 -08:00
parisc
pcmcia [PATCH] pcmcia: unify attach, EVENT_CARD_INSERTION handlers into one probe callback 2006-01-06 00:03:24 +01:00
power [PATCH] swsusp: userland interface 2006-03-23 07:38:07 -08:00
powerpc [PATCH] powerpc: Add FSL SEC node to documentation 2006-03-23 14:41:09 +11:00
s390 [PATCH] s390: cio documentation update 2006-03-24 07:33:15 -08:00
scsi [SCSI] megaraid_sas: support for 1078 type controller added 2006-02-04 16:38:41 -06:00
serial
sh
sound [ALSA] Fixes typos in Audiophile-USB.txt 2006-03-22 10:40:10 +01:00
sparc
spi [PATCH] SPI: spi_butterfly, restore lost deltas 2006-02-06 12:17:17 -08:00
sysctl [PATCH] suspend-to-ram: allow video options to be set at runtime 2006-02-20 20:00:10 -08:00
telephony
uml
usb [PATCH] USB: ZC0301 driver bugfix 2006-03-20 14:50:01 -08:00
video4linux V4L/DVB (3504): Medion 7134: Autodetect second bridge chip 2006-03-21 08:53:33 -08:00
vm [PATCH] Page migration documentation update 2006-03-14 21:43:02 -08:00
w1 [PATCH] W1: Add the DS2482 I2C-to-w1 bridge driver. 2006-03-23 17:28:12 -08:00
watchdog
x86_64 [PATCH] x86_64: Better ATI timer fix 2006-02-26 09:53:31 -08:00
00-INDEX
BUG-HUNTING Documentation: Update to BUG-HUNTING 2006-03-22 00:37:42 +01:00
Changes Documentation/Changes: remove outdated translation references 2006-03-20 20:28:13 +01:00
CodingStyle [PATCH] CodingStyle correction 2006-01-10 08:01:52 -08:00
DMA-API.txt
DMA-ISA-LPC.txt
DMA-mapping.txt
HOWTO
IO-mapping.txt
IPMI.txt
IRQ-affinity.txt
MSI-HOWTO.txt
ManagementStyle
PCIEBUS-HOWTO.txt
README.DAC960
README.cycladesZ
SAK.txt
SecurityBugs
SubmittingDrivers [PATCH] docs: update some updated code docs 2006-01-14 10:39:53 -08:00
SubmittingPatches [PATCH] docs: update some updated code docs 2006-01-14 10:39:53 -08:00
VGA-softcursor.txt
acpi-hotkey.txt
applying-patches.txt [PATCH] Docs update: typos, corrections and additions to applying-patches.txt 2006-01-10 08:01:54 -08:00
atomic_ops.txt
basic_profiling.txt
binfmt_misc.txt
cachetlb.txt spelling: s/appropiate/appropriate/ 2006-01-15 02:00:17 +01:00
cciss.txt
cli-sti-removal.txt
computone.txt
cpqarray.txt
cpu-hotplug.txt [PATCH] cpu hotplug documentation fix 2006-02-20 20:00:10 -08:00
cpusets.txt [PATCH] cpuset memory spread basic implementation 2006-03-24 07:33:22 -08:00
cputopology.txt [PATCH] Export cpu topology in sysfs 2006-02-03 08:32:09 -08:00
dcdbas.txt
debugging-modules.txt
dell_rbu.txt
devices.txt
digiepca.txt
dnotify.txt
dontdiff
eisa.txt
exception.txt
feature-removal-schedule.txt [PATCH] PCI: the scheduled removal of PCI_LEGACY_PROC 2006-03-23 14:35:16 -08:00
floppy.txt
ftape.txt
hayes-esp.txt
highuid.txt
hpet.txt Documentation/hpet.txt typo 2006-01-15 02:09:54 +01:00
hrtimers.txt [PATCH] hrtimer: hrtimer documentation 2006-01-10 08:01:37 -08:00
hw_random.txt
ibm-acpi.txt
ide.txt
initrd.txt
io_ordering.txt
ioctl-number.txt
iostats.txt
isapnp.txt
java.txt
kernel-doc-nano-HOWTO.txt [PATCH] Doc/kernel-doc: add more usage info 2006-02-01 08:53:27 -08:00
kernel-docs.txt
kernel-parameters.txt [PATCH] PCI: Provide a boot parameter to disable MSI 2006-03-23 14:35:16 -08:00
keys-request-key.txt [PATCH] keys: Permit running process to instantiate keys 2006-01-08 20:13:53 -08:00
keys.txt [PATCH] keys: Permit running process to instantiate keys 2006-01-08 20:13:53 -08:00
kobject.txt
kprobes.txt [PATCH] kprobes: Update Documentation/kprobes.txt 2006-02-14 16:09:34 -08:00
kref.txt
laptop-mode.txt spelling: s/appropiate/appropriate/ 2006-01-15 02:00:17 +01:00
ldm.txt
locks.txt [PATCH] Docs update: remove obsolete patch from locks.txt 2006-01-10 08:01:54 -08:00
logo.gif
logo.txt
magic-number.txt
mandatory.txt
mca.txt
md.txt [PATCH] md: allow sync-speed to be controlled per-device 2006-01-06 08:34:10 -08:00
memory.txt
mono.txt
moxa-smartio
mtrr.txt
mutex-design.txt [PATCH] mutex subsystem, documentation 2006-01-09 15:59:20 -08:00
nbd.txt
nfsroot.txt
nmi_watchdog.txt
nommu-mmap.txt
numastat.txt
oops-tracing.txt [PATCH] doc: refer to kdump in oops-tracing.txt 2006-01-11 18:42:10 -08:00
paride.txt
parport-lowlevel.txt [PATCH] parport: fix documentation 2006-02-03 08:32:06 -08:00
parport.txt
pci-error-recovery.txt [PATCH] Documentation: Updated PCI Error Recovery 2006-02-03 08:32:00 -08:00
pci.txt
pm.txt [ACPI] linux-acpi@vger.kernel.org replaces acpi-devel@lists.sourceforge.net 2006-01-06 16:19:26 -05:00
pnp.txt
preempt-locking.txt
prio_tree.txt
ramdisk.txt
riscom8.txt
rocket.txt
rpc-cache.txt
rtc.txt
sched-arch.txt
sched-coding.txt
sched-design.txt
sched-domains.txt
sched-stats.txt
seclvl.txt
serial-console.txt
sgi-ioc4.txt
sgi-visws.txt
sharedsubtree.txt
smart-config.txt
smp.txt
sonypi.txt
sparse.txt
specialix.txt
spinlocks.txt fix rwlock usage example 2006-03-22 00:19:39 +01:00
stable_api_nonsense.txt
stable_kernel_rules.txt [PATCH] Docs update: small fixes to stable_kernel_rules.txt 2006-01-10 08:01:55 -08:00
stallion.txt
svga.txt
sx.txt
sysrq.txt update for Documentation/sysrq.txt 2006-01-03 13:31:01 +01:00
time_interpolators.txt
tipar.txt
tty.txt
unicode.txt
unshare.txt [PATCH] unshare system call -v5: Documentation file 2006-02-07 16:12:34 -08:00
voyager.txt
xterm-linux.xpm
zorro.txt

README.cycladesZ

The Cyclades-Z must have firmware loaded onto the card before it will
operate.  This operation should be performed during system startup,

The firmware, loader program and the latest device driver code are
available from Cyclades at
    ftp://ftp.cyclades.com/pub/cyclades/cyclades-z/linux/