diff options
| author | Jens Axboe <axboe@suse.de> | 2002-10-28 16:47:36 -0800 |
|---|---|---|
| committer | Jens Axboe <axboe@suse.de> | 2002-10-28 16:47:36 -0800 |
| commit | 3fddff46a2bc736960df51bd15355d1ca722efcf (patch) | |
| tree | bb281c2d81176044490c29f3ec28b2fd2d504830 /drivers | |
| parent | 1273c16c63965f6183a7f09275736b12b9f05892 (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.c | 5 |
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 |
