Date: Sat, 16 Nov 2002 17:58:19 -0800 (PST) From: Matthew Dillon <dillon@apollo.backplane.com> To: "M. Warner Losh" <imp@bsdimp.com> Cc: bright@mu.org, nate@root.org, hackers@FreeBSD.ORG Subject: Re: cvs commit: src/bin/sleep sleep.c Message-ID: <200211170158.gAH1wJhc035731@apollo.backplane.com> References: <200211151925.gAFJPsgh037805@apollo.backplane.com> <20021115194347.GG50692@elvis.mu.org> <200211152017.gAFKHbFS044142@apollo.backplane.com> <20021116.174331.28768088.imp@bsdimp.com>
next in thread | previous in thread | raw e-mail | index | archive | help
:I personally thing that we should have a shared /{s,}bin in 5.0 and :that it should be the dafult and that it should work with / and /usr :being on different partitions. Preliminary indications are that we'd :save on the order of 25M-30M on /, which makes up for the additional :kernel modules we now install. : :Warner Well, I actually have an objection to having a shared [s]bin by default. There is no reason to save disk space if you have plenty of it, and a dynamic binary eats a lot more memory when running then a static one. This may not matter for programs like chmod or chown, but it does matter for programs which are separately exec'd (rather then fork'd) such as /bin/sh and /bin/csh. A shared sh or csh will create a noticeable detriment on multi-user machines which are running a lot of instances of them. Take /bin/csh (aka tcsh) for example. Startup overhead if static: 144 pages faults, 113 zero fill, 64 COW Startup overhead if dynamic: 310 page faults, 131 zero fill, 84 COW So the difference is 38 pages of memory = 152KB per instance. That's fairly significant on a multi-user system that might have several hundred csh's running. I specifically compile certain non-forked binaries on my system static precisely to reduce their memory footprint. The only real usefulness of a dynamic [s]bin (and a mini-c static or dynamic [s]bin for that matter), is going to be in turnkey products or for bootstrapping purposes (e.g. like a two-floppy boot), and for such products I do not see any particular need of a /recovery feature. They serve no other useful purpose. I suppose that is an argument against a static/mini-c combination which leaves only a dynamic/mini-c combination useful. This would also argue that the only usefulness of a mini-c in this case is to strip as much out of it as possible. For example, to strip out YP, to dummy-up stdio, and so forth... to create a result that would be significantly useful in an embedded system but just as significantly NON-useful in a normal system. -Matt Matthew Dillon <dillon@backplane.com> 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?200211170158.gAH1wJhc035731>