Re: [RFC][Patch v11 1/2] mm: page_hinting: core infrastructure

From: Dave Hansen
Date: Thu Jul 11 2019 - 12:45:17 EST


On 7/11/19 9:36 AM, Nitesh Narayan Lal wrote:
>>>>> +struct zone_free_area {
>>>>> + unsigned long *bitmap;
>>>>> + unsigned long base_pfn;
>>>>> + unsigned long end_pfn;
>>>>> + atomic_t free_pages;
>>>>> + unsigned long nbits;
>>>>> +} free_area[MAX_NR_ZONES];
>>>> Why do we need an extra data structure. What's wrong with putting
>>>> per-zone data in ... 'struct zone'?
>>> Will it be acceptable to add fields in struct zone, when they will only
>>> be used by page hinting?
>> Wait a sec... MAX_NR_ZONES the number of zone types not the maximum
>> number of *zones* in the system.
>>
>> Did you test this on a NUMA system?
> Yes, I tested it with a guest having 2 and 3 NUMA nodes.

How can this *possibly* have worked?

Won't each same-typed zone just use the same free_area[] entry since
zone_idx(zone1)==zone_idx(zone2) if zone1 and zone2 are (for example)
both ZONE_NORMAL?