All of lore.kernel.org
 help / color / mirror / Atom feed
* An "ELKS BusyBox" is in progress; 24.5% size savings so far!
@ 2012-02-20  5:55 Jody Bruchon
       [not found] ` <CAMKR1ysa2wnb=kPK3DMpqfT3i87exO5SKZDrTs-VpGOv1Ugy_Q@mail.gmail.com>
  2012-02-28 21:28 ` Juan Perez-Sanchez
  0 siblings, 2 replies; 3+ messages in thread
From: Jody Bruchon @ 2012-02-20  5:55 UTC (permalink / raw)
  To: linux-8086

I'm pleased to announce my development of a sub-project I am coining 
"BusyELKS" which serves the same purpose for ELKS that BusyBox does for 
larger Linux systems. I have spent most of my evening combining the 
files under elkscmd/sh_utils into a unified binary that executes the 
requested command based on its invocation name, and the savings just for 
sh_utils is awesome! Ignoring the "uname" tool which currently does not 
compile, the binary size total drops from 61920 to 46732, a whopping 
15188-byte (24.5%) drop in size! See for yourself:
648     ../sh_utils/basename
7232    ../sh_utils/date
536     ../sh_utils/dirname
360     ../sh_utils/echo
212     ../sh_utils/false
536     ../sh_utils/printenv
1836    ../sh_utils/pwd
212     ../sh_utils/true
3788    ../sh_utils/which
1896    ../sh_utils/whoami
328     ../sh_utils/yes
1896    ../sh_utils/logname
7256    ../sh_utils/tr
8320    ../sh_utils/xargs
7900    ../sh_utils/mesg
16148   ../sh_utils/stty
2816    ../sh_utils/test
-----
61920   total

-rwxr-xr-x 1 root root 46732 Feb 20 00:40 busyelks*

My preliminary binary isn't ready to be put to use yet; I still have 
that pesky 64K barrier that I will have to fight with eventually, and 
there are many more optimizations I haven't performed, but it's a start! 
Even if I can only unify the utilities by category, we can look forward 
to significant space savings from this effort. Once I've got the 
structure cleaned up a bit and some disparities merged together, I'll 
commit BusyELKS to Git. Stay tuned.

Jody Bruchon

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: An "ELKS BusyBox" is in progress; 24.5% size savings so far!
       [not found] ` <CAMKR1ysa2wnb=kPK3DMpqfT3i87exO5SKZDrTs-VpGOv1Ugy_Q@mail.gmail.com>
@ 2012-02-22 14:42   ` Jody Bruchon
  0 siblings, 0 replies; 3+ messages in thread
From: Jody Bruchon @ 2012-02-22 14:42 UTC (permalink / raw)
  To: linux-8086

On 2/20/2012 1:16 AM, Kirn Gill wrote:
> Most of the space-savings comes from not having to duplicate the C
> library around (due to static linking). If there was a shared library
> mechanism (which someone once suggested via interrupt vectors - does
> that even work?), then this space-savings would be far less.
That's not entirely true. Some of the commands are from sash, and have 
tons of 1:1 copied code to split them into separate commands, and I have 
fixed that up; some other commands shared routines as well, and those 
are also combined. The C library is not the only duplication waste 
involved. Additionally, commands like "true" and "false" are so trivial 
that their .c files were destroyed in favor of pushing their code into a 
single line in busyelks.c. I have yet to merge the usage() calls 
together, but I've already packed a lot of stuff into one executable, 
and it works as expected using the elksemu command. Once I get some of 
the ugliness fixed up, I'll push this to Git.

13682 ./sed.o  13058 ./stty.o  11599 ./compress.o
10680 ./diff.o  8806 ./find.o  8582 ./sort.o
8423 ./ed.o   5592 ./banner.o  3647 ./tar.o
3549 ./ls.o   3105 ./cut.o   3021 ./test.o
2633 ./grep.o  2593 ./dd.o   2565 ./tail.o
2347 ./cal.o  2254 ./sash.o   2003  ./tr.o
1897 ./cksum.o  1869 ./date.o  1771 ./uniq.o
1696 ./xargs.o  1594 ./lib/wildcards.o  1594 ./du.o
1526 ./wc.o   1475 ./l.o  1419 ./busyelks.o
1299 ./write.o  985 ./cmp.o   820 ./head.o
785 ./more.o  779 ./mkdir.o   764 ./lib/copyfile.o
762 ./tee.o   738 ./rmdir.o   699 ./mknod.o
697 ./mesg.o  676 ./ln.o  580 ./cat.o
571 ./which.o  569 ./lib/sashlib.o   509 ./mv.o
477 ./chgrp.o  476 ./chown.o  437 ./lib/modestring.o
430 ./printenv.o  420 ./basename.o   358 ./mkfifo.o
343 ./chmod.o  334 ./cp.o  326 ./rm.o
314 ./dirname.o  301 ./touch.o  287 ./lib/timestring.o
269 ./lib/chunks.o  262 ./lib/buildname.o  243 ./echo.o
238 ./whoami.o  233 ./logname.o   201 ./yes.o
194 ./pwd.o   179 ./lib/stripslash.o  139 ./lib/isadir.o
134 ./usage.o  132 ./lib/basename.o

text    data    bss     dec     hex     filename
51904   7576    37124   96604   1795c   busyelks

-rwxr-xr-x 1 root root 59512 Feb 22 09:33 busyelks*

Jody Bruchon

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: An "ELKS BusyBox" is in progress; 24.5% size savings so far!
  2012-02-20  5:55 An "ELKS BusyBox" is in progress; 24.5% size savings so far! Jody Bruchon
       [not found] ` <CAMKR1ysa2wnb=kPK3DMpqfT3i87exO5SKZDrTs-VpGOv1Ugy_Q@mail.gmail.com>
@ 2012-02-28 21:28 ` Juan Perez-Sanchez
  1 sibling, 0 replies; 3+ messages in thread
From: Juan Perez-Sanchez @ 2012-02-28 21:28 UTC (permalink / raw)
  To: linux-8086

On 2/19/12, Jody Bruchon <jody@jodybruchon.com> wrote:
> I'm pleased to announce my development of a sub-project I am coining
> "BusyELKS" which serves the same purpose for ELKS that BusyBox does for
> larger Linux systems. I have spent most of my evening combining the
> files under elkscmd/sh_utils into a unified binary that executes the
> requested command based on its invocation name, and the savings just for
> sh_utils is awesome! Ignoring the "uname" tool which currently does not
> compile, the binary size total drops from 61920 to 46732, a whopping
> 15188-byte (24.5%) drop in size! See for yourself:
> 648     ../sh_utils/basename
> 7232    ../sh_utils/date
> 536     ../sh_utils/dirname
> 360     ../sh_utils/echo
> 212     ../sh_utils/false
> 536     ../sh_utils/printenv
> 1836    ../sh_utils/pwd
> 212     ../sh_utils/true
> 3788    ../sh_utils/which
> 1896    ../sh_utils/whoami
> 328     ../sh_utils/yes
> 1896    ../sh_utils/logname
> 7256    ../sh_utils/tr
> 8320    ../sh_utils/xargs
> 7900    ../sh_utils/mesg
> 16148   ../sh_utils/stty
> 2816    ../sh_utils/test
> -----

In the source bcc development package, under the directory "tests",
there is the source of
a "ft" (file tool) command. The last version includes 15 file
utilities such as cat, cp mkdir, etc.
apparently not as basic as their elkscmd counterparts. It might be worth to copy
the file to elkscmd.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2012-02-28 21:28 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-02-20  5:55 An "ELKS BusyBox" is in progress; 24.5% size savings so far! Jody Bruchon
     [not found] ` <CAMKR1ysa2wnb=kPK3DMpqfT3i87exO5SKZDrTs-VpGOv1Ugy_Q@mail.gmail.com>
2012-02-22 14:42   ` Jody Bruchon
2012-02-28 21:28 ` Juan Perez-Sanchez

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.