On Wed, 9 Jul 2014, Konstantin Belousov wrote:

On Wed, Jul 09, 2014 at 11:05:29AM -0700, Adrian Chadd wrote:
On 9 July 2014 10:23, Baptiste Daroussin <b...@freebsd.org> wrote:
On Wed, Jul 09, 2014 at 10:12:27AM -0700, Adrian Chadd wrote:
Hi,

By doing this you're actually making more work for the really embedded
people who have size constraints on things.

I dislike privatelib but it at least allows for code sharing where
before people would just statically link things into binaries.

do you install gdb on your embedded environnement? because that is the only
user of libreadline.

See below.

I've had to actively undo this kind of dumb before in order to get
things to fit on very small flash root filesystems.

Shared libraries are good. Please stop assuming we have lots of disk
space and RAM to have duplicates of things floating around.

Shared libraries are not good.  They save a little disk space but cost an
enormous amount of RAM.  E.g.:

FreeBSD-~5.2 i386, statically linked:
  PID USERNAME  THR PRI NICE   SIZE    RES STATE    TIME   WCPU COMMAND
 1101 bde         1  76    0  1392K   780K RUN      0:00  0.00% top

FreeBSD-11 i386, dynamically linked:
  PID USERNAME       THR PRI NICE   SIZE    RES STATE   C   TIME    WCPU COMMAN
25085 bde              1  21    0 11260K  2432K STOP    4   0:00   0.00% top

Here dynamic linkage and perhaps other bloat takes 3 times as much RAM (RES)
and 8 times as much virtual memory (SIZE).  For long-running programs, even
more RAM (or swap to the disk that you apparently don't have on embedded
systems), it is likely for more of the shared library virtual memory to
be written to so that it becomes physical.  This might explain the even
larger RAM uses in the following:

FreeBSD-~5.2 i386, statically linked:
  PID USERNAME  THR PRI NICE   SIZE    RES STATE    TIME   WCPU COMMAND
  681 root        1  76    0  1676K  1132K select   0:00  0.00% sshd
  659 root        1  44   r0   848K   536K select   0:00  0.00% ntpd
  688 root        1  76    0  2084K  1796K select   0:00  0.00% sendmail

FreeBSD-11 i386, dynamically linked:
  PID USERNAME       THR PRI NICE   SIZE    RES STATE   C   TIME    WCPU COMMAN
25072 bde              1  20    0 17836K  6556K select  1   0:00   0.00% sshd
  693 root             1  20    0 12356K  4168K select  4   0:02   0.00% ntpd
  744 root             1  20    0 12868K  4752K select  0   0:01   0.00% sendma

Here dynamic sshd takes almost 6 times as much RAM; dynamic ntpd almost
8 times as much, but dymamic sendmail takes less than 3 times as much.

The output also shows misformatting of the USERNAME column in newer versions
of FreeBSD (lots of unused whitespace to kill the command name non-whitespace).

However, I would like the option to link any library shared, in case I
want to optimize disk space at the cost of RAM and runtime.

What Baptiste did is the only correct way to handle the ABI and API
un-stability issues with the third-party libraries.  The change is
good if only for this sole reason.  Private libraries still conflict
with the same library installed by other means, in the single process
image.

Works even better for libc :-).  Static libraries also insulate from
the latest bloat and security holes.  There main problem is that they
give old security holes instead.

Bruce
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to