lkml.org 
[lkml]   [2011]   [Apr]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 10/12] writeback: trace dirty_ratelimit
    It provides critical information to understand how various throttle
    bandwidths are updated.

    Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
    ---
    include/trace/events/writeback.h | 51 +++++++++++++++++++++++++++--
    mm/page-writeback.c | 1
    2 files changed, 49 insertions(+), 3 deletions(-)

    --- linux-next.orig/mm/page-writeback.c 2011-04-16 11:28:21.000000000 +0800
    +++ linux-next/mm/page-writeback.c 2011-04-16 11:28:27.000000000 +0800
    @@ -974,6 +974,7 @@ adjust:
    bdi->dirty_ratelimit = bw;
    out:
    bdi_update_reference_ratelimit(bdi, ref_bw);
    + trace_dirty_ratelimit(bdi, dirty_bw, pos_bw, ref_bw);
    }

    void bdi_update_bandwidth(struct backing_dev_info *bdi,
    --- linux-next.orig/include/trace/events/writeback.h 2011-04-16 11:28:17.000000000 +0800
    +++ linux-next/include/trace/events/writeback.h 2011-04-16 11:28:27.000000000 +0800
    @@ -147,11 +147,56 @@ DEFINE_EVENT(wbc_class, name, \
    DEFINE_WBC_EVENT(wbc_writeback_start);
    DEFINE_WBC_EVENT(wbc_writeback_written);
    DEFINE_WBC_EVENT(wbc_writeback_wait);
    -DEFINE_WBC_EVENT(wbc_balance_dirty_start);
    -DEFINE_WBC_EVENT(wbc_balance_dirty_written);
    -DEFINE_WBC_EVENT(wbc_balance_dirty_wait);
    DEFINE_WBC_EVENT(wbc_writepage);

    +#define KBps(x) ((x) << (PAGE_SHIFT - 10))
    +
    +TRACE_EVENT(dirty_ratelimit,
    +
    + TP_PROTO(struct backing_dev_info *bdi,
    + unsigned long dirty_bw,
    + unsigned long pos_bw,
    + unsigned long ref_bw),
    +
    + TP_ARGS(bdi, dirty_bw, pos_bw, ref_bw),
    +
    + TP_STRUCT__entry(
    + __array(char, bdi, 32)
    + __field(unsigned long, write_bw)
    + __field(unsigned long, avg_bw)
    + __field(unsigned long, dirty_bw)
    + __field(unsigned long, base_bw)
    + __field(unsigned long, pos_bw)
    + __field(unsigned long, ref_bw)
    + __field(unsigned long, avg_ref_bw)
    + ),
    +
    + TP_fast_assign(
    + strlcpy(__entry->bdi, dev_name(bdi->dev), 32);
    + __entry->write_bw = KBps(bdi->write_bandwidth);
    + __entry->avg_bw = KBps(bdi->avg_write_bandwidth);
    + __entry->dirty_bw = KBps(dirty_bw);
    + __entry->base_bw = KBps(bdi->dirty_ratelimit);
    + __entry->pos_bw = KBps(pos_bw);
    + __entry->ref_bw = KBps(ref_bw);
    + __entry->avg_ref_bw = KBps(bdi->reference_ratelimit);
    + ),
    +
    +
    + TP_printk("bdi %s: "
    + "write_bw=%lu awrite_bw=%lu dirty_bw=%lu "
    + "base_bw=%lu pos_bw=%lu ref_bw=%lu aref_bw=%lu",
    + __entry->bdi,
    + __entry->write_bw, /* write bandwidth */
    + __entry->avg_bw, /* avg write bandwidth */
    + __entry->dirty_bw, /* dirty bandwidth */
    + __entry->base_bw, /* dirty ratelimit on each task */
    + __entry->pos_bw, /* position control ratelimit */
    + __entry->ref_bw, /* the reference ratelimit */
    + __entry->avg_ref_bw /* smoothed reference ratelimit */
    + )
    +);
    +
    DECLARE_EVENT_CLASS(writeback_congest_waited_template,

    TP_PROTO(unsigned int usec_timeout, unsigned int usec_delayed),



    \
     
     \ /
      Last update: 2011-04-16 16:07    [W:3.835 / U:0.292 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site