Re: [PATCH v4] mm, sysctl: make NUMA stats configurable

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

 



On Tue 17-10-17 09:20:58, Kemi Wang wrote:
[...]

Other than two remarks below, it looks good to me and it also looks
simpler.

> diff --git a/mm/vmstat.c b/mm/vmstat.c
> index 4bb13e7..e746ed1 100644
> --- a/mm/vmstat.c
> +++ b/mm/vmstat.c
> @@ -32,6 +32,76 @@
>  
>  #define NUMA_STATS_THRESHOLD (U16_MAX - 2)
>  
> +#ifdef CONFIG_NUMA
> +int sysctl_vm_numa_stat = ENABLE_NUMA_STAT;
> +static DEFINE_MUTEX(vm_numa_stat_lock);

You can scope this mutex to the sysctl handler function

> +int sysctl_vm_numa_stat_handler(struct ctl_table *table, int write,
> +		void __user *buffer, size_t *length, loff_t *ppos)
> +{
> +	int ret, oldval;
> +
> +	mutex_lock(&vm_numa_stat_lock);
> +	if (write)
> +		oldval = sysctl_vm_numa_stat;
> +	ret = proc_dointvec(table, write, buffer, length, ppos);
> +	if (ret || !write)
> +		goto out;
> +
> +	if (oldval == sysctl_vm_numa_stat)
> +		goto out;
> +	else if (oldval == DISABLE_NUMA_STAT) {

So basically any value will enable numa stats. This means that we would
never be able to extend this interface to e.g. auto mode (say value 2).
I guess you meant to check sysctl_vm_numa_stat == ENABLE_NUMA_STAT?

> +		static_branch_enable(&vm_numa_stat_key);
> +		pr_info("enable numa statistics\n");
> +	} else if (sysctl_vm_numa_stat == DISABLE_NUMA_STAT) {
> +		static_branch_disable(&vm_numa_stat_key);
> +		invalid_numa_statistics();
> +		pr_info("disable numa statistics, and clear numa counters\n");
> +	}
> +
> +out:
> +	mutex_unlock(&vm_numa_stat_lock);
> +	return ret;
> +}
> +#endif
> +
>  #ifdef CONFIG_VM_EVENT_COUNTERS
>  DEFINE_PER_CPU(struct vm_event_state, vm_event_states) = {{0}};
>  EXPORT_PER_CPU_SYMBOL(vm_event_states);
> -- 
> 2.7.4
> 

-- 
Michal Hocko
SUSE Labs
--
To unsubscribe from this list: send the line "unsubscribe linux-api" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux