diff mbox series

[04/11] mm/vmstat: Inline NUMA event counter updates

Message ID 20210414133931.4555-5-mgorman@techsingularity.net (mailing list archive)
State New
Headers show
Series Use local_lock for pcp protection and reduce stat overhead | expand

Commit Message

Mel Gorman April 14, 2021, 1:39 p.m. UTC
__count_numa_event is small enough to be treated similarly to
__count_vm_event so inline it.

Signed-off-by: Mel Gorman <mgorman@techsingularity.net>
---
 include/linux/vmstat.h | 9 +++++++++
 mm/vmstat.c            | 9 ---------
 2 files changed, 9 insertions(+), 9 deletions(-)

Comments

Vlastimil Babka April 14, 2021, 4:20 p.m. UTC | #1
On 4/14/21 3:39 PM, Mel Gorman wrote:
> __count_numa_event is small enough to be treated similarly to
> __count_vm_event so inline it.
> 
> Signed-off-by: Mel Gorman <mgorman@techsingularity.net>

Acked-by: Vlastimil Babka <vbabka@suse.cz>

> ---
>  include/linux/vmstat.h | 9 +++++++++
>  mm/vmstat.c            | 9 ---------
>  2 files changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
> index fc14415223c5..dde4dec4e7dd 100644
> --- a/include/linux/vmstat.h
> +++ b/include/linux/vmstat.h
> @@ -237,6 +237,15 @@ static inline unsigned long zone_page_state_snapshot(struct zone *zone,
>  }
>  
>  #ifdef CONFIG_NUMA
> +/* See __count_vm_event comment on why raw_cpu_inc is used. */
> +static inline void
> +__count_numa_event(struct zone *zone, enum numa_stat_item item)
> +{
> +	struct per_cpu_zonestat __percpu *pzstats = zone->per_cpu_zonestats;
> +
> +	raw_cpu_inc(pzstats->vm_numa_event[item]);
> +}
> +
>  extern void __count_numa_event(struct zone *zone, enum numa_stat_item item);
>  extern unsigned long sum_zone_node_page_state(int node,
>  					      enum zone_stat_item item);
> diff --git a/mm/vmstat.c b/mm/vmstat.c
> index 63bd84d122c0..b853df95ed0c 100644
> --- a/mm/vmstat.c
> +++ b/mm/vmstat.c
> @@ -902,15 +902,6 @@ void drain_zonestat(struct zone *zone, struct per_cpu_zonestat *pzstats)
>  #endif
>  
>  #ifdef CONFIG_NUMA
> -/* See __count_vm_event comment on why raw_cpu_inc is used. */
> -void __count_numa_event(struct zone *zone,
> -				 enum numa_stat_item item)
> -{
> -	struct per_cpu_zonestat __percpu *pzstats = zone->per_cpu_zonestats;
> -
> -	raw_cpu_inc(pzstats->vm_numa_event[item]);
> -}
> -
>  /*
>   * Determine the per node value of a stat item. This function
>   * is called frequently in a NUMA machine, so try to be as
>
Vlastimil Babka April 14, 2021, 4:26 p.m. UTC | #2
On 4/14/21 6:20 PM, Vlastimil Babka wrote:
> On 4/14/21 3:39 PM, Mel Gorman wrote:
>> __count_numa_event is small enough to be treated similarly to
>> __count_vm_event so inline it.
>> 
>> Signed-off-by: Mel Gorman <mgorman@techsingularity.net>
> 
> Acked-by: Vlastimil Babka <vbabka@suse.cz>
> 
>> ---
>>  include/linux/vmstat.h | 9 +++++++++
>>  mm/vmstat.c            | 9 ---------
>>  2 files changed, 9 insertions(+), 9 deletions(-)
>> 
>> diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
>> index fc14415223c5..dde4dec4e7dd 100644
>> --- a/include/linux/vmstat.h
>> +++ b/include/linux/vmstat.h
>> @@ -237,6 +237,15 @@ static inline unsigned long zone_page_state_snapshot(struct zone *zone,
>>  }
>>  
>>  #ifdef CONFIG_NUMA
>> +/* See __count_vm_event comment on why raw_cpu_inc is used. */
>> +static inline void
>> +__count_numa_event(struct zone *zone, enum numa_stat_item item)
>> +{
>> +	struct per_cpu_zonestat __percpu *pzstats = zone->per_cpu_zonestats;
>> +
>> +	raw_cpu_inc(pzstats->vm_numa_event[item]);
>> +}
>> +
>>  extern void __count_numa_event(struct zone *zone, enum numa_stat_item item);

Ah, but the line above should be removed.

>>  extern unsigned long sum_zone_node_page_state(int node,
>>  					      enum zone_stat_item item);
>> diff --git a/mm/vmstat.c b/mm/vmstat.c
>> index 63bd84d122c0..b853df95ed0c 100644
>> --- a/mm/vmstat.c
>> +++ b/mm/vmstat.c
>> @@ -902,15 +902,6 @@ void drain_zonestat(struct zone *zone, struct per_cpu_zonestat *pzstats)
>>  #endif
>>  
>>  #ifdef CONFIG_NUMA
>> -/* See __count_vm_event comment on why raw_cpu_inc is used. */
>> -void __count_numa_event(struct zone *zone,
>> -				 enum numa_stat_item item)
>> -{
>> -	struct per_cpu_zonestat __percpu *pzstats = zone->per_cpu_zonestats;
>> -
>> -	raw_cpu_inc(pzstats->vm_numa_event[item]);
>> -}
>> -
>>  /*
>>   * Determine the per node value of a stat item. This function
>>   * is called frequently in a NUMA machine, so try to be as
>> 
>
Mel Gorman April 15, 2021, 9:34 a.m. UTC | #3
On Wed, Apr 14, 2021 at 06:26:25PM +0200, Vlastimil Babka wrote:
> On 4/14/21 6:20 PM, Vlastimil Babka wrote:
> > On 4/14/21 3:39 PM, Mel Gorman wrote:
> >> __count_numa_event is small enough to be treated similarly to
> >> __count_vm_event so inline it.
> >> 
> >> Signed-off-by: Mel Gorman <mgorman@techsingularity.net>
> > 
> > Acked-by: Vlastimil Babka <vbabka@suse.cz>
> > 
> >> ---
> >>  include/linux/vmstat.h | 9 +++++++++
> >>  mm/vmstat.c            | 9 ---------
> >>  2 files changed, 9 insertions(+), 9 deletions(-)
> >> 
> >> diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
> >> index fc14415223c5..dde4dec4e7dd 100644
> >> --- a/include/linux/vmstat.h
> >> +++ b/include/linux/vmstat.h
> >> @@ -237,6 +237,15 @@ static inline unsigned long zone_page_state_snapshot(struct zone *zone,
> >>  }
> >>  
> >>  #ifdef CONFIG_NUMA
> >> +/* See __count_vm_event comment on why raw_cpu_inc is used. */
> >> +static inline void
> >> +__count_numa_event(struct zone *zone, enum numa_stat_item item)
> >> +{
> >> +	struct per_cpu_zonestat __percpu *pzstats = zone->per_cpu_zonestats;
> >> +
> >> +	raw_cpu_inc(pzstats->vm_numa_event[item]);
> >> +}
> >> +
> >>  extern void __count_numa_event(struct zone *zone, enum numa_stat_item item);
> 
> Ah, but the line above should be removed.
> 

Yes it should!
diff mbox series

Patch

diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
index fc14415223c5..dde4dec4e7dd 100644
--- a/include/linux/vmstat.h
+++ b/include/linux/vmstat.h
@@ -237,6 +237,15 @@  static inline unsigned long zone_page_state_snapshot(struct zone *zone,
 }
 
 #ifdef CONFIG_NUMA
+/* See __count_vm_event comment on why raw_cpu_inc is used. */
+static inline void
+__count_numa_event(struct zone *zone, enum numa_stat_item item)
+{
+	struct per_cpu_zonestat __percpu *pzstats = zone->per_cpu_zonestats;
+
+	raw_cpu_inc(pzstats->vm_numa_event[item]);
+}
+
 extern void __count_numa_event(struct zone *zone, enum numa_stat_item item);
 extern unsigned long sum_zone_node_page_state(int node,
 					      enum zone_stat_item item);
diff --git a/mm/vmstat.c b/mm/vmstat.c
index 63bd84d122c0..b853df95ed0c 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -902,15 +902,6 @@  void drain_zonestat(struct zone *zone, struct per_cpu_zonestat *pzstats)
 #endif
 
 #ifdef CONFIG_NUMA
-/* See __count_vm_event comment on why raw_cpu_inc is used. */
-void __count_numa_event(struct zone *zone,
-				 enum numa_stat_item item)
-{
-	struct per_cpu_zonestat __percpu *pzstats = zone->per_cpu_zonestats;
-
-	raw_cpu_inc(pzstats->vm_numa_event[item]);
-}
-
 /*
  * Determine the per node value of a stat item. This function
  * is called frequently in a NUMA machine, so try to be as