Re: [PATCH 4/4] writeback: Reporting dirty thresholds in /proc/vmstat

From: KOSAKI Motohiro
Date: Sun Aug 29 2010 - 20:28:41 EST


> The kernel already exposes the user desired thresholds in /proc/sys/vm
> with dirty_background_ratio and background_ratio. But the kernel may
> alter the number requested without giving the user any indication that
> is the case.
>
> Knowing the actual ratios the kernel is honoring can help app developers
> understand how their buffered IO will be sent to the disk.
>
> $ grep threshold /proc/vmstat
> nr_dirty_threshold 409111
> nr_dirty_background_threshold 818223

?
afaict, you and wu agreed /debug/bdi/default/stats is enough good.
why do you change your mention?


>
> Signed-off-by: Michael Rubin <mrubin@xxxxxxxxxx>
> ---
> include/linux/mmzone.h | 2 ++
> mm/vmstat.c | 5 +++++
> 2 files changed, 7 insertions(+), 0 deletions(-)
>
> diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
> index d42f179..ad48963 100644
> --- a/include/linux/mmzone.h
> +++ b/include/linux/mmzone.h
> @@ -106,6 +106,8 @@ enum zone_stat_item {
> NR_SHMEM, /* shmem pages (included tmpfs/GEM pages) */
> NR_FILE_PAGES_DIRTIED, /* number of times pages get dirtied */
> NR_PAGES_CLEANED, /* number of times pages enter writeback */
> + NR_DIRTY_THRESHOLD, /* writeback threshold */
> + NR_DIRTY_BG_THRESHOLD, /* bg writeback threshold */

Don't need this even though we add this two fields into /proc/sys/vm.
It can be calculated at displaing time.



> #ifdef CONFIG_NUMA
> NUMA_HIT, /* allocated in intended node */
> NUMA_MISS, /* allocated in non intended node */
> diff --git a/mm/vmstat.c b/mm/vmstat.c
> index 8521475..2342010 100644
> --- a/mm/vmstat.c
> +++ b/mm/vmstat.c
> @@ -17,6 +17,7 @@
> #include <linux/vmstat.h>
> #include <linux/sched.h>
> #include <linux/math64.h>
> +#include <linux/writeback.h>
>
> #ifdef CONFIG_VM_EVENT_COUNTERS
> DEFINE_PER_CPU(struct vm_event_state, vm_event_states) = {{0}};
> @@ -734,6 +735,8 @@ static const char * const vmstat_text[] = {
> "nr_shmem",
> "nr_dirtied",
> "nr_cleaned",
> + "nr_dirty_threshold",
> + "nr_dirty_background_threshold",
>
> #ifdef CONFIG_NUMA
> "numa_hit",
> @@ -917,6 +920,8 @@ static void *vmstat_start(struct seq_file *m, loff_t *pos)
> return ERR_PTR(-ENOMEM);
> for (i = 0; i < NR_VM_ZONE_STAT_ITEMS; i++)
> v[i] = global_page_state(i);
> +
> + global_dirty_limits(v + NR_DIRTY_BG_THRESHOLD, v + NR_DIRTY_THRESHOLD);
> #ifdef CONFIG_VM_EVENT_COUNTERS
> e = v + NR_VM_ZONE_STAT_ITEMS;
> all_vm_events(e);
> --
> 1.7.1
>



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/