I noticed recently a few things, which seemed to me to be strange, on the SPARC miniroot (and on the installed systems as well.)

First off, note that we do not have any support for a 32-bit SPARC kernel anymore. And, I'm not sure there is any value in going back to add support for one. (Is a 50MHz system running Solaris Nevada going to be interesting? I strongly doubt it.)

So, one of the things I noticed is that there are some rather pointless binaries floating around in /usr/bin (and probably elsewhere as well.)

For example, /usr/bin/sparcv7/ contains 32-bit versions of gcore, adb, mdb, savecore, and truss. These add about 1.2MB to the miniroot.

/usr/bin/sparcv9/ contains a bunch more stuff, which is duplicated in /usr/bin. For example, do we really need to ship both a 32-bit and 64-bit of /bin/ls? /bin/sort? etc. Do we think the 32-bit versions run any faster? (Somehow, due to the extra overhead associated with ioctl conversion, the fewer registers, and generally lower level of optimization available, I strongly suspect that the 64-bit versions run _faster_.)

Note that I find a similar case in /usr/sbin/sparcv9 as well. Although, in that case, it appears that there is less duplication, and most of the contents of /usr/sbin with equivalents in /usr/bin/sparcv9 are just links to isaexec. But why even waste the extra cycles to do the isaexec, when we could just have the binaries physically in /usr/sbin? (Likewise for isaexec binaries in /usr/bin.)

I realize that for amd64/i86pc we still have to switch on the isa, since we have both 32- and 64-bit kernels, but I think for SPARC that is wasteful. The differences between the two platforms here could easily be handled by the packaging system, which already understands the difference between sparc and x86.

While here, I wonder if it makes sense to produce 64-bit versions of some other famous binaries, at least on sparc. I'm thinking that anything that is executed very frequently might see a performance improvement from a 64-bit binary, thanks to higher levels of optimization, additional registers, and the fact that ioctl conversion does not have to be done by the kernel.

Thoughts?  Is it worthwhile?

   -- Garrett


_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to