IO scheduler elevator with erase block support

Registered by Per Förlin on 2011-05-30

Make the IO scheduler elevator priorities consecutive writes within the same erase block.

Blueprint information

Status:
Complete
Approver:
Deepak Saxena
Priority:
Medium
Drafter:
None
Direction:
Needs approval
Assignee:
Venkatraman S
Definition:
Obsolete
Series goal:
Accepted for devtrack
Implementation:
Slow progress
Milestone target:
milestone icon backlog
Started by
Venkatraman S on 2012-01-23
Completed by
Deepak Saxena on 2012-09-19

Related branches

Sprints

Whiteboard

Headline: Make the IO scheduler elevator priorities consecutive writes within the same erase block.

Acceptance: Integrate the patches upstream and verify that the read requests can be scheduled out of order, never merge write requests across erase block boundaries, ensure consecutive writes within one erase block are done in ascending order, all writes within one erase block are issued at once, ignore proximity of writes beyond erase block boundaries.

Work items for 11.11
Integrate that patch upstream: TODO
Based on this flag...
...let all read requests be scheduled out of order: TODO
...never merge write requests across erase block boundaries: TODO
...ensure consecutive writes within one erase block are done in ascending order: TODO
...issue all writes within one erase block at once: TODO
...ignore proximity of writes beyond erase block boundaries: TODO
Integrate all those patches upstream: TODO

Notes from 12/0/11 meeting:

Drop work with CFQ scheduler and implement with a new scheduler based on NOOP for evaluation purposes: TODO
Do performance benchmarks: CFQ vs NOOP vs Optimized NOOP

(If worse than CFQ, then drop it)
(Arnd: Deadline might be a better option than NOOP, need to look into it)

(?)

Work Items

Work items:
Add a common infrastructure for setting erase block sizes on all block devices: DONE
Add a flag for cheap flash drives, similar to non-rotational: DONE
Disallow merge if the combined requests will cross a erase block boundary: INPROGRESS

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.