Robin Holt <[EMAIL PROTECTED]> wrote: > > > > The "ideal" would be to have a node aware slab cache. Since that > > > is probably a long time coming, I was wondering if there would be > > > any possibility of getting some sort of hook into wakeup_kswapd(), > > > kswapd(), or balance_pgdat(). Since the quicklists are maintained per > > > cpu, we would need to perform an smp_call_function_single() for other > > > cpus on this node. Is there some mechanism in place already to handle > > > anything similar to this? Is there a better way to accomplish this? > > > Can you offer any suggestions? > > > > > > > Suggest you hook into the existing set_shrinker() API. > > > > Then, in the shrinker callback, perform reclaim of the calling CPU's > > node's pages. > > > > Try to return the right numbers from the shrinker callback so that > > shrink_slab() will keep this cache balanced wrt all the other ones which it > > is managing. > > I wedged a shrinker in which simply does a smp_call_function() to invoke > the cache shrinker. I did modify the shrinker function to return the > number of pages freed, but am currently doing nothing with it as this > will require a spinlock/atomic operation and am not ready to take that > performance hit. The one issue I have is we lose information about > which nodes to shake memory from and therefore end up calling the function > for every node in the system. This appears very heavy handed.
As I said, "in the shrinker callback, perform reclaim of the calling CPU's node's pages.". kswapd is already node-affine, as are callers of try_to_free_pages(). - To unsubscribe from this list: send the line "unsubscribe linux-ia64" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
