Date: Wed, 22 Dec 1999 19:25:39 -0600 (CST) From: Ryan Thompson <freebsd@sasknow.com> To: freebsd-hackers@freebsd.org Subject: Re: Default minfree performance restrictions? Message-ID: <Pine.BSF.4.10.9912221919590.49628-100000@sasknow.com> In-Reply-To: <Pine.BSF.4.10.9912201504420.30072-100000@sasknow.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Hmm... Since I didn't get a single reply to this one, am I to assume that you all think I'm nuts, and should be publicly flogged with a copy of Greg's book for even thinking such foolish thoughts? :-) Or... Maybe most of the more knowledgeable individuals who follow this list are just gone for the holidays. Seriously, though, folks, does my idea make any sense at all? Thanks, - Ryan On Mon, 20 Dec 1999, Ryan Thompson wrote: > Hello all, > > After creating some larger slices than I'm used to, I finally felt the > full force of a default 8% minfree setting. So, I went to tunefs(8) to > try and put a damper on the multiple gigabytes that aren't being made > available to users. However, I was a bit disappointed to note that > setting minfree at or below 5% (using integer values!) would result in > SPACE optimization. > > So, on my 3.4-STABLE system, I did some hunting around. > > In /usr/src/sys/ufs/ffs/fs.h, I see MINFREE defaults to 8%, and default > time optimization, like tunefs says. Nothing fancy, there. > > In ./ffs_alloc.c, however, I found out how the SPACE/TIME optimization is > determined. In particular, in ffs_realloccg(), I find (from yesterday's > -STABLE), the following snippet: > > /* > * Allocate a new disk location. > */ > if (bpref >= fs->fs_size) > bpref = 0; > switch ((int)fs->fs_optim) { > case FS_OPTSPACE: > /* > * Allocate an exact sized fragment. Although this makes > * best use of space, we will waste time relocating it if > * the file continues to grow. If the fragmentation is > * less than half of the minimum free reserve, we choose > * to begin optimizing for time. > */ > request = nsize; > if (fs->fs_minfree <= 5 || /* !!! */ > fs->fs_cstotal.cs_nffree > > fs->fs_dsize * fs->fs_minfree / (2 * 100)) > break; > log(LOG_NOTICE, "%s: optimization changed from SPACE to TIME\n", > fs->fs_fsmnt); > fs->fs_optim = FS_OPTTIME; > break; > > Questions: > > - Can the line I've marked /* !!! */ have the minimum value of 5 safely > reduced? Eliminated? (safely = if/when a filesystem fills up, could writes > potentially corrupt the fs?) On small partitions with many inodes, perhaps > 5% is appropriate, but in cases like mine, where I have filesystems in > excess of 20GB with < 0.1% fragmentation, > 5% minfree is frankly too much > to give away. > > - Would it make sense to externalize this option into a header file, > kernel config option, or perhaps tunefs itself? I'm guessing the latter > would require modifications to our UFS implementation to allow for the > extra parameter for each filesystem... And would definitely qualify as an > "invasive" change. Food for thought, though :-) > > Any insights? > > I suppose I could just go ahead and try it, but, before I end up doing a > reinstall (cd /usr/src && make blowupworld), I thought it better to ask a > more experienced following of users :-) > > -- > Ryan Thompson <ryan@sasknow.com> > 50% Owner, Technical and Accounts > Phone: +1 (306) 664-1161 > > SaskNow Technologies http://www.sasknow.com > #106-380 3120 8th St E Saskatoon, SK S7H 0W2 > > To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.10.9912221919590.49628-100000>