On Wed, Mar 28, 2018 at 09:02:00AM +0200, Michal Hocko wrote: >On Wed 28-03-18 08:39:36, Wei Yang wrote: >> On Tue, Mar 27, 2018 at 12:58:21PM +0200, Michal Hocko wrote: >> >On Tue 27-03-18 11:57:07, Wei Yang wrote: >> >> find_min_pfn_for_node() iterate on pfn range to find the minimum pfn for a >> >> node. The memblock_region in memblock_type are already ordered, which means >> >> the first hit in iteration is the minimum pfn. >> > >> >I haven't looked at the code yet but the changelog should contain the >> >motivation why it exists. It seems like this is an optimization. If so, >> >what is the impact? >> > >> >> Yep, this is a trivial optimization on searching the minimal pfn on a special >> node. It would be better for audience to understand if I put some words in >> change log. >> >> The impact of this patch is it would accelerate the searching process when >> there are many memory ranges in memblock. >> >> For example, in the case https://lkml.org/lkml/2018/3/25/291, there are around >> 30 memory ranges on node 0. The original code need to iterate all those ranges >> to find the minimal pfn, while after optimization it just need once. > >Then show us some numbers to justify the change. Oops, I don't have any data to prove this. My test machine just has 7 memory regions and only one node. So it reduce iteration from 7 to 1, which I don't think will have some visible effect. While we can do some calculation to estimate the effect. Assume there are N memory regions and M nodes and each node has equal number of memory regions. So before the change, there are N * M iterations After this optimization, there are (N / 2) * M iterations So the expected improvement of this change is half the iterations for finding the minimal pfn. Last but not the least, as I know, usually there are less than 100 memory regions on a machine. This improvement is really limited on current systems. The more memory regions and node a system has, the more improvement it will has. >-- >Michal Hocko >SUSE Labs -- Wei Yang Help you, Help me