On Wed, 3 Aug 2016, Michal Hocko wrote: > On Wed 03-08-16 08:53:25, Mikulas Patocka wrote: > > > > > > On Thu, 28 Jul 2016, Michal Hocko wrote: > > > > > > >> I think we'd end up with cleaner code if we removed the cute-hacks. And > > > > >> we'd be able to use 6 more GFP flags!! (though I do wonder if we really > > > > >> need all those 26). > > > > > > > > > > Well, maybe we are able to remove those hacks, I wouldn't definitely > > > > > be opposed. But right now I am not even convinced that the mempool > > > > > specific gfp flags is the right way to go. > > > > > > > > I'm not suggesting a mempool-specific gfp flag. I'm suggesting a > > > > transient-allocation gfp flag, which would be quite useful for mempool. > > > > > > > > Can you give more details on why using a gfp flag isn't your first choice > > > > for guiding what happens when the system is trying to get a free page > > > > :-? > > > > > > If we get rid of throttle_vm_writeout then I guess it might turn out to > > > be unnecessary. There are other places which will still throttle but I > > > believe those should be kept regardless of who is doing the allocation > > > because they are helping the LRU scanning sane. I might be wrong here > > > and bailing out from the reclaim rather than waiting would turn out > > > better for some users but I would like to see whether the first approach > > > works reasonably well. > > > > If we are swapping to a dm-crypt device, the dm-crypt device is congested > > and the underlying block device is not congested, we should not throttle > > mempool allocations made from the dm-crypt workqueue. Not even a little > > bit. > > But the device congestion is not the only condition required for the > throttling. The pgdat has also be marked congested which means that the > LRU page scanner bumped into dirty/writeback/pg_reclaim pages at the > tail of the LRU. That should only happen if we are rotating LRUs too > quickly. AFAIU the reclaim shouldn't allow free ticket scanning in that > situation. The obvious problem here is that mempool allocations should sleep in mempool_alloc() on &pool->wait (until someone returns some entries into the mempool), they should not sleep inside the page allocator. Mikulas > > So, I think, mempool_alloc should set PF_NO_THROTTLE (or > > __GFP_NO_THROTTLE). > > As I've said earlier that would probably require to bail out from the > reclaim if we detect a potential pgdat congestion. What do you think > Mel? > -- > Michal Hocko > SUSE Labs > -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>