aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJens Axboe <axboe@suse.de>2006-03-28 06:03:44 -0500
committerJens Axboe <axboe@suse.de>2006-03-28 06:03:44 -0500
commit206dc69b31ca05baac68c75b8ed2ba7dd857d273 (patch)
treef9ca5d996e19cb072165b1f6474c39b59b0e7451 /include
parent7143dd4b0127141a4f773e819d1d1f4ab82bb517 (diff)
[BLOCK] cfq-iosched: seek and async performance fixes
Detect whether a given process is seeky and if so disable (mostly) the idle window if it is. We still allow just a little idle time, just enough to allow that process to submit a new request. That is needed to maintain fairness across priority groups. In some cases, we could setup several async queues. This is not optimal from a performance POV, since we want all async io in one queue to perform good sorting on it. It also impacted sync queues, as async io got too much slice time. Signed-off-by: Jens Axboe <axboe@suse.de>
Diffstat (limited to 'include')
-rw-r--r--include/linux/blkdev.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index ed0ffa673568..d0cac8b58de7 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -63,11 +63,17 @@ struct cfq_io_context {
63 struct io_context *ioc; 63 struct io_context *ioc;
64 64
65 unsigned long last_end_request; 65 unsigned long last_end_request;
66 unsigned long last_queue; 66 sector_t last_request_pos;
67 unsigned long last_queue;
68
67 unsigned long ttime_total; 69 unsigned long ttime_total;
68 unsigned long ttime_samples; 70 unsigned long ttime_samples;
69 unsigned long ttime_mean; 71 unsigned long ttime_mean;
70 72
73 unsigned int seek_samples;
74 u64 seek_total;
75 sector_t seek_mean;
76
71 struct list_head queue_list; 77 struct list_head queue_list;
72 78
73 void (*dtor)(struct io_context *); /* destructor */ 79 void (*dtor)(struct io_context *); /* destructor */