Re: Kernel question(s): I/O handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



On Wednesday 21 March 2007, Mark Hull-Richter wrote:
> I have been chasing down the way the inode and page caches are
> structured and handled, but there is a mystery I have not been able to
> track down yet.  How does the I/O queue that dirty inodes and pages are
> put into when it's time to flush them out to disk get picked up?  Also,
> where are the sources for the I/O schedulers?  I haven't been able to
> locate them yet either.

The actual I/O schedulers are in-kernel thingies that live in the 
$KERNELSRC/block directory. There are (normally) four: noop, as, deadline and 
cfq (cfq being the default in centos-4).

However, it doesn't seem like to me that you're actually looking for the I/O 
schedulers but more for why and when the kernel decides to flush dirty pages 
(I've been known to be wrong though ;-).

When a page has yet to be committed to disk it's called a dirty page (see 
eg. /proc/meminfo). Dirty pages are flushed to disk either explicitly 
(umount, sync, ..) or periodically (the kernel won't allow a dirty page to 
age forever).

When the they are finally flushed, then the I/O schedulers for the involved 
block device(s) gets involved as they handle the queueing of all requests for 
their device.

I hope some of that made sense :-)

/Peter

> I know this should not be too hard to locate, but it seems as though
> there's some magic involved when the inode/page gets put in the i/o
> queue and then <something happens here> and the i/o is scheduled and,
> eventually, performed.

Attachment: pgpIZlOPUXoQP.pgp
Description: PGP signature

_______________________________________________
CentOS mailing list
CentOS@xxxxxxxxxx
http://lists.centos.org/mailman/listinfo/centos

[Index of Archives]     [CentOS]     [CentOS Announce]     [CentOS Development]     [CentOS ARM Devel]     [CentOS Docs]     [CentOS Virtualization]     [Carrier Grade Linux]     [Linux Media]     [Asterisk]     [DCCP]     [Netdev]     [Xorg]     [Linux USB]
  Powered by Linux