On Mon 05-11-18 13:19:25, Alexander Duyck wrote: > This patchset is essentially a refactor of the page initialization logic > that is meant to provide for better code reuse while providing a > significant improvement in deferred page initialization performance. > > In my testing on an x86_64 system with 384GB of RAM and 3TB of persistent > memory per node I have seen the following. In the case of regular memory > initialization the deferred init time was decreased from 3.75s to 1.06s on > average. For the persistent memory the initialization time dropped from > 24.17s to 19.12s on average. This amounts to a 253% improvement for the > deferred memory initialization performance, and a 26% improvement in the > persistent memory initialization performance. > > I have called out the improvement observed with each patch. I have only glanced through the code (there is a lot of the code to look at here). And I do not like the code duplication and the way how you make the hotplug special. There shouldn't be any real reason for that IMHO (e.g. why do we init pfn-at-a-time in early init while we do pageblock-at-a-time for hotplug). I might be wrong here and the code reuse might be really hard to achieve though. I am also not impressed by new iterators because this api is quite complex already. But this is mostly a detail. Thing I do not like is that you keep microptimizing PageReserved part while there shouldn't be anything fundamental about it. We should just remove it rather than make the code more complex. I fell more and more guilty to add there actually. -- Michal Hocko SUSE Labs