forked from mirrors/linux
		
	writeback: trace event bdi_dirty_ratelimit
It helps understand how various throttle bandwidths are updated. Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
This commit is contained in:
		
							parent
							
								
									50657fc4df
								
							
						
					
					
						commit
						b48c104d22
					
				
					 2 changed files with 47 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -226,6 +226,51 @@ TRACE_EVENT(global_dirty_state,
 | 
			
		|||
	)
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
#define KBps(x)			((x) << (PAGE_SHIFT - 10))
 | 
			
		||||
 | 
			
		||||
TRACE_EVENT(bdi_dirty_ratelimit,
 | 
			
		||||
 | 
			
		||||
	TP_PROTO(struct backing_dev_info *bdi,
 | 
			
		||||
		 unsigned long dirty_rate,
 | 
			
		||||
		 unsigned long task_ratelimit),
 | 
			
		||||
 | 
			
		||||
	TP_ARGS(bdi, dirty_rate, task_ratelimit),
 | 
			
		||||
 | 
			
		||||
	TP_STRUCT__entry(
 | 
			
		||||
		__array(char,		bdi, 32)
 | 
			
		||||
		__field(unsigned long,	write_bw)
 | 
			
		||||
		__field(unsigned long,	avg_write_bw)
 | 
			
		||||
		__field(unsigned long,	dirty_rate)
 | 
			
		||||
		__field(unsigned long,	dirty_ratelimit)
 | 
			
		||||
		__field(unsigned long,	task_ratelimit)
 | 
			
		||||
		__field(unsigned long,	balanced_dirty_ratelimit)
 | 
			
		||||
	),
 | 
			
		||||
 | 
			
		||||
	TP_fast_assign(
 | 
			
		||||
		strlcpy(__entry->bdi, dev_name(bdi->dev), 32);
 | 
			
		||||
		__entry->write_bw	= KBps(bdi->write_bandwidth);
 | 
			
		||||
		__entry->avg_write_bw	= KBps(bdi->avg_write_bandwidth);
 | 
			
		||||
		__entry->dirty_rate	= KBps(dirty_rate);
 | 
			
		||||
		__entry->dirty_ratelimit = KBps(bdi->dirty_ratelimit);
 | 
			
		||||
		__entry->task_ratelimit	= KBps(task_ratelimit);
 | 
			
		||||
		__entry->balanced_dirty_ratelimit =
 | 
			
		||||
					  KBps(bdi->balanced_dirty_ratelimit);
 | 
			
		||||
	),
 | 
			
		||||
 | 
			
		||||
	TP_printk("bdi %s: "
 | 
			
		||||
		  "write_bw=%lu awrite_bw=%lu dirty_rate=%lu "
 | 
			
		||||
		  "dirty_ratelimit=%lu task_ratelimit=%lu "
 | 
			
		||||
		  "balanced_dirty_ratelimit=%lu",
 | 
			
		||||
		  __entry->bdi,
 | 
			
		||||
		  __entry->write_bw,		/* write bandwidth */
 | 
			
		||||
		  __entry->avg_write_bw,	/* avg write bandwidth */
 | 
			
		||||
		  __entry->dirty_rate,		/* bdi dirty rate */
 | 
			
		||||
		  __entry->dirty_ratelimit,	/* base ratelimit */
 | 
			
		||||
		  __entry->task_ratelimit, /* ratelimit with position control */
 | 
			
		||||
		  __entry->balanced_dirty_ratelimit /* the balanced ratelimit */
 | 
			
		||||
	)
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
DECLARE_EVENT_CLASS(writeback_congest_waited_template,
 | 
			
		||||
 | 
			
		||||
	TP_PROTO(unsigned int usec_timeout, unsigned int usec_delayed),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -875,6 +875,8 @@ static void bdi_update_dirty_ratelimit(struct backing_dev_info *bdi,
 | 
			
		|||
 | 
			
		||||
	bdi->dirty_ratelimit = max(dirty_ratelimit, 1UL);
 | 
			
		||||
	bdi->balanced_dirty_ratelimit = balanced_dirty_ratelimit;
 | 
			
		||||
 | 
			
		||||
	trace_bdi_dirty_ratelimit(bdi, dirty_rate, task_ratelimit);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __bdi_update_bandwidth(struct backing_dev_info *bdi,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue