On Tue 10-04-18 20:10:24, Buddy Lumpkin wrote: [...] > > Also please note that the direct reclaim is a way to throttle overly > > aggressive memory consumers. The more we do in the background context > > the easier for them it will be to allocate faster. So I am not really > > sure that more background threads will solve the underlying problem. > > A single kswapd thread used to keep up with all of the demand you could > create on a Linux system quite easily provided it didn’t have to scan a lot > of pages that were ineligible for eviction. Well, what do you mean by ineligible for eviction? Could you be more specific? Are we talking about pages on LRU list or metadata and shrinker based reclaim. > 10 years ago, Fibre Channel was > the popular high performance interconnect and if you were lucky enough > to have the latest hardware rated at 10GFC, you could get 1.2GB/s per host > bus adapter. Also, most high end storage solutions were still using spinning > rust so it took an insane number of spindles behind each host bus adapter > to saturate the channel if the access patterns were random. There really > wasn’t a reason to try to thread kswapd, and I am pretty sure there hasn’t > been any attempts to do this in the last 10 years. I do not really see your point. Yeah you can get a faster storage today. So what? Pagecache has always been bound by the RAM speed. > > It is just a matter of memory hogs tunning to end in the very same > > situtation AFAICS. Moreover the more they are going to allocate the more > > less CPU time will _other_ (non-allocating) task get. > > Please describe the scenario a bit more clearly. Once you start constructing > the workload that can create this scenario, I think you will find that you end > up with a mix that is rarely seen in practice. What I meant is that the more you reclaim in the background to more you allow memory hogs to allocate because they will not get throttled. All that on behalf of other workload which is not memory bound and cannot use CPU cycles additional kswapd would consume. Think of any computation intensive workload spreading over most CPUs and a memory hungry data processing. -- Michal Hocko SUSE Labs