From owner-freebsd-stable@FreeBSD.ORG Sun Mar 8 01:06:26 2009 Return-Path: Delivered-To: stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7666F106564A for ; Sun, 8 Mar 2009 01:06:26 +0000 (UTC) (envelope-from luigi@onelab2.iet.unipi.it) Received: from onelab2.iet.unipi.it (onelab2.iet.unipi.it [131.114.9.129]) by mx1.freebsd.org (Postfix) with ESMTP id 3D9D08FC12 for ; Sun, 8 Mar 2009 01:06:26 +0000 (UTC) (envelope-from luigi@onelab2.iet.unipi.it) Received: by onelab2.iet.unipi.it (Postfix, from userid 275) id 3D3D073098; Sun, 8 Mar 2009 01:55:15 +0100 (CET) Date: Sun, 8 Mar 2009 01:55:15 +0100 From: Luigi Rizzo To: stable@freebsd.org Message-ID: <20090308005515.GA68934@onelab2.iet.unipi.it> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.3i Cc: Luigi Rizzo , Fabio Checconi Subject: updated geom_sched code X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Mar 2009 01:06:26 -0000 Hi all, this is an update on the work that Fabio Checconi and I are doing on disk scheduling, which was first announced here a couple of months ago: http://lists.freebsd.org/pipermail/freebsd-stable/2009-January/047597.html Since the previous version, we have done some massive cleanup and consolidation of the code, fixed a bug in the system's disksort, and added amd64 support. We believe the code is now ready for some wider testing (as long as you are not using g_journal, see below). Full source code can be downloaded from http://info.iet.unipi.it/~luigi/FreeBSD/geom_sched-20090307.tgz (the archive also includes pre-built RELENG_7/i386 modules). Instructions on how to install and use the scheduler are included in the source code, along with some notes on the implemented schedulers. The major changes from the previous version are the following: - support for early loading of scheduler modules, allowing their use on root devices; - support for the geom 'retaste' function; - general cleanup of the code, simplification of the internal interfaces, some bugs fixed; - support for the ugly binary patching hack on amd64; - support for multiple dispatches in RR; - support for on-the-fly scheduler switches; - support for unloading schedulers in-use. NOTE: due to the way we store classification info, the schedulers are probably incompatible with g_journal. Apart from that (which needs to be fixed by adding a field to the struct bio), we believe the code to be quite stable now, so future work will be mainly focused on adding more scheduling algorithms and doing a thorough performance evaluation under various workloads. In the meantime we'd really appreciate any comment from you on the approach we took, and anyone testing the code. cheers Luigi and Fabio