kernel-ark/include/linux
Paul Jackson 9bf2229f88 [PATCH] cpusets: formalize intermediate GFP_KERNEL containment
This patch makes use of the previously underutilized cpuset flag
'mem_exclusive' to provide what amounts to another layer of memory placement
resolution.  With this patch, there are now the following four layers of
memory placement available:

 1) The whole system (interrupt and GFP_ATOMIC allocations can use this),
 2) The nearest enclosing mem_exclusive cpuset (GFP_KERNEL allocations can use),
 3) The current tasks cpuset (GFP_USER allocations constrained to here), and
 4) Specific node placement, using mbind and set_mempolicy.

These nest - each layer is a subset (same or within) of the previous.

Layer (2) above is new, with this patch.  The call used to check whether a
zone (its node, actually) is in a cpuset (in its mems_allowed, actually) is
extended to take a gfp_mask argument, and its logic is extended, in the case
that __GFP_HARDWALL is not set in the flag bits, to look up the cpuset
hierarchy for the nearest enclosing mem_exclusive cpuset, to determine if
placement is allowed.  The definition of GFP_USER, which used to be identical
to GFP_KERNEL, is changed to also set the __GFP_HARDWALL bit, in the previous
cpuset_gfp_hardwall_flag patch.

GFP_ATOMIC and GFP_KERNEL allocations will stay within the current tasks
cpuset, so long as any node therein is not too tight on memory, but will
escape to the larger layer, if need be.

The intended use is to allow something like a batch manager to handle several
jobs, each job in its own cpuset, but using common kernel memory for caches
and such.  Swapper and oom_kill activity is also constrained to Layer (2).  A
task in or below one mem_exclusive cpuset should not cause swapping on nodes
in another non-overlapping mem_exclusive cpuset, nor provoke oom_killing of a
task in another such cpuset.  Heavy use of kernel memory for i/o caching and
such by one job should not impact the memory available to jobs in other
non-overlapping mem_exclusive cpusets.

This patch enables providing hardwall, inescapable cpusets for memory
allocations of each job, while sharing kernel memory allocations between
several jobs, in an enclosing mem_exclusive cpuset.

Like Dinakar's patch earlier to enable administering sched domains using the
cpu_exclusive flag, this patch also provides a useful meaning to a cpuset flag
that had previously done nothing much useful other than restrict what cpuset
configurations were allowed.

Signed-off-by: Paul Jackson <pj@sgi.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-07 16:57:40 -07:00
..
byteorder
dvb
hdlc
isdn
lockd
mmc [MMC] ios for mmc chip select 2005-09-03 16:45:02 +01:00
mtd
netfilter [NETLINK]: Convert netlink users to use group numbers instead of bitmasks 2005-08-29 16:00:54 -07:00
netfilter_arp
netfilter_bridge
netfilter_ipv4 [NETFILTER]: Add new iptables TTL target 2005-08-29 16:13:22 -07:00
netfilter_ipv6 [NETFILTER6]: Add new ip6tables HOPLIMIT target 2005-08-29 16:13:29 -07:00
nfsd
raid
sunrpc [PATCH] sunrpc: cache_register can use wrong module reference 2005-09-07 16:57:25 -07:00
tc_act
tc_ematch
8250_pci.h
a.out.h
ac97_codec.h
acct.h
acpi.h
adb.h
adfs_fs_i.h
adfs_fs_sb.h
adfs_fs.h
affs_fs.h
affs_hardblocks.h
agp_backend.h
agpgart.h
aio_abi.h
aio.h
amifd.h
amifdreg.h
amigaffs.h
apm_bios.h
arcdevice.h
arcfb.h
ata.h Merge /spare/repo/linux-2.6/ 2005-08-29 15:59:42 -04:00
atalk.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_suni.h
atm_tcp.h
atm_zatm.h
atm.h
atmapi.h
atmarp.h
atmbr2684.h
atmclip.h
atmdev.h
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
attribute_container.h
audit.h
auto_fs4.h
auto_fs.h
auxvec.h [PATCH] auxiliary vector cleanups 2005-09-07 16:57:21 -07:00
awe_voice.h
ax25.h
b1lli.h
b1pcmcia.h
backing-dev.h
backlight.h
baycom.h
bcd.h
bfs_fs.h
binfmts.h
bio.h [PATCH] kill bio->bi_set 2005-09-07 16:57:20 -07:00
bitmap.h
bitops.h
blkdev.h
blkpg.h
blockgroup_lock.h
bootmem.h
bpqether.h
buffer_head.h
cache.h
capability.h [PATCH] VM: add capabilites check to set_zone_reclaim 2005-09-05 00:05:44 -07:00
capi.h
cciss_ioctl.h
cd1400.h
cdev.h
cdk.h
cdrom.h
chio.h
circ_buf.h
cobalt-nvram.h
coda_cache.h
coda_fs_i.h
coda_linux.h
coda_proc.h
coda_psdev.h
coda.h
coff.h
com20020.h
compat_ioctl.h
compat.h [PATCH] compat: be more consistent about [ug]id_t 2005-09-07 16:57:19 -07:00
compiler-gcc2.h
compiler-gcc3.h
compiler-gcc4.h
compiler-gcc.h
compiler-intel.h
compiler.h
completion.h
comstats.h
concap.h
config.h
console_struct.h
console.h
consolemap.h
cpu.h [PATCH] remove driverfs references from include/linux/cpu.h and net/sunrpc/rpc_pipe.c 2005-09-02 00:57:31 -07:00
cpufreq.h
cpumask.h
cpuset.h [PATCH] cpusets: formalize intermediate GFP_KERNEL containment 2005-09-07 16:57:40 -07:00
cramfs_fs_sb.h
cramfs_fs.h
crash_dump.h
crc32.h
crc32c.h
crc-ccitt.h
crypto.h [CRYPTO]: Added CRYPTO_TFM_REQ_MAY_SLEEP flag 2005-09-01 17:43:05 -07:00
cryptohash.h
ctype.h
cuda.h
cyclades.h
cyclomx.h
cycx_cfm.h
cycx_drv.h
cycx_x25.h
dcache.h
dccp.h [DCCP]: Introduce DCCP_SOCKOPT_PACKET_SIZE 2005-08-29 16:13:37 -07:00
dcookies.h
debugfs.h
delay.h
devfs_fs_kernel.h
devfs_fs.h
device-mapper.h
device.h
devpts_fs.h
dio.h
dirent.h
divert.h
dm9000.h
dm-ioctl.h
dma-mapping.h
dmapool.h
dmi.h
dn.h
dnotify.h
dqblk_v1.h
dqblk_v2.h
dqblk_xfs.h
ds1286.h
dtlk.h
edd.h
eeprom.h
efi.h [PATCH] x86: fix EFI memory map parsing 2005-09-05 00:06:09 -07:00
efs_dir.h
efs_fs_i.h
efs_fs_sb.h
efs_fs.h
efs_vh.h
eisa.h
elevator.h
elf-fdpic.h
elf.h [PATCH] auxiliary vector cleanups 2005-09-07 16:57:21 -07:00
elfcore.h
err.h
errno.h
errqueue.h
etherdevice.h
ethtool.h [NET]: Add support for getting the permanent hardware address. 2005-08-29 16:02:44 -07:00
eventpoll.h
ext2_fs_sb.h
ext2_fs.h [PATCH] disk quotas fail when /etc/mtab is symlinked to /proc/mounts 2005-09-07 16:57:23 -07:00
ext3_fs_i.h
ext3_fs_sb.h
ext3_fs.h [PATCH] disk quotas fail when /etc/mtab is symlinked to /proc/mounts 2005-09-07 16:57:23 -07:00
ext3_jbd.h
fadvise.h
fb.h
fcdevice.h
fcntl.h
fd1772.h
fd.h
fddidevice.h
fdreg.h
file.h
filter.h
firmware.h [PATCH] modified firmware_class.c to support no hotplug 2005-09-07 16:57:26 -07:00
flat.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
font.h
fs_struct.h
fs.h [PATCH] remove file.f_maxcount 2005-09-07 16:57:32 -07:00
fsl_devices.h
fsnotify.h [PATCH] inotify: add MOVE_SELF event 2005-08-15 09:50:31 -07:00
ftape-header-segment.h
ftape-vendors.h
ftape.h
futex.h [PATCH] FUTEX_WAKE_OP: pthread_cond_signal() speedup 2005-09-07 16:57:17 -07:00
gameport.h
gen_stats.h
genalloc.h
generic_serial.h
genhd.h
gfp.h [PATCH] cpusets: new __GFP_HARDWALL flag 2005-09-07 16:57:40 -07:00
hardirq.h
harrier_defs.h
hash.h
hayesesp.h
hdlc.h
hdlcdrv.h
hdpu_features.h
hdreg.h
hdsmart.h
hiddev.h
highmem.h
highuid.h
hippidevice.h [NET]: net/802: more endian annotations 2005-08-29 16:10:54 -07:00
hpet.h
hpfs_fs.h
hugetlb.h [PATCH] remove hugetlb_clean_stale_pgtable() and fix huge_pte_alloc() 2005-09-05 00:05:46 -07:00
hwmon-sysfs.h [PATCH] I2C: W83792D driver 1/3 2005-09-05 09:14:13 -07:00
hwmon-vid.h [PATCH] hwmon: hwmon vs i2c, second round (10/11) 2005-09-05 09:14:23 -07:00
hwmon.h [PATCH] hwmon: move SENSORS_LIMIT to hwmon.h 2005-09-05 09:14:17 -07:00
hysdn_if.h
i2c-algo-bit.h
i2c-algo-ite.h
i2c-algo-pca.h
i2c-algo-pcf.h
i2c-algo-sgi.h
i2c-algo-sibyte.h
i2c-dev.h
i2c-id.h [PATCH] I2C: Kill i2c_algorithm.id (7/7) 2005-09-05 09:14:33 -07:00
i2c-isa.h [PATCH] I2C: Kill i2c_algorithm.id (5/7) 2005-09-05 09:14:31 -07:00
i2c.h [PATCH] I2C: Drop the I2C_ACK_TEST ioctl 2005-09-05 09:26:56 -07:00
i2o-dev.h
i2o.h
i8k.h
ibmtr.h
icmp.h
icmpv6.h
ide.h
idr.h
if_arcnet.h
if_arp.h
if_bonding.h
if_bridge.h
if_cablemodem.h
if_ec.h
if_eql.h
if_ether.h [NET]: Fix sparse warnings 2005-08-29 16:01:32 -07:00
if_fc.h [NET]: net/802: more endian annotations 2005-08-29 16:10:54 -07:00
if_fddi.h [NET]: net/802: more endian annotations 2005-08-29 16:10:54 -07:00
if_frad.h [NET]: Fix sparse warnings 2005-08-29 16:01:32 -07:00
if_hippi.h [NET]: net/802: more endian annotations 2005-08-29 16:10:54 -07:00
if_infiniband.h
if_ltalk.h
if_packet.h
if_plip.h
if_ppp.h
if_pppox.h
if_shaper.h
if_slip.h
if_strip.h
if_tr.h [NET]: Fix sparse warnings 2005-08-29 16:01:32 -07:00
if_tun.h [TUNTAP]: Allow setting the linktype of the tap device from userspace 2005-09-01 17:40:05 -07:00
if_tunnel.h
if_vlan.h [NET]: Kill skb->real_dev 2005-08-29 15:32:25 -07:00
if_wanpipe_common.h
if_wanpipe.h
if.h
igmp.h [NET]: Fix sparse warnings 2005-08-29 16:01:32 -07:00
in6.h
in_route.h
in.h [DCCP]: Initial implementation 2005-08-29 15:49:46 -07:00
inet_diag.h [INET_DIAG]: Rename tcp_diag.[ch] to inet_diag.[ch] 2005-08-29 15:57:48 -07:00
inet.h
inetdevice.h
init_task.h
init.h
initrd.h
inotify.h [PATCH] inotify: fix event loss on hardlinked files 2005-09-07 16:57:39 -07:00
input.h
interrupt.h
ioc4.h
ioctl32.h [PATCH] remove register_ioctl32_conversion and unregister_ioctl32_conversion 2005-09-07 16:57:20 -07:00
ioctl.h
ioport.h
ioprio.h
ip6_tunnel.h
ip_mp_alg.h
ip.h [NET]: Introduce inet_connection_sock 2005-08-29 15:43:19 -07:00
ipc.h
ipmi_msgdefs.h
ipmi_smi.h
ipmi.h
ipsec.h
ipv6_route.h
ipv6.h [IPV6]: Generalise the tcp_v6_lookup routines 2005-08-29 15:57:24 -07:00
ipx.h
irda.h
irq_cpustat.h
irq.h [PATCH] CHECK_IRQ_PER_CPU() to avoid dead code in __do_IRQ() 2005-09-07 16:57:29 -07:00
isapnp.h
isdn_divertif.h
isdn_ppp.h
isdn.h [PATCH] Remove non-arch consumers of asm/segment.h 2005-09-07 16:57:34 -07:00
isdnif.h
isicom.h
iso_fs.h
istallion.h
ite_gpio.h
ixjuser.h
jbd.h [PATCH] fs/jbd/: cleanups 2005-09-07 16:57:19 -07:00
jffs2_fs_i.h
jffs2_fs_sb.h
jffs2.h
jffs.h
jhash.h
jiffies.h
journal-head.h
joystick.h
kallsyms.h
kbd_diacr.h
kbd_kern.h
kd.h
kdev_t.h
kernel_stat.h
kernel.h
kernelcapi.h
kexec.h [PATCH] kexec code cleanup 2005-06-25 16:24:55 -07:00
key-ui.h
key.h
keyboard.h
keyctl.h
kfifo.h
klist.h [PATCH] klist: fix klist to have the same klist_add semantics as list_head 2005-09-05 16:03:13 -07:00
kmalloc_sizes.h
kmod.h
kobj_map.h
kobject_uevent.h
kobject.h
kprobes.h
kref.h
kthread.h
lapb.h
lcd.h
libata.h /spare/repo/libata-dev branch 'iomap-try3' 2005-09-05 05:20:33 -04:00
libps2.h
limits.h
linkage.h
linux_logo.h
list.h [LIST]: Add docbook header comments for hlist_add_{before,after}_rcu() 2005-08-29 16:11:00 -07:00
llc.h
loop.h
lp.h
major.h
matroxfb.h
mbcache.h
mc6821.h
mc146818rtc.h
mca-legacy.h
mca.h
mempolicy.h [PATCH] /proc/<pid>/numa_maps to show on which nodes pages reside 2005-09-05 00:05:43 -07:00
mempool.h
meye.h
mii.h
minix_fs.h
miscdevice.h
mm_inline.h
mm.h
mman.h
mmtimer.h
mmzone.h [PATCH] sparsemem extreme: hotplug preparation 2005-09-05 00:05:38 -07:00
mod_devicetable.h [PATCH] Make MODULE_DEVICE_TABLE work for vio devices 2005-08-30 13:31:56 +10:00
module.h
moduleloader.h
moduleparam.h
mount.h
mpage.h
mqueue.h
mroute.h
msdos_fs.h
msg.h [PATCH] ipc: convert /proc/sysvipc/* to generic seq_file interface 2005-09-07 16:57:26 -07:00
mtio.h
mv643xx.h [PATCH] ppc32: mv64x60 updates & enhancements 2005-09-05 00:06:00 -07:00
n_r3964.h
namei.h
namespace.h
nbd.h
ncp_fs_i.h
ncp_fs_sb.h
ncp_fs.h
ncp_mount.h
ncp_no.h
ncp.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
net.h [NET]: Fix sparse warnings 2005-08-29 16:01:32 -07:00
netdevice.h [NET]: Add support for getting the permanent hardware address. 2005-08-29 16:02:44 -07:00
netfilter_arp.h
netfilter_bridge.h
netfilter_decnet.h [NETLINK]: Convert netlink users to use group numbers instead of bitmasks 2005-08-29 16:00:54 -07:00
netfilter_ipv4.h [NETFILTER]: Rename skb_ip_make_writable() to skb_make_writable() 2005-08-29 15:34:40 -07:00
netfilter_ipv6.h [NET]: Fix sparse warnings 2005-08-29 16:01:32 -07:00
netfilter_logging.h
netfilter.h [NETFILTER]: Fix gcc-3.4.x warning about iplicit operator precedence 2005-08-29 15:57:14 -07:00
netlink.h [NETLINK]: Fix sparse warnings 2005-08-29 16:01:35 -07:00
netpoll.h [NETPOLL]: fix initialization/NAPI race 2005-08-11 19:27:43 -07:00
netrom.h
nfs2.h
nfs3.h
nfs4_acl.h
nfs4_mount.h
nfs4.h
nfs_fs_i.h
nfs_fs_sb.h
nfs_fs.h [PATCH] NFS: Introduce the use of inode->i_lock to protect fields in nfsi 2005-08-18 12:53:57 -07:00
nfs_idmap.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
nfs_mount.h
nfs_page.h
nfs_xdr.h
nfs.h
nfsacl.h
nfsd_idmap.h
nls.h
nmi.h
node.h
nodemask.h
notifier.h
nubus.h
numa.h
nvram.h
openprom_fs.h
oprofile.h
page-flags.h [PATCH] VM: add page_state info to per-node meminfo 2005-09-05 00:05:49 -07:00
pagemap.h
pagevec.h
param.h
parport_pc.h
parport.h
parser.h
patchkey.h
pci_ids.h [PATCH] MIPS Technologies PCI ID bits 2005-09-05 00:06:04 -07:00
pci-acpi.h
pci.h [PATCH] PCI: 6700/6702PXH quirk 2005-08-16 21:06:24 -07:00
pcieport_if.h
percpu_counter.h
percpu.h
personality.h
pfkeyv2.h
pg.h
phonedev.h
phy.h [PATCH] PHY Layer fixup 2005-08-28 20:28:25 -04:00
pid.h
pipe_fs_i.h [PATCH] remove pipe definitions 2005-09-07 16:57:24 -07:00
pkt_cls.h
pkt_sched.h
pktcdvd.h
platform.h
pm.h [PATCH] swsusp: switch pm_message_t to struct 2005-09-05 00:06:16 -07:00
pmu.h
pnp.h [PATCH] PNP: make pnp_dbg conditional directly on CONFIG_PNP_DEBUG 2005-09-07 16:57:25 -07:00
pnpbios.h
poll.h
posix_acl_xattr.h
posix_acl.h
posix_types.h
posix-timers.h
ppdev.h
ppp_channel.h
ppp_defs.h
ppp-comp.h
prctl.h
preempt.h
prefetch.h
prio_tree.h
proc_fs.h
profile.h
ps2esdi.h
ptrace.h [PATCH] Uml support: add PTRACE_SYSEMU_SINGLESTEP option to i386 2005-09-05 00:06:20 -07:00
qic117.h
qnx4_fs.h
qnxtypes.h
quota.h
quotaio_v1.h
quotaio_v2.h
quotaops.h
radeonfb.h
radix-tree.h
ramfs.h
random.h [RANDOM]: Introduce secure_dccp_sequence_number 2005-08-29 15:49:40 -07:00
raw.h
rbtree.h
rcupdate.h
reboot_fixups.h
reboot.h
reiserfs_acl.h
reiserfs_fs_i.h
reiserfs_fs_sb.h
reiserfs_fs.h
reiserfs_xattr.h
relayfs_fs.h [PATCH] relayfs 2005-09-07 16:57:18 -07:00
resource.h
rmap.h
romfs_fs.h
root_dev.h
rose.h
route.h
rslib.h
rtc.h
rtnetlink.h [NETLINK]: Convert netlink users to use group numbers instead of bitmasks 2005-08-29 16:00:54 -07:00
rwsem-spinlock.h
rwsem.h
sc26198.h
scatterlist.h
scc.h
sched.h [PATCH] auxiliary vector cleanups 2005-09-07 16:57:21 -07:00
sctp.h
scx200_gpio.h
scx200.h
sdla_asy.h
sdla_chdlc.h
sdla_fr.h
sdla_ppp.h
sdla_x25.h
sdla.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sdladrv.h
sdlapci.h
sdlasfm.h
seccomp.h
securebits.h
security.h [NET]: Fix sparse warnings 2005-08-29 16:01:32 -07:00
selection.h
selinux_netlink.h [NETLINK]: Convert netlink users to use group numbers instead of bitmasks 2005-08-29 16:00:54 -07:00
sem.h [PATCH] ipc: convert /proc/sysvipc/* to generic seq_file interface 2005-09-07 16:57:26 -07:00
seq_file.h
seqlock.h
serial167.h
serial_8250.h [SERIAL] Move serial8250_*_port prototypes to linux/serial_8250.h 2005-09-01 15:56:26 +01:00
serial_core.h [ARM] 2866/1: add i.MX set_mctrl / get_mctrl functions 2005-08-31 21:48:47 +01:00
serial_reg.h
serial.h [ARM] 2866/1: add i.MX set_mctrl / get_mctrl functions 2005-08-31 21:48:47 +01:00
serialP.h
serio.h
shm.h
shmem_fs.h
signal.h
skbuff.h [NET]: Implement SKB fast cloning. 2005-08-29 16:01:54 -07:00
slab.h
smb_fs_i.h
smb_fs_sb.h
smb_fs.h
smb_mount.h
smb.h
smbno.h
smp_lock.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
smp.h
snmp.h
socket.h [NET]: Fix sparse warnings 2005-08-29 16:01:32 -07:00
sockios.h
som.h
sonet.h
sonypi.h [PATCH] sonypi SPIC initialisation fix 2005-09-07 16:57:24 -07:00
sort.h
sound.h [PATCH] Assign device pointer to OSS devices 2005-08-30 08:58:37 +02:00
soundcard.h
spinlock.h
stallion.h
stat.h
statfs.h
stddef.h
stop_machine.h
string.h
stringify.h
superhyway.h
suspend.h
swap.h [PATCH] swap: swap_lock replace list+device 2005-09-05 00:05:42 -07:00
swapops.h [PATCH] comment typo fix 2005-09-05 00:05:45 -07:00
synclink.h
sys.h
syscalls.h
sysctl.h
sysdev.h
sysfs.h
sysrq.h
sysv_fs.h
tcp.h [ICSK]: Move TCP congestion avoidance members to icsk 2005-08-29 15:56:18 -07:00
telephony.h
termios.h
textsearch_fsm.h
textsearch.h
thread_info.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
threads.h
ticable.h
time.h [PATCH] Delete unused do_nanosleep declaration 2005-09-07 16:57:30 -07:00
timer.h
times.h
timex.h [PATCH] NTP: ntp-helper functions 2005-09-07 16:57:34 -07:00
tiocl.h
topology.h
toshiba.h
transport_class.h
trdevice.h
tty_driver.h
tty_flip.h
tty_ldisc.h
tty.h
types.h [NETFILTER]: introduce and use aligned_u64 data type 2005-08-29 15:57:59 -07:00
udf_fs_i.h
udf_fs_sb.h
udf_fs.h
udp.h
ufs_fs_i.h
ufs_fs_sb.h
ufs_fs.h
uinput.h
uio.h
ultrasound.h
umem.h
un.h
unistd.h
usb_cdc.h
usb_ch9.h
usb_gadget.h
usb_gadgetfs.h
usb_input.h
usb_isp116x.h
usb_otg.h
usb_sl811.h
usb.h
usbdevice_fs.h
user.h
utime.h
uts.h
utsname.h
vermagic.h
vfs.h
via.h
video_decoder.h
video_encoder.h
videodev2.h
videodev.h
videotext.h
vmalloc.h [PATCH] arm: allow for arch-specific IOREMAP_MAX_ORDER 2005-09-05 00:05:46 -07:00
vt_buffer.h
vt_kern.h
vt.h
wait.h
wanpipe.h
wanrouter.h
watchdog.h
wavefront.h
wireless.h
workqueue.h
writeback.h
x25.h
xattr.h
xfrm.h [NETLINK]: Convert netlink users to use group numbers instead of bitmasks 2005-08-29 16:00:54 -07:00
yam.h
zconf.h
zftape.h
zlib.h
zorro_ids.h
zorro.h
zutil.h