From owner-freebsd-arch Mon Feb 18 18:57:27 2002 Delivered-To: freebsd-arch@freebsd.org Received: from mail.chesapeake.net (chesapeake.net [205.130.220.14]) by hub.freebsd.org (Postfix) with ESMTP id B9C2837B400 for ; Mon, 18 Feb 2002 18:57:22 -0800 (PST) Received: from localhost (jroberson@localhost) by mail.chesapeake.net (8.11.6/8.11.6) with ESMTP id g1J2vMG69676 for ; Mon, 18 Feb 2002 21:57:22 -0500 (EST) (envelope-from jroberson@chesapeake.net) Date: Mon, 18 Feb 2002 21:57:22 -0500 (EST) From: Jeff Roberson To: arch@freebsd.org Subject: Prioritized bio patches. Message-ID: <20020218214128.C12686-100000@mail.chesapeake.net> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-arch@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG 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