Date: Tue, 24 Jan 2012 10:22:57 -0800 From: Artem Belevich <art@freebsd.org> To: =?ISO-8859-2?Q?Edward_Tomasz_Napiera=B3a?= <trasz@freebsd.org> Cc: freebsd-hackers@freebsd.org Subject: Re: Speeding up the loader(8). Message-ID: <CAFqOu6ivT34T_RGHxuWZOTk2mCJ29P6wLY3RHt7=S-wH-Y0eYg@mail.gmail.com> In-Reply-To: <20120123215503.GA64787@geosci> References: <20120123215503.GA64787@geosci>
next in thread | previous in thread | raw e-mail | index | archive | help
2012/1/23 Edward Tomasz Napiera=C5=82a <trasz@freebsd.org>: > Some time ago I've spent some time on trying to speed up loading > modules by the loader(8). =C2=A0Result can be found at: > > http://people.freebsd.org/~trasz/fast-loader-3.diff > > This patch solves three issues: > > 1. As it is now, the code in biosdisk.c tries very hard to split > =C2=A0 reasonably sized (up to 64kB, IIRC) requests into smaller ones. > > 2. The code in biosdisk.c rereads the partition table and probably > =C2=A0 some filesystem metadata every time a file gets opened, i.e. > =C2=A0 for every module. =C2=A0These reads bypass the bcache. > > 3. The code in bcache.c doesn't really implement an LRU - it implements > =C2=A0 'least recently added' algorithm, i.e. a kind of queue. =C2=A0Not = that > =C2=A0 it matters much, since it flushes the elements two seconds after > =C2=A0 caching them anyway. =C2=A0I replaced it with Least Frequently Use= d. > =C2=A0 LRU didn't behave well, as it tended to replace metadata with data > =C2=A0 used only once. 4. it flushes cache on access to a different drive which means that cache does not help on multi-disk ZFS setups. I've posted a patch some time back. See http://lists.freebsd.org/pipermail/freebsd-fs/2011-September/012527.html Feel free to combine the changes. --Artem > > In my tests under VMWare Fusion, this cut the modules loading time > by half. =C2=A0I don't intend to commit the patch as-is - the first part > looks dangerous (the splitting was probably done for a reason), > the second is hackish, and the third doesn't improve anything by itself. > I'm working on something else at a moment; feel free to pick this up. > > -- > If you cut off my head, what would I say? =C2=A0Me and my head, or me and= my body? > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org= "
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAFqOu6ivT34T_RGHxuWZOTk2mCJ29P6wLY3RHt7=S-wH-Y0eYg>