sort(1) memory usage

Dag-Erling Smørgrav des at des.no
Sun Feb 3 07:31:43 PST 2008


Dag-Erling Smørgrav <des at des.no> writes:
> Erik Trulsson <ertr1013 at student.uu.se> writes:
> > Yep, it seems that GNU sort allocates a quite large buffer by default when
> > the size of the input is unknown (such as when it reads input from stdin.)
> > A quick check in the source code indicates that it tries to size this buffer
> > according to how much memory the system has (and according to any limits set
> > on how much memory the process is allowed to use.)
> Uh, OK.  This scaling doesn't seem to work correctly.  It seems to
> allocate 27 MB on 32-bit machines and 54 MB on 64-bit machines,
> regardless of memory size.

Looking at the code, it seems to go to extreme lengths to get it
absolutely wrong.  For instance, if hw.physmem / 8 > hw.usermem, it will
pick the former, which means it's pretty much guaranteed to either fail
or hose your system (or both).

In the immortal words of Blazing Star: YOU FAIL IT

Count this as a vote for ditching GNU sort in favor of a BSD-licensed
implementation (from {Net,Open}BSD for instance).

DES
-- 
Dag-Erling Smørgrav - des at des.no


More information about the freebsd-hackers mailing list