summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorJens Axboe <axboe@suse.de>2002-10-28 16:47:36 -0800
committerJens Axboe <axboe@suse.de>2002-10-28 16:47:36 -0800
commit3fddff46a2bc736960df51bd15355d1ca722efcf (patch)
treebb281c2d81176044490c29f3ec28b2fd2d504830 /drivers
parent1273c16c63965f6183a7f09275736b12b9f05892 (diff)
[PATCH] arrange request fiels sanely
Right now, various fields in struct request are just scattered throughout the struct. This makes for bad cache behaviour. This patch puts commonly referenced together fiels in the same cache lines and also removes the prefetches in deadline_merge(). The latter was actually hurting performance here now that struct request is sanely laid out wrt cache. This is worth ~40% less deadline_merge() runtime during disk intensive tests!
Diffstat (limited to 'drivers')
-rw-r--r--drivers/block/deadline-iosched.c5
1 files changed, 0 insertions, 5 deletions
diff --git a/drivers/block/deadline-iosched.c b/drivers/block/deadline-iosched.c
index c104ed722da3..585147ac810b 100644
--- a/drivers/block/deadline-iosched.c
+++ b/drivers/block/deadline-iosched.c
@@ -118,7 +118,6 @@ deadline_find_hash(struct deadline_data *dd, sector_t offset)
while ((entry = next) != hash_list) {
next = entry->next;
- prefetch(next);
drq = list_entry_hash(entry);
@@ -193,8 +192,6 @@ deadline_merge(request_queue_t *q, struct list_head **insert, struct bio *bio)
while ((entry = entry->prev) != sort_list) {
__rq = list_entry_rq(entry);
- prefetch(entry->prev);
-
BUG_ON(__rq->flags & REQ_STARTED);
if (!(__rq->flags & REQ_CMD))
@@ -302,8 +299,6 @@ static void deadline_move_requests(struct deadline_data *dd, struct request *rq)
struct list_head *nxt = rq->queuelist.next;
int this_rq_cost;
- prefetch(nxt);
-
/*
* take it off the sort and fifo list, move
* to dispatch queue