Re: [PATCH v4] mm, sysctl: make NUMA stats configurable
From: Michal Hocko <mhocko@kernel.org>
Date: 2017-10-17 07:54:20
Also in:
linux-fsdevel, linux-mm, lkml
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.
quoted hunk ↗ jump to hunk
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, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>