diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/sched.h | 1 | ||||
-rw-r--r-- | include/trace/events/writeback.h | 14 |
2 files changed, 12 insertions, 3 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h index 1c4f3e9b9bc5..984c3b295978 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -1527,6 +1527,7 @@ struct task_struct { | |||
1527 | */ | 1527 | */ |
1528 | int nr_dirtied; | 1528 | int nr_dirtied; |
1529 | int nr_dirtied_pause; | 1529 | int nr_dirtied_pause; |
1530 | unsigned long dirty_paused_when; /* start of a write-and-pause period */ | ||
1530 | 1531 | ||
1531 | #ifdef CONFIG_LATENCYTOP | 1532 | #ifdef CONFIG_LATENCYTOP |
1532 | int latency_record_count; | 1533 | int latency_record_count; |
diff --git a/include/trace/events/writeback.h b/include/trace/events/writeback.h index 99d1d0decf88..8588a8918023 100644 --- a/include/trace/events/writeback.h +++ b/include/trace/events/writeback.h | |||
@@ -300,12 +300,13 @@ TRACE_EVENT(balance_dirty_pages, | |||
300 | unsigned long dirty_ratelimit, | 300 | unsigned long dirty_ratelimit, |
301 | unsigned long task_ratelimit, | 301 | unsigned long task_ratelimit, |
302 | unsigned long dirtied, | 302 | unsigned long dirtied, |
303 | unsigned long period, | ||
303 | long pause, | 304 | long pause, |
304 | unsigned long start_time), | 305 | unsigned long start_time), |
305 | 306 | ||
306 | TP_ARGS(bdi, thresh, bg_thresh, dirty, bdi_thresh, bdi_dirty, | 307 | TP_ARGS(bdi, thresh, bg_thresh, dirty, bdi_thresh, bdi_dirty, |
307 | dirty_ratelimit, task_ratelimit, | 308 | dirty_ratelimit, task_ratelimit, |
308 | dirtied, pause, start_time), | 309 | dirtied, period, pause, start_time), |
309 | 310 | ||
310 | TP_STRUCT__entry( | 311 | TP_STRUCT__entry( |
311 | __array( char, bdi, 32) | 312 | __array( char, bdi, 32) |
@@ -320,6 +321,8 @@ TRACE_EVENT(balance_dirty_pages, | |||
320 | __field(unsigned int, dirtied_pause) | 321 | __field(unsigned int, dirtied_pause) |
321 | __field(unsigned long, paused) | 322 | __field(unsigned long, paused) |
322 | __field( long, pause) | 323 | __field( long, pause) |
324 | __field(unsigned long, period) | ||
325 | __field( long, think) | ||
323 | ), | 326 | ), |
324 | 327 | ||
325 | TP_fast_assign( | 328 | TP_fast_assign( |
@@ -336,6 +339,9 @@ TRACE_EVENT(balance_dirty_pages, | |||
336 | __entry->task_ratelimit = KBps(task_ratelimit); | 339 | __entry->task_ratelimit = KBps(task_ratelimit); |
337 | __entry->dirtied = dirtied; | 340 | __entry->dirtied = dirtied; |
338 | __entry->dirtied_pause = current->nr_dirtied_pause; | 341 | __entry->dirtied_pause = current->nr_dirtied_pause; |
342 | __entry->think = current->dirty_paused_when == 0 ? 0 : | ||
343 | (long)(jiffies - current->dirty_paused_when) * 1000/HZ; | ||
344 | __entry->period = period * 1000 / HZ; | ||
339 | __entry->pause = pause * 1000 / HZ; | 345 | __entry->pause = pause * 1000 / HZ; |
340 | __entry->paused = (jiffies - start_time) * 1000 / HZ; | 346 | __entry->paused = (jiffies - start_time) * 1000 / HZ; |
341 | ), | 347 | ), |
@@ -346,7 +352,7 @@ TRACE_EVENT(balance_dirty_pages, | |||
346 | "bdi_setpoint=%lu bdi_dirty=%lu " | 352 | "bdi_setpoint=%lu bdi_dirty=%lu " |
347 | "dirty_ratelimit=%lu task_ratelimit=%lu " | 353 | "dirty_ratelimit=%lu task_ratelimit=%lu " |
348 | "dirtied=%u dirtied_pause=%u " | 354 | "dirtied=%u dirtied_pause=%u " |
349 | "paused=%lu pause=%ld", | 355 | "paused=%lu pause=%ld period=%lu think=%ld", |
350 | __entry->bdi, | 356 | __entry->bdi, |
351 | __entry->limit, | 357 | __entry->limit, |
352 | __entry->setpoint, | 358 | __entry->setpoint, |
@@ -358,7 +364,9 @@ TRACE_EVENT(balance_dirty_pages, | |||
358 | __entry->dirtied, | 364 | __entry->dirtied, |
359 | __entry->dirtied_pause, | 365 | __entry->dirtied_pause, |
360 | __entry->paused, /* ms */ | 366 | __entry->paused, /* ms */ |
361 | __entry->pause /* ms */ | 367 | __entry->pause, /* ms */ |
368 | __entry->period, /* ms */ | ||
369 | __entry->think /* ms */ | ||
362 | ) | 370 | ) |
363 | ); | 371 | ); |
364 | 372 | ||