Re: [PATCH 03/18] mm: numa: Account for THP numa hinting faults on the correct node

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jul 17, 2013 at 08:33:13AM +0800, Hillf Danton wrote:
>On Mon, Jul 15, 2013 at 11:20 PM, Mel Gorman <mgorman@xxxxxxx> wrote:
>> THP NUMA hinting fault on pages that are not migrated are being
>> accounted for incorrectly. Currently the fault will be counted as if the
>> task was running on a node local to the page which is not necessarily
>> true.
>>

Hi Hillf,

>Can you please run test again without this correction and check the difference?
>

I think the essential point is which node NUMA hinting faults counts should 
be accumulated to when thp pages are not migrated. Counts are accounted as 
local numa hinting fault before this patch, it's not always true and there's 
bad influence when determine the preferred node with the most numa hinting 
faults.

Regards,
Wanpeng Li 

>> Signed-off-by: Mel Gorman <mgorman@xxxxxxx>
>> ---
>>  mm/huge_memory.c | 10 +++++-----
>>  1 file changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/mm/huge_memory.c b/mm/huge_memory.c
>> index e2f7f5aa..e4a79fa 100644
>> --- a/mm/huge_memory.c
>> +++ b/mm/huge_memory.c
>> @@ -1293,7 +1293,7 @@ int do_huge_pmd_numa_page(struct mm_struct *mm, struct vm_area_struct *vma,
>>         struct page *page;
>>         unsigned long haddr = addr & HPAGE_PMD_MASK;
>>         int target_nid;
>> -       int current_nid = -1;
>> +       int src_nid = -1;
>>         bool migrated;
>>
>>         spin_lock(&mm->page_table_lock);
>> @@ -1302,9 +1302,9 @@ int do_huge_pmd_numa_page(struct mm_struct *mm, struct vm_area_struct *vma,
>>
>>         page = pmd_page(pmd);
>>         get_page(page);
>> -       current_nid = page_to_nid(page);
>> +       src_nid = numa_node_id();
>>         count_vm_numa_event(NUMA_HINT_FAULTS);
>> -       if (current_nid == numa_node_id())
>> +       if (src_nid == page_to_nid(page))
>>                 count_vm_numa_event(NUMA_HINT_FAULTS_LOCAL);
>>
>>         target_nid = mpol_misplaced(page, vma, haddr);
>> @@ -1346,8 +1346,8 @@ clear_pmdnuma:
>>         update_mmu_cache_pmd(vma, addr, pmdp);
>>  out_unlock:
>>         spin_unlock(&mm->page_table_lock);
>> -       if (current_nid != -1)
>> -               task_numa_fault(current_nid, HPAGE_PMD_NR, false);
>> +       if (src_nid != -1)
>> +               task_numa_fault(src_nid, HPAGE_PMD_NR, false);
>>         return 0;
>>  }
>
>--
>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>

--
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>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]