https://bugzilla.novell.com/show_bug.cgi?id=444597
User mszeredi@novell.com added comment
https://bugzilla.novell.com/show_bug.cgi?id=444597#c34
Miklos Szeredi changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|npiggin@novell.com |sjayaraman@novell.com
Status|NEEDINFO |NEW
Info Provider|trenn@novell.com |
--- Comment #34 from Miklos Szeredi 2008-12-01 06:07:37 MST ---
Umm, forget that, I think I found the real problem, and it's in swap over NFS
after all. From the header of SoN-08-reserve-slub.patch:
"The basic pattern used for all # allocators is the following, for each active
slab page we store if it came from an emergency allocation. When we find it
did, make sure the current allocation context would have been able to allocate
page from the emergency reserves as well. In that case allow the allocation.
If
not, force a new slab allocation. When that works the memory pressure has
^^^^^^^^^^^^^^^^^^^^^^^^^^^
lifted enough to allow this context to get an object, otherwise fail the
allocation."
So what until the emergency pools are replenished, we get a _new_ page
allocation for each object allocation. For small objects this is exceedingly
wasteful, and results in the horrible slab usage above.
So the algorithm needs to be reworked in a way, that slab allocations are not
blocking in separate page allocations, but on a single common page allocation.
Perhaps the solution is as simple as adding a mutex around the page allocation.
After locking the mutex we need to re-check if the allocation is really needed
before proceeding with the page alloc.
Assign -> Suresh.
--
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.