diff mbox series

mm,vmstat: correct pagetypeinfo statistics when show

Message ID 1557491480-19857-1-git-send-email-bo.zhang@nxp.com (mailing list archive)
State New, archived
Headers show
Series mm,vmstat: correct pagetypeinfo statistics when show | expand

Commit Message

Bruce ZHANG May 10, 2019, 12:36 p.m. UTC
The "Free pages count per migrate type at order" are shown with the
order from 0 ~ (MAX_ORDER-1), while "Page block order" just print
pageblock_order. If the macro CONFIG_HUGETLB_PAGE is defined, the
pageblock_order may not be equal to (MAX_ORDER-1).

Signed-off-by: Zhang Bo <bo.zhang@nxp.com>
---
 mm/vmstat.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Daniel Jordan May 10, 2019, 6:49 p.m. UTC | #1
On Fri, May 10, 2019 at 12:36:48PM +0000, Bruce ZHANG wrote:
> The "Free pages count per migrate type at order" are shown with the
> order from 0 ~ (MAX_ORDER-1), while "Page block order" just print
> pageblock_order. If the macro CONFIG_HUGETLB_PAGE is defined, the
> pageblock_order may not be equal to (MAX_ORDER-1).

All of this is true, but why do you think it's wrong?

It makes sense that "Page block order" corresponds to pageblock_order,
regardless of whether pageblock_order == MAX_ORDER-1.

Cc Mel, who added these two lines.

> Signed-off-by: Zhang Bo <bo.zhang@nxp.com>
> ---
>  mm/vmstat.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/mm/vmstat.c b/mm/vmstat.c
> index 6389e87..b0089cf 100644
> --- a/mm/vmstat.c
> +++ b/mm/vmstat.c
> @@ -1430,8 +1430,8 @@ static int pagetypeinfo_show(struct seq_file *m, void *arg)
>  	if (!node_state(pgdat->node_id, N_MEMORY))
>  		return 0;
>  
> -	seq_printf(m, "Page block order: %d\n", pageblock_order);
> -	seq_printf(m, "Pages per block:  %lu\n", pageblock_nr_pages);
> +	seq_printf(m, "Page block order: %d\n", MAX_ORDER - 1);
> +	seq_printf(m, "Pages per block:  %lu\n", MAX_ORDER_NR_PAGES);
>  	seq_putc(m, '\n');
>  	pagetypeinfo_showfree(m, pgdat);
>  	pagetypeinfo_showblockcount(m, pgdat);
> -- 
> 1.9.1
>
Daniel Jordan May 10, 2019, 8:13 p.m. UTC | #2
On Fri, May 10, 2019 at 12:36:48PM +0000, Bruce ZHANG wrote:
> The "Free pages count per migrate type at order" are shown with the
> order from 0 ~ (MAX_ORDER-1), while "Page block order" just print
> pageblock_order. If the macro CONFIG_HUGETLB_PAGE is defined, the
> pageblock_order may not be equal to (MAX_ORDER-1).

All of this is true, but why is it wrong?                            
                                                                                 
It makes sense that "Page block order" corresponds to pageblock_order,           
regardless of whether pageblock_order == MAX_ORDER-1.                            
                                                                                 
Cc Mel, who added these two lines.

> Signed-off-by: Zhang Bo <bo.zhang@nxp.com>
> ---
>  mm/vmstat.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/mm/vmstat.c b/mm/vmstat.c
> index 6389e87..b0089cf 100644
> --- a/mm/vmstat.c
> +++ b/mm/vmstat.c
> @@ -1430,8 +1430,8 @@ static int pagetypeinfo_show(struct seq_file *m, void *arg)
>  	if (!node_state(pgdat->node_id, N_MEMORY))
>  		return 0;
>  
> -	seq_printf(m, "Page block order: %d\n", pageblock_order);
> -	seq_printf(m, "Pages per block:  %lu\n", pageblock_nr_pages);
> +	seq_printf(m, "Page block order: %d\n", MAX_ORDER - 1);
> +	seq_printf(m, "Pages per block:  %lu\n", MAX_ORDER_NR_PAGES);
>  	seq_putc(m, '\n');
>  	pagetypeinfo_showfree(m, pgdat);
>  	pagetypeinfo_showblockcount(m, pgdat);
> -- 
> 1.9.1
>
Daniel Jordan May 10, 2019, 9:24 p.m. UTC | #3
On Fri, May 10, 2019 at 12:36:48PM +0000, Bruce ZHANG wrote:
> The "Free pages count per migrate type at order" are shown with the
> order from 0 ~ (MAX_ORDER-1), while "Page block order" just print
> pageblock_order. If the macro CONFIG_HUGETLB_PAGE is defined, the
> pageblock_order may not be equal to (MAX_ORDER-1).

All of this is true, but why is it wrong?                                        
                                                                                 
It makes sense that "Page block order" corresponds to pageblock_order,           
regardless of whether pageblock_order == MAX_ORDER-1.                            
                                                                                 
Cc Mel, who added these two lines.

> Signed-off-by: Zhang Bo <bo.zhang@nxp.com>
> ---
>  mm/vmstat.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/mm/vmstat.c b/mm/vmstat.c
> index 6389e87..b0089cf 100644
> --- a/mm/vmstat.c
> +++ b/mm/vmstat.c
> @@ -1430,8 +1430,8 @@ static int pagetypeinfo_show(struct seq_file *m, void *arg)
>  	if (!node_state(pgdat->node_id, N_MEMORY))
>  		return 0;
>  
> -	seq_printf(m, "Page block order: %d\n", pageblock_order);
> -	seq_printf(m, "Pages per block:  %lu\n", pageblock_nr_pages);
> +	seq_printf(m, "Page block order: %d\n", MAX_ORDER - 1);
> +	seq_printf(m, "Pages per block:  %lu\n", MAX_ORDER_NR_PAGES);
>  	seq_putc(m, '\n');
>  	pagetypeinfo_showfree(m, pgdat);
>  	pagetypeinfo_showblockcount(m, pgdat);
> -- 
> 1.9.1
>
Mel Gorman May 13, 2019, 8:53 a.m. UTC | #4
On Fri, May 10, 2019 at 02:49:00PM -0400, Daniel Jordan wrote:
> On Fri, May 10, 2019 at 12:36:48PM +0000, Bruce ZHANG wrote:
> > The "Free pages count per migrate type at order" are shown with the
> > order from 0 ~ (MAX_ORDER-1), while "Page block order" just print
> > pageblock_order. If the macro CONFIG_HUGETLB_PAGE is defined, the
> > pageblock_order may not be equal to (MAX_ORDER-1).
> 
> All of this is true, but why do you think it's wrong?
> 

Indeed, why is this wrong?

> It makes sense that "Page block order" corresponds to pageblock_order,
> regardless of whether pageblock_order == MAX_ORDER-1.
> 

Page block order is related to the PMD huge page size, it's not directly
related to MAX_ORDER other than MAX_ORDER is larger than
pageblock_order.

> Cc Mel, who added these two lines.
> 
> > Signed-off-by: Zhang Bo <bo.zhang@nxp.com>

What's there is correct so unless there is a great explanation as to why
it should be different;

Naked-by: Mel Gorman <mgorman@techsingularity.net>
Anshuman Khandual May 17, 2019, 6:44 a.m. UTC | #5
On 05/13/2019 02:23 PM, Mel Gorman wrote:
> On Fri, May 10, 2019 at 02:49:00PM -0400, Daniel Jordan wrote:
>> On Fri, May 10, 2019 at 12:36:48PM +0000, Bruce ZHANG wrote:
>>> The "Free pages count per migrate type at order" are shown with the
>>> order from 0 ~ (MAX_ORDER-1), while "Page block order" just print
>>> pageblock_order. If the macro CONFIG_HUGETLB_PAGE is defined, the
>>> pageblock_order may not be equal to (MAX_ORDER-1).
>>
>> All of this is true, but why do you think it's wrong?
>>
> 
> Indeed, why is this wrong?
> 
>> It makes sense that "Page block order" corresponds to pageblock_order,
>> regardless of whether pageblock_order == MAX_ORDER-1.
>>
> 
> Page block order is related to the PMD huge page size, it's not directly
> related to MAX_ORDER other than MAX_ORDER is larger than
> pageblock_order.

Right.

> 
>> Cc Mel, who added these two lines.
>>
>>> Signed-off-by: Zhang Bo <bo.zhang@nxp.com>
> 
> What's there is correct so unless there is a great explanation as to why
> it should be different;

Agreed.
diff mbox series

Patch

diff --git a/mm/vmstat.c b/mm/vmstat.c
index 6389e87..b0089cf 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -1430,8 +1430,8 @@  static int pagetypeinfo_show(struct seq_file *m, void *arg)
 	if (!node_state(pgdat->node_id, N_MEMORY))
 		return 0;
 
-	seq_printf(m, "Page block order: %d\n", pageblock_order);
-	seq_printf(m, "Pages per block:  %lu\n", pageblock_nr_pages);
+	seq_printf(m, "Page block order: %d\n", MAX_ORDER - 1);
+	seq_printf(m, "Pages per block:  %lu\n", MAX_ORDER_NR_PAGES);
 	seq_putc(m, '\n');
 	pagetypeinfo_showfree(m, pgdat);
 	pagetypeinfo_showblockcount(m, pgdat);