The patch titled problem with ZONE_MOVABLE has been added to the -mm tree. Its filename is memory-controller-make-charging-gfp-mask-aware-fix.patch *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: problem with ZONE_MOVABLE From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx> While I'm playing with memory controller of 2.6.23-rc4-mm1, I met following. == [root@drpq test-2.6.23-rc4-mm1]# echo $$ > /opt/mem_control/group_1/tasks [root@drpq test-2.6.23-rc4-mm1]# cat /opt/mem_control/group_1/memory.limit 32768 [root@drpq test-2.6.23-rc4-mm1]# cat /opt/mem_control/group_1/memory.usage 286 // Memory is limited to 512 GiB. try "dd" 1GiB (page size is 16KB) [root@drpq test-2.6.23-rc4-mm1]# dd if=/dev/zero of=/tmp/tmpfile bs=1024 count=1048576 Killed [root@drpq test-2.6.23-rc4-mm1]# ls Killed //above are caused by OOM. [root@drpq test-2.6.23-rc4-mm1]# cat /opt/mem_control/group_1/memory.usage 32763 [root@drpq test-2.6.23-rc4-mm1]# cat /opt/mem_control/group_1/memory.limit 32768 // fully filled by page cache. no reclaim run. == The reason this happens is because I used kernelcore= boot option, i.e ZONE_MOVABLE. Seems try_to_free_mem_container_pages() ignores ZONE_MOVABLE. Quick fix is attached, but Mel's one-zonelist-pernode patch may change this. I'll continue to watch. Thanks, -Kame == Now, there is ZONE_MOVABLE... page cache and user pages are allocated from gfp_zone(GFP_HIGHUSER_MOVABLE) Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx> Cc: Balbir Singh <balbir@xxxxxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/vmscan.c | 9 ++------- 1 files changed, 2 insertions(+), 7 deletions(-) diff -puN mm/vmscan.c~memory-controller-make-charging-gfp-mask-aware-fix mm/vmscan.c --- a/mm/vmscan.c~memory-controller-make-charging-gfp-mask-aware-fix +++ a/mm/vmscan.c @@ -1344,12 +1344,6 @@ unsigned long try_to_free_pages(struct z #ifdef CONFIG_CONTAINER_MEM_CONT -#ifdef CONFIG_HIGHMEM -#define ZONE_USERPAGES ZONE_HIGHMEM -#else -#define ZONE_USERPAGES ZONE_NORMAL -#endif - unsigned long try_to_free_mem_container_pages(struct mem_container *mem_cont, gfp_t gfp_mask) { @@ -1365,9 +1359,10 @@ unsigned long try_to_free_mem_container_ }; int node; struct zone **zones; + int target_zone = gfp_zone(GFP_HIGHUSER_MOVABLE); for_each_online_node(node) { - zones = NODE_DATA(node)->node_zonelists[ZONE_USERPAGES].zones; + zones = NODE_DATA(node)->node_zonelists[target_zone].zones; if (do_try_to_free_pages(zones, sc.gfp_mask, &sc)) return 1; } _ Patches currently in -mm which might be from kamezawa.hiroyu@xxxxxxxxxxxxxx are git-net-fix-pcnet32c.patch sparsemem-clean-up-spelling-error-in-comments.patch sparsemem-record-when-a-section-has-a-valid-mem_map.patch generic-virtual-memmap-support-for-sparsemem.patch generic-virtual-memmap-support-for-sparsemem-fix.patch x86_64-sparsemem_vmemmap-2m-page-size-support.patch x86_64-sparsemem_vmemmap-2m-page-size-support-ensure-end-of-section-memmap-is-initialised.patch x86_64-sparsemem_vmemmap-vmemmap-x86_64-convert-to-new-helper-based-initialisation.patch ia64-sparsemem_vmemmap-16k-page-size-support.patch ia64-sparsemem_vmemmap-16k-page-size-support-convert-to-new-helper-based-initialisation.patch sparc64-sparsemem_vmemmap-support.patch sparc64-sparsemem_vmemmap-support-vmemmap-convert-to-new-config-options.patch ppc64-sparsemem_vmemmap-support.patch ppc64-sparsemem_vmemmap-support-convert-to-new-config-options.patch memoryless-nodes-generic-management-of-nodemasks-for-various-purposes.patch memoryless-nodes-introduce-mask-of-nodes-with-memory.patch memoryless-nodes-introduce-mask-of-nodes-with-memory-fix.patch update-n_high_memory-node-state-for-memory-hotadd.patch memoryless-nodes-fix-interleave-behavior-for-memoryless-nodes.patch memoryless-nodes-oom-use-n_high_memory-map-instead-of-constructing-one-on-the-fly.patch memoryless-nodes-no-need-for-kswapd.patch memoryless-nodes-slab-support.patch memoryless-nodes-slub-support.patch memoryless-nodes-uncached-allocator-updates.patch memoryless-nodes-allow-profiling-data-to-fall-back-to-other-nodes.patch memoryless-nodes-update-memory-policy-and-page-migration.patch memoryless-nodes-add-n_cpu-node-state.patch memoryless-nodes-add-n_cpu-node-state-move-setup-of-n_cpu-node-state-mask.patch memoryless-nodes-drop-one-memoryless-node-boot-warning.patch memoryless-nodes-fix-gfp_thisnode-behavior.patch memoryless-nodes-use-n_high_memory-for-cpusets.patch flush-cache-before-installing-new-page-at-migraton.patch flush-icache-before-set_pte-on-ia64-flush-icache-at-set_pte.patch flush-icache-before-set_pte-on-ia64-flush-icache-at-set_pte-fix.patch flush-icache-before-set_pte-on-ia64-flush-icache-at-set_pte-fix-update.patch memory-unplug-v7-memory-hotplug-cleanup.patch memory-unplug-v7-page-isolation.patch memory-unplug-v7-page-offline.patch memory-unplug-v7-ia64-interface.patch config_zone_movable-zone-ifdef-cleanup-by-renumbering.patch config_zone_movable-config-zone-movable.patch memory-controller-make-charging-gfp-mask-aware-fix.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html