Servicing of requests
Hi,
Whenever I read data of 'x'k size using one read() system call, I find batches of some 'y' no. of make_requests calls followed by the same no. of end_io's. Something like :make_reqmake_reqmake_reqend_ioend_ioend_iomake_reqmake_reqmake_reqend_ioend_ioend_io
The output above gives me an idea that 3(hypothetical no.) buffer_heads above form a request.
(since 1 make_request corresponds to 1 buffer_head) and maybe since 1 request is serviced at a time I can see 3 make_req's together. Is my understanding right ??
But, I have read that sd uses some optimization algorithm to club requests so that the disk seek time is reduced. In which case since all requests are to adjecents sectors it should create a single request of all 'x'k assuming 1 buffer_head is of size 1k.
Does this make sense ??
-subodh
Signature · 3 lines
__________________________________________________________ Sign-up for your own FREE Personalized E-mail at Mail.com http://www.mail.com/?sr=signup
Quoted 24 lines · Subodh S
Hi,
Whenever I read data of 'x'k size using one
read()system call, I find batches of some 'y' no. ofmake_requestscalls followed by the same no. of end_io's. Something like :
make_reqmake_reqmake_reqend_ioend_ioend_iomake_reqmake_reqmake_reqend_ioend_ioend_ioThe output above gives me an idea that 3(hypothetical no.)
buffer_headsabove form a request. (since 1make_requestcorresponds to 1buffer_head) and maybe since 1 request is serviced at a time I can see 3 make_req's together. Is my understanding right ??
Quoted 6 lines
But, I have read that sd uses some optimization algorithm to club requests so that the disk seek time is reduced. In which case since all requests are to adjecents sectors it should create a single request of all 'x'k assuming 1
buffer_headis of size 1k.Does this make sense ??
First of all, please line wrap your emails at 72 chars. Your mail reads horribly.
Second, what is your question? Yes typically buffer_heads can get clustered into a request so that contig regions on disk are handed to the driver as a single request that may contain X buffer_heads. sd doesn't do this on its own, the block layer does it for the driver. And it happens for all drivers.
Signature · 1 line
Jens Axboe