lkml.org 
[lkml]   [2010]   [Aug]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/3] writeback: Account for time spent congestion_waited
    Date
    There is strong evidence to indicate a lot of time is being spent in
    congestion_wait(), some of it unnecessarily. This patch adds a
    tracepoint for congestion_wait to record when congestion_wait() occurred
    and how long was spent.

    Signed-off-by: Mel Gorman <mel@csn.ul.ie>
    ---
    include/trace/events/writeback.h | 17 +++++++++++++++++
    mm/backing-dev.c | 4 ++++
    2 files changed, 21 insertions(+), 0 deletions(-)

    diff --git a/include/trace/events/writeback.h b/include/trace/events/writeback.h
    index f345f66..e3bee61 100644
    --- a/include/trace/events/writeback.h
    +++ b/include/trace/events/writeback.h
    @@ -153,6 +153,23 @@ DEFINE_WBC_EVENT(wbc_balance_dirty_written);
    DEFINE_WBC_EVENT(wbc_balance_dirty_wait);
    DEFINE_WBC_EVENT(wbc_writepage);

    +TRACE_EVENT(writeback_congest_waited,
    +
    + TP_PROTO(unsigned int usec_delayed),
    +
    + TP_ARGS(usec_delayed),
    +
    + TP_STRUCT__entry(
    + __field( unsigned int, usec_delayed )
    + ),
    +
    + TP_fast_assign(
    + __entry->usec_delayed = usec_delayed;
    + ),
    +
    + TP_printk("usec_delayed=%u", __entry->usec_delayed)
    +);
    +
    #endif /* _TRACE_WRITEBACK_H */

    /* This part must be outside protection */
    diff --git a/mm/backing-dev.c b/mm/backing-dev.c
    index eaa4a5b..7ae33e2 100644
    --- a/mm/backing-dev.c
    +++ b/mm/backing-dev.c
    @@ -759,12 +759,16 @@ EXPORT_SYMBOL(set_bdi_congested);
    long congestion_wait(int sync, long timeout)
    {
    long ret;
    + unsigned long start = jiffies;
    DEFINE_WAIT(wait);
    wait_queue_head_t *wqh = &congestion_wqh[sync];

    prepare_to_wait(wqh, &wait, TASK_UNINTERRUPTIBLE);
    ret = io_schedule_timeout(timeout);
    finish_wait(wqh, &wait);
    +
    + trace_writeback_congest_waited(jiffies_to_usecs(jiffies - start));
    +
    return ret;
    }
    EXPORT_SYMBOL(congestion_wait);
    --
    1.7.1


    \
     
     \ /
      Last update: 2010-08-26 17:17    [W:0.051 / U:5.036 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site