Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 18 Feb 2002 21:57:22 -0500 (EST)
From:      Jeff Roberson <jroberson@chesapeake.net>
To:        arch@freebsd.org
Subject:   Prioritized bio patches.
Message-ID:  <20020218214128.C12686-100000@mail.chesapeake.net>

next in thread | raw e-mail | index | archive | help
I have developed an extension to the bio queue interface to support
priorities. It may be useful in place of the nice value related sleep
that is currently in bioqdisksort.  There are 6 queues in each bio queue
head. The first is the default sorted queue.  It is used if the bio
priority (bio_prio) is BIO_PRIO_DEFAULT.  Then there are 5 unsorted queues
for use with different nice levels.

The priority is automatically picked at insert time based on the process
nice value.  Un-nice processes still use the default IO queue to prevent
starvation.  The lower priority IO is not sorted because it may be
interrupted at any time by higher priority io, thus defeating the sort.
This also saves a bit of structure bloat and processing time.

The main advantage over the current solution is that, if the system has
spare IO cycles, nice processes can run at full speed.  Also, this was
implemented in such a way that it is completely transparent to users of
the bioq interfaces.  Since cam keeps a deep queue of IOs it may want to
adjust it's priorities for the IO as well.  This would prevent a possible
delay for high priority IO while cam works through a queue full of low
priority IO. As it is though the response time should be reasonable.

This patch does not introduce any higher priority levels.  It would be
easy to do, but I don't see any demand for it right now.  The patch is
available at http://www.chesapeake.net/~jroberson/prio.patch

Thanks,
Jeff


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020218214128.C12686-100000>