From owner-svn-src-head@FreeBSD.ORG Thu Apr 15 16:49:25 2010 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 59177106566B; Thu, 15 Apr 2010 16:49:25 +0000 (UTC) (envelope-from uqs@spoerlein.net) Received: from acme.spoerlein.net (acme.spoerlein.net [IPv6:2001:470:9a47::1]) by mx1.freebsd.org (Postfix) with ESMTP id 0AD138FC17; Thu, 15 Apr 2010 16:49:25 +0000 (UTC) Received: from acme.spoerlein.net (localhost.spoerlein.net [IPv6:::1]) by acme.spoerlein.net (Postfix) with ESMTPS id 43FE75C5F; Thu, 15 Apr 2010 18:49:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=spoerlein.net; s=dkim200908; t=1271350164; bh=jrOJMiXuO0OGOlt2ij/nQxtG/e8veZTmtMvJVOIZsvA=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:In-Reply-To; b=fuGTltj90OVsotQncfFyU6pQEsPTyR4UPlfWQDuZOuZtSbajTWOrr/6bYiwx4yEUz veihQcGh8g2xke53D355XQ7Uj4ZQzcFdESyIRmmjAmyxkvGw27nEKUHinmtne42kdh T9IUIDcQYGOOrYG59Y+hjatOKs7PxZyisVQPaDNI= Received: (from uqs@localhost) by acme.spoerlein.net (8.14.4/8.14.4/Submit) id o3FGnNHF007011; Thu, 15 Apr 2010 18:49:23 +0200 (CEST) (envelope-from uqs@spoerlein.net) Date: Thu, 15 Apr 2010 18:49:23 +0200 From: Ulrich =?utf-8?B?U3DDtnJsZWlu?= To: Luigi Rizzo Message-ID: <20100415164922.GD92627@acme.spoerlein.net> Mail-Followup-To: Ulrich =?utf-8?B?U3DDtnJsZWlu?= , Luigi Rizzo , Attila Nagy , fabio@gandalf.sssup.it, Luigi Rizzo , src-committers@FreeBSD.org, svn-src-head@FreeBSD.org References: <201004121637.o3CGbjSK080066@svn.freebsd.org> <4BC724DF.7010907@fsn.hu> <20100415151557.GA98341@onelab2.iet.unipi.it> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100415151557.GA98341@onelab2.iet.unipi.it> User-Agent: Mutt/1.5.20 (2009-06-14) Cc: svn-src-head@FreeBSD.org, Attila Nagy , Luigi Rizzo , src-committers@FreeBSD.org, fabio@gandalf.sssup.it Subject: Re: svn commit: r206497 - in head: sbin/geom/class sbin/geom/class/sched sys/geom/sched sys/modules/geom sys/modules/geom/geom_sched sys/modules/geom/geom_sched/gs_sched sys/modules/geom/geom_sched/gsc... X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Apr 2010 16:49:25 -0000 On Thu, 15.04.2010 at 17:15:57 +0200, Luigi Rizzo wrote: > On Thu, Apr 15, 2010 at 04:38:23PM +0200, Attila Nagy wrote: > > On 04/12/2010 06:37 PM, Luigi Rizzo wrote: > > > Bring in geom_sched, support for scheduling disk I/O requests > > > in a device independent manner. Also include an example anticipatory > > > scheduler, gsched_rr, which gives very nice performance improvements > > > in presence of competing random access patterns. > > > > > > This is joint work with Fabio Checconi, developed last year > > > and presented at BSDCan 2009. You can find details in the > > > README file or at > > > > > Are there any plans to bring in something like Linux's ionice (or even > > better solutions)? Is it possible to do it easily at all (the user and > > GEOM are seemingly very far from each other)? > > I can easily[*] modify the I/O priority/weight of process or threads, > but you have to keep in mind that once a request is intercepted by > the filesystem code (e.g. for delayed writes, or avoid duplication > of pending reads), by the time it hits the disk it is not trivial > to tell who should be charged for it. > > This is an area where we still need to experiment a bit > (especially to find on which process issues which request, > say for metadata, delayed writes, shared reads). > > [*] the 'easy' way is put the information in an external hash table > and look it up using as a search key either of uid, gid, thread *>. I think we did something like this in the GSOC2005 > project on disk scheduling. A more intrusive way involves extending > the struct thread with an extra field to store the io priority. What would already be helpful, is an I/O time measurement of the overall system and have that displayed in, eg., vmstat like Linux and Solaris do. It gives a better measure of if a system is CPU bound or I/O bound or neither. Can the scheduler help here? Uli