From 246307745c406379996e6ed6411f0e20f1ce1449 Mon Sep 17 00:00:00 2001 From: Theodore Ts'o Date: Thu, 28 Feb 2013 23:58:56 -0500 Subject: ext4: optimize ext4_es_shrink() When the system is under memory pressure, ext4_es_srhink() will get called very often. So optimize returning the number of items in the file system's extent status cache by keeping a per-filesystem count, instead of calculating it each time by scanning all of the inodes in the extent status cache. Also rename the slab used for the extent status cache to be "ext4_extent_status" so it's obviousl the slab in question is created by ext4. Signed-off-by: "Theodore Ts'o" Cc: Zheng Liu --- include/trace/events/ext4.h | 40 ++++++++++++---------------------------- 1 file changed, 12 insertions(+), 28 deletions(-) (limited to 'include') diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h index c0457c0d1a6..4ee47100385 100644 --- a/include/trace/events/ext4.h +++ b/include/trace/events/ext4.h @@ -2255,64 +2255,48 @@ TRACE_EVENT(ext4_es_lookup_extent_exit, __entry->found ? __entry->status : 0) ); -TRACE_EVENT(ext4_es_reclaim_extents_count, - TP_PROTO(struct super_block *sb, int nr_cached), - - TP_ARGS(sb, nr_cached), - - TP_STRUCT__entry( - __field( dev_t, dev ) - __field( int, nr_cached ) - ), - - TP_fast_assign( - __entry->dev = sb->s_dev; - __entry->nr_cached = nr_cached; - ), - - TP_printk("dev %d,%d cached objects nr %d", - MAJOR(__entry->dev), MINOR(__entry->dev), - __entry->nr_cached) -); - TRACE_EVENT(ext4_es_shrink_enter, - TP_PROTO(struct super_block *sb, int nr_to_scan), + TP_PROTO(struct super_block *sb, int nr_to_scan, int cache_cnt), - TP_ARGS(sb, nr_to_scan), + TP_ARGS(sb, nr_to_scan, cache_cnt), TP_STRUCT__entry( __field( dev_t, dev ) __field( int, nr_to_scan ) + __field( int, cache_cnt ) ), TP_fast_assign( __entry->dev = sb->s_dev; __entry->nr_to_scan = nr_to_scan; + __entry->cache_cnt = cache_cnt; ), - TP_printk("dev %d,%d nr to scan %d", + TP_printk("dev %d,%d nr_to_scan %d cache_cnt %d", MAJOR(__entry->dev), MINOR(__entry->dev), - __entry->nr_to_scan) + __entry->nr_to_scan, __entry->cache_cnt) ); TRACE_EVENT(ext4_es_shrink_exit, - TP_PROTO(struct super_block *sb, int shrunk_nr), + TP_PROTO(struct super_block *sb, int shrunk_nr, int cache_cnt), - TP_ARGS(sb, shrunk_nr), + TP_ARGS(sb, shrunk_nr, cache_cnt), TP_STRUCT__entry( __field( dev_t, dev ) __field( int, shrunk_nr ) + __field( int, cache_cnt ) ), TP_fast_assign( __entry->dev = sb->s_dev; __entry->shrunk_nr = shrunk_nr; + __entry->cache_cnt = cache_cnt; ), - TP_printk("dev %d,%d nr to scan %d", + TP_printk("dev %d,%d shrunk_nr %d cache_cnt %d", MAJOR(__entry->dev), MINOR(__entry->dev), - __entry->shrunk_nr) + __entry->shrunk_nr, __entry->cache_cnt) ); #endif /* _TRACE_EXT4_H */ -- cgit v1.2.3-18-g5258