Re: Use higher-order pages in vmalloc
From: Eric Dumazet <hidden>
Date: 2018-03-01 18:16:52
Also in:
lkml
On Fri, 2018-02-23 at 13:13 +0100, Michal Hocko wrote:
On Thu 22-02-18 19:01:35, Andy Lutomirski wrote:quoted
On Thu, Feb 22, 2018 at 1:36 PM, Michal Hocko [off-list ref] wrote:quoted
On Thu 22-02-18 04:22:54, Matthew Wilcox wrote:quoted
On Thu, Feb 22, 2018 at 07:59:43AM +0100, Michal Hocko wrote:quoted
On Wed 21-02-18 09:01:29, Matthew Wilcox wrote:quoted
Right. It helps with fragmentation if we can keep higher-order allocations together.Hmm, wouldn't it help if we made vmalloc pages migrateable instead? That would help the compaction and get us to a lower fragmentation longterm without playing tricks in the allocation path.I was wondering about that possibility. If we want to migrate a page then we have to shoot down the PTE across all CPUs, copy the data to the new page, and insert the new PTE. Copying 4kB doesn't take long; if you have 12GB/s (current example on Wikipedia: dual-channel memory and one DDR2-800 module per channel gives a theoretical bandwidth of 12.8GB/s) then we should be able to copy a page in 666ns). So there's no problem holding a spinlock for it. But we can't handle a fault in vmalloc space today. It's handled in arch-specific code, see vmalloc_fault() in arch/x86/mm/fault.c If we're going to do this, it'll have to be something arches opt into because I'm not taking on the job of fixing every architecture!yes.On x86, if you shoot down the PTE for the current stack, you're dead. vmalloc_fault() might not even be called. Instead we hit do_double_fault(), and the manual warns extremely strongly against trying to recover, and, in this case, I agree with the SDM. If you actually want this to work, there needs to be a special IPI broadcast to the task in question (with appropriate synchronization) that calls magic arch code that does the switcheroo.Why cannot we use the pte swap entry trick also for vmalloc migration. I haven't explored this path at all, to be honest.quoted
Didn't someone (Christoph?) have a patch to teach the page allocator to give high-order allocations if available and otherwise fall back to low order?Do you mean kvmalloc?
I sent something last year but had not finished the patch series :/ https://marc.info/?l=linux-kernel&m=148233423610544&w=2 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>