On Sat, 29 Mar 2008, Linus Torvalds wrote:Yes I am very aware of that. It has to do how large objects are allocated through kmalloc_large(). kmalloc_large() is elsewhere called with unfiltered gfpflags and relies on zeroing being handled by the page allocator. It can take unfiltered gfp flags. The filtering of __GFP_ZERO that you added avoids the double zeroing for the fallback path (which is only called if all the partial lists are empty and after the page allocator went through reclaim and did not get the large sized memory we wanted). So okay the patch could be a performance enhancement. But then it adds the filtering to the hot path instead of the code path that containts the kmalloc_large that is executed once in a blue moon. The hot path should only filter when we actually decide that we need to allocate a new slab from the page allocator. It seemed to me that the reason for inserting the filtering of __GFP_ZERO there was the belief that the page allocator cannot take __GFP_ZERO through kmalloc_large() if we are in an interrupt. The use of kmalloc_large() in __slab_alloc() is a bit strange at this point. The cleanup work in 2.6.26 will make this all nice again. --
| Greg KH | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Greg Kroah-Hartman | [PATCH 005/196] Chinese: add translation of SubmittingDrivers |
| Adrian Bunk | [1/6] 2.6.21-rc2: known regressions |
| Paul Jackson | Re: cpuset-remove-sched-domain-hooks-from-cpusets |
git: | |
| Linus Torvalds | Re: [GIT]: Networking |
| Gerrit Renker | [PATCH 27/37] dccp: Integration of dynamic feature activation - part 2 (server side) |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Andrew Morton | Re: [BUG] New Kernel Bugs |
