Re: [PATCH] slub: Don't throw away partial remote slabs if there is no local memory
From: Joonsoo Kim <hidden>
Date: 2014-01-07 09:31:47
On Tue, Jan 07, 2014 at 05:21:45PM +0800, Wanpeng Li wrote:
On Tue, Jan 07, 2014 at 06:10:16PM +0900, Joonsoo Kim wrote:quoted
On Tue, Jan 07, 2014 at 04:48:40PM +0800, Wanpeng Li wrote:quoted
Hi Joonsoo, On Tue, Jan 07, 2014 at 04:41:36PM +0900, Joonsoo Kim wrote:quoted
On Tue, Jan 07, 2014 at 01:21:00PM +1100, Anton Blanchard wrote:quoted
[...]quoted
Hello, I think that we need more efforts to solve unbalanced node problem. With this patch, even if node of current cpu slab is not favorable to unbalanced node, allocation would proceed and we would get the unintended memory.We have a machine: [ 0.000000] Node 0 Memory: [ 0.000000] Node 4 Memory: 0x0-0x10000000 0x20000000-0x60000000 0x80000000-0xc0000000 [ 0.000000] Node 6 Memory: 0x10000000-0x20000000 0x60000000-0x80000000 [ 0.000000] Node 10 Memory: 0xc0000000-0x180000000 [ 0.041486] Node 0 CPUs: 0-19 [ 0.041490] Node 4 CPUs: [ 0.041492] Node 6 CPUs: [ 0.041495] Node 10 CPUs: The pages of current cpu slab should be allocated from fallback zones/nodes of the memoryless node in buddy system, how can not favorable happen?Hi, Wanpeng. IIRC, if we call kmem_cache_alloc_node() with certain node #, we try to allocate the page in fallback zones/node of that node #. So fallback list isn't related to fallback one of memoryless node #. Am I wrong?Anton add node_spanned_pages(node) check, so current cpu slab mentioned above is against memoryless node. If I miss something?
I thought following scenario. memoryless node # : 1 1's fallback node # : 0 On node 1's cpu, 1. kmem_cache_alloc_node (node 2) 2. allocate the page on node 2 for the slab, now cpu slab is that one. 3. kmem_cache_alloc_node (local node, that is, node 1) 4. It check node_spanned_pages() and find it is memoryless node. So return node 2's memory. Is it impossible scenario? Thanks.