freebsd-skq/usr.bin
Bosko Milekic 099a0e588c Bring in mbuma to replace mballoc.
mbuma is an Mbuf & Cluster allocator built on top of a number of
extensions to the UMA framework, all included herein.

Extensions to UMA worth noting:
  - Better layering between slab <-> zone caches; introduce
    Keg structure which splits off slab cache away from the
    zone structure and allows multiple zones to be stacked
    on top of a single Keg (single type of slab cache);
    perhaps we should look into defining a subset API on
    top of the Keg for special use by malloc(9),
    for example.
  - UMA_ZONE_REFCNT zones can now be added, and reference
    counters automagically allocated for them within the end
    of the associated slab structures.  uma_find_refcnt()
    does a kextract to fetch the slab struct reference from
    the underlying page, and lookup the corresponding refcnt.

mbuma things worth noting:
  - integrates mbuf & cluster allocations with extended UMA
    and provides caches for commonly-allocated items; defines
    several zones (two primary, one secondary) and two kegs.
  - change up certain code paths that always used to do:
    m_get() + m_clget() to instead just use m_getcl() and
    try to take advantage of the newly defined secondary
    Packet zone.
  - netstat(1) and systat(1) quickly hacked up to do basic
    stat reporting but additional stats work needs to be
    done once some other details within UMA have been taken
    care of and it becomes clearer to how stats will work
    within the modified framework.

From the user perspective, one implication is that the
NMBCLUSTERS compile-time option is no longer used.  The
maximum number of clusters is still capped off according
to maxusers, but it can be made unlimited by setting
the kern.ipc.nmbclusters boot-time tunable to zero.
Work should be done to write an appropriate sysctl
handler allowing dynamic tuning of kern.ipc.nmbclusters
at runtime.

Additional things worth noting/known issues (READ):
   - One report of 'ips' (ServeRAID) driver acting really
     slow in conjunction with mbuma.  Need more data.
     Latest report is that ips is equally sucking with
     and without mbuma.
   - Giant leak in NFS code sometimes occurs, can't
     reproduce but currently analyzing; brueffer is
     able to reproduce but THIS IS NOT an mbuma-specific
     problem and currently occurs even WITHOUT mbuma.
   - Issues in network locking: there is at least one
     code path in the rip code where one or more locks
     are acquired and we end up in m_prepend() with
     M_WAITOK, which causes WITNESS to whine from within
     UMA.  Current temporary solution: force all UMA
     allocations to be M_NOWAIT from within UMA for now
     to avoid deadlocks unless WITNESS is defined and we
     can determine with certainty that we're not holding
     any locks when we're M_WAITOK.
   - I've seen at least one weird socketbuffer empty-but-
     mbuf-still-attached panic.  I don't believe this
     to be related to mbuma but please keep your eyes
     open, turn on debugging, and capture crash dumps.

This change removes more code than it adds.

A paper is available detailing the change and considering
various performance issues, it was presented at BSDCan2004:
http://www.unixdaemons.com/~bmilekic/netbuf_bmilekic.pdf
Please read the paper for Future Work and implementation
details, as well as credits.

Testing and Debugging:
    rwatson,
    brueffer,
    Ketrien I. Saihr-Kesenchedra,
    ...
Reviewed by: Lots of people (for different parts)
2004-05-31 21:46:06 +00:00
..
alias Mark bits that do not require an object directory as such. 2003-04-01 12:37:54 +00:00
apply Revert previous commit, from Bruce: 2003-06-09 19:21:35 +00:00
asa mdoc(7) police: minor markup nits. 2002-05-30 13:33:59 +00:00
at Explain the format of the at.allow and at.deny files in detail. 2003-03-26 02:38:18 +00:00
atm Fixed style of DPADD and LDADD assignments as per style.Makefile(5). 2004-02-05 22:44:25 +00:00
awk Use 2003-06-06 13:46:55 +00:00
banner
basename ANSIify function definitions. 2002-09-04 23:29:10 +00:00
biff Bump document date for the 'beep only' change. 2002-08-16 03:08:25 +00:00
bluetooth Clean up language and markup. 2004-05-19 10:45:40 +00:00
brandelf Remove MAINTAINER lines. 2003-06-14 19:32:52 +00:00
bzip2 /rescue/b{,un}zip exists, so build this dynamically now. 2003-11-17 05:19:37 +00:00
bzip2recover Remove MAINTAINER lines. 2003-06-14 19:32:52 +00:00
c89
c99 Update URL of GCC status page to GCC 3.3 2004-03-04 20:29:27 +00:00
calendar Include <sys/uio.h> for the complete type of struct iovec. 2004-05-28 17:41:36 +00:00
cap_mkdb ANSIify function definitions to avoid a warning. 2002-07-28 14:41:26 +00:00
catman Add (unsigned char) cast to ctype macros 2003-06-10 02:18:00 +00:00
chat Rename logf --> chat_logf to avoid naming conflicts 2003-10-31 06:22:03 +00:00
checknr Close files after opening them to avoiding leaking descriptors and memory. 2003-06-01 06:15:30 +00:00
chkey Put chkey(1), newkey(8), and keyserv(8) into the crypto distribution. 2004-01-18 09:29:47 +00:00
chpass Typo fix. 2004-03-03 09:15:07 +00:00
cksum - For variables holding offset values, use off_t rather than 2003-03-13 23:32:28 +00:00
cmp phk added the -x option in May 2000, but only for regular files; for 2003-06-19 07:24:26 +00:00
col ANSIify function definitions. 2002-09-04 23:29:10 +00:00
colcrt Fixed the abuses of .Ql visible on stderr in troff mode. 2002-12-23 16:04:51 +00:00
colldef Markup nits. 2004-05-19 09:45:46 +00:00
colrm ANSIify function definitions to avoid a warning. 2002-07-28 15:22:43 +00:00
column ANSify function definitions to avoid a warning. 2002-07-28 15:25:15 +00:00
comm ANSIify function definitions to avoid a warning. 2002-07-28 15:28:38 +00:00
compile_et
compress Don't truncate the output file before making sure that we can 2003-06-14 13:41:31 +00:00
csplit Use fseeko() to properly support large files. 2004-03-22 11:15:03 +00:00
ctags It was pointed out[0] that ctags(1) uses some potentially dangerous 2004-05-07 19:44:40 +00:00
cut Duplicate "from". 2003-05-03 15:55:23 +00:00
dig
dirname ANSIify function definitions to avoid a warning. 2002-07-28 15:50:38 +00:00
dnskeygen
dnsquery
du Use humanize_number(3) to format sizes into a human readable form. 2004-05-24 22:22:29 +00:00
ee o Fix identation. 2003-06-30 11:51:21 +00:00
elf2aout Back out the totally unapproved backout of my commits. 2003-03-29 03:03:42 +00:00
elfdump Elf_Phdr.p_type 7 is "PT_TLS". 2004-03-02 14:06:27 +00:00
enigma Bump the .Dd value. 2004-05-14 19:29:39 +00:00
env Language and markup polishing. 2004-05-19 10:44:24 +00:00
expand mdoc(7) police: markup polishing. 2002-11-26 10:57:57 +00:00
false Consistently use FBSDID 2002-06-30 05:25:07 +00:00
fetch Fix integer overflow in the file size output when dealing with 2004-05-19 11:07:30 +00:00
file Fixed style of DPADD and LDADD assignments as per style.Makefile(5). 2004-02-05 22:44:25 +00:00
file2c Consistently use FBSDID 2002-06-30 05:25:07 +00:00
find - introduce a new primary `-depth n', which tests whether 2004-05-28 17:17:15 +00:00
finger Remove spurious semicolons. Outside of functions they are actually errors but 2004-05-16 22:08:17 +00:00
fmt Consistently use FBSDID 2002-06-30 05:25:07 +00:00
fold ANSIify function definitions. 2002-09-04 23:29:10 +00:00
from ANSIify function definitions. 2002-09-04 23:29:10 +00:00
fstat Correct the description of the -N option. 2004-03-26 10:48:35 +00:00
fsync Consistently use FBSDID 2002-06-30 05:25:07 +00:00
ftp Fixed style of DPADD and LDADD assignments as per style.Makefile(5). 2004-02-05 22:44:25 +00:00
gcore Fix some WARNS: 2004-02-15 22:48:25 +00:00
gencat Check NULL pointer to avoid SIGSEGV 2002-12-24 07:40:10 +00:00
getconf mdoc(7): Use the new feature of the .In macro. 2003-09-08 19:57:22 +00:00
getopt english(4) police. 2002-12-27 12:15:40 +00:00
gprof Include <string.h> for prototypes of various string functions. 2004-05-24 12:44:00 +00:00
head Remove duplicate __FBSDID() - spotted by trying to build with a non-GNU 2002-07-23 14:39:20 +00:00
hesinfo ANSIify function definitions. 2002-09-04 23:29:10 +00:00
hexdump Capitalize ASCII code names. 2002-12-05 08:50:00 +00:00
host
id Add missing %s so that all of the usage message gets printed. 2004-05-19 21:06:36 +00:00
indent Fixed document date. 2004-05-19 09:49:54 +00:00
ipcrm Wrap long line. Use .Ar instead of .Nm where appropriate. 2003-02-05 14:15:02 +00:00
ipcs Added -u to the SYNOPSIS. 2004-05-18 20:40:37 +00:00
join mdoc(7) police: nit. 2002-11-26 11:25:04 +00:00
jot Fix jot so that 'jot -r -w %d 1 1 4' never prints 4. Previously, it 2003-08-01 16:23:24 +00:00
kdump Bump document date on behalf of the -E option. 2004-05-18 20:42:36 +00:00
keylogin Consistently use FBSDID 2002-06-30 05:25:07 +00:00
keylogout Removed unnecessary dependencies on librpcsvc. 2004-02-04 11:59:08 +00:00
killall Bump document date on behalf of the -e option. 2004-05-18 20:45:32 +00:00
ktrace Do not start err(3) strings with uppercase nor dot terminate them. 2003-02-05 14:25:43 +00:00
ktrdump Add a "-r" flag to ktrdump(1) to print relative timestamps when used 2004-05-22 08:26:10 +00:00
lam Back out my minorly disputed and possibly not well thought out changes to how 2002-07-01 18:03:30 +00:00
last Include timeconv.h for _int_to_time and _time_to_int. 2004-02-15 21:52:59 +00:00
lastcomm Remove unneeded lseek(2) hack to position past the 2GB point, 2004-05-20 19:25:27 +00:00
ldd Fix a few WARNS: 2004-02-15 22:01:23 +00:00
leave Fixed the abuses of .Ql visible on stderr in troff mode. 2002-12-23 16:04:51 +00:00
less Restore old value of LESSKEYFILE_SYS. 2004-04-17 07:48:21 +00:00
lessecho
lesskey
lex Replace <iostream.h> with <iostream> to remove annoying warning 2004-03-11 10:43:35 +00:00
limits Uniformly refer to a file system as "file system". 2002-12-12 17:26:04 +00:00
locale Clean up language and markup. 2004-05-19 10:45:40 +00:00
locate The .Xr utility 2003-06-08 13:45:37 +00:00
lock Two fixes here: 2004-01-22 04:24:15 +00:00
lockf Consistently use FBSDID 2002-06-30 05:25:07 +00:00
logger Clarify the describtion of the -A switch 2003-05-21 15:00:47 +00:00
login Fixed style bugs in previous commit (.ifndef instead of .if defined(), 2004-02-29 06:39:11 +00:00
logins Fix markup. 2004-03-06 23:36:41 +00:00
logname ANSIify function definitions. 2002-09-04 23:29:10 +00:00
look Introduce options definition the standard way. 2003-06-09 19:32:02 +00:00
lorder Give the -o option before any filename operands when invoking the sort 2003-06-01 22:37:38 +00:00
lsvfs Uniformly refer to a file system as "file system". 2002-12-12 17:26:04 +00:00
m4 Don't depend on NULL's expansion being a pointer, cast it before it is passed 2004-05-18 15:53:58 +00:00
mail Bumped document date. 2004-05-19 09:51:31 +00:00
make Markup nits. 2004-05-19 09:51:58 +00:00
makewhatis Install /usr/libexec/makewhatis.local and /usr/libexec/catman.local. 2002-11-18 10:11:22 +00:00
mesg Introduce options definition the standard way. 2003-06-09 19:32:02 +00:00
minigzip Fixed style of DPADD and LDADD assignments as per style.Makefile(5). 2004-02-05 22:44:25 +00:00
ministat Added missing DPADD. 2004-02-05 22:01:28 +00:00
mkdep english(4) police. 2002-12-27 12:15:40 +00:00
mkfifo ANSIify function definitions. 2002-09-04 23:29:10 +00:00
mklocale Fix section number in cross reference. 2004-01-23 20:29:03 +00:00
mkstr Fixed a misspelling of 0 as NULL. 2004-03-14 05:51:20 +00:00
mktemp Use proper article. 2002-07-16 05:38:26 +00:00
msgs Fixed misspellings of '\0' as NULL. 2004-03-11 10:12:05 +00:00
mt Backout previous commit. It seems this comment applied to something 2004-04-09 17:30:26 +00:00
ncal Fixed style of DPADD and LDADD assignments as per style.Makefile(5). 2004-02-05 22:44:25 +00:00
ncplist
ncplogin ANSIify function definitions. 2002-09-04 23:29:10 +00:00
netstat Bring in mbuma to replace mballoc. 2004-05-31 21:46:06 +00:00
newgrp Use (char *)NULL to terminated to argument list for execl(). 2003-10-30 15:14:34 +00:00
newkey Put chkey(1), newkey(8), and keyserv(8) into the crypto distribution. 2004-01-18 09:29:47 +00:00
nfsstat
nice english(4) police. 2002-12-27 12:15:40 +00:00
nl Tidy up usage message. 2003-08-17 10:33:54 +00:00
nohup Make GCC 3.3 happy with rcsid[], sccs[], and copyright[]. 2003-05-03 19:44:46 +00:00
objformat mdoc(7) police: markup and spelling. 2002-11-26 17:34:25 +00:00
opieinfo
opiekey
opiepasswd
pagesize
passwd While I really liked the error message one received from `passwd' 2003-04-18 21:27:09 +00:00
paste Fixed the abuses of .Ql visible on stderr in troff mode. 2002-12-23 16:04:51 +00:00
pathchk Unbreak support for systems that have no limit on pathname length. 2002-12-15 00:40:47 +00:00
pkill Added pgrep to the SYNOPSIS. 2004-05-19 10:46:56 +00:00
pr Fix typos, mostly s/ an / a / where appropriate and a few s/an/and/ 2002-12-30 21:18:15 +00:00
printenv Split the env(1) manpage off from printenv(1); there is not much point 2003-06-01 06:29:47 +00:00
printf Make it possible for the %[eEfgG] formats to not result in an error 2004-03-07 22:22:13 +00:00
quota Remove redundant declarations. 2003-08-05 06:50:28 +00:00
renice The usage string: renice [priority | [-n incr]] ... assumed that the part 2003-02-26 20:27:24 +00:00
rev ANSIify function definitions. 2002-09-04 23:29:10 +00:00
rlogin Use the POSIX tty interface instead of the old interface. This makes 2003-09-28 08:54:56 +00:00
rpcgen - style(9) improvements courtesy of bde. 2004-05-02 07:07:54 +00:00
rpcinfo Fixed a misspelling of '\0' as NULL. 2004-03-11 10:22:25 +00:00
rs Add section number to .Xr 2003-06-08 13:58:08 +00:00
rsh Remove duplicate #include. Do not \n terminate errx() arg. 2003-09-07 15:30:42 +00:00
rup More xdrproc_t warnings. 2003-10-26 04:57:32 +00:00
ruptime Forgot to update the date field; from David Magda <dmagda@magda.ca>. 2003-03-01 23:43:53 +00:00
rusers Fix a couple of warnings: 2004-05-19 21:34:52 +00:00
rwall Removed unnecessary dependencies on librpcsvc. 2004-02-04 11:59:08 +00:00
rwho Modernise; ISOify, use __FBSDID(), use headers instead of hand-declaring. 2002-07-01 16:40:33 +00:00
script Bumped document date. 2004-05-19 09:53:03 +00:00
sed A new version that does exponents and lots of other neat things. Update 2004-05-01 02:15:58 +00:00
shar
showmount More xdrproc_t issues. 2003-10-26 04:58:44 +00:00
smbutil
sockstat make sockstat not print wierd addresses on not connected unix domain sockets 2003-07-19 06:23:56 +00:00
split Support larger files (at least 64-bit offsets) by using off_t instead of 2002-07-15 05:31:55 +00:00
stat Resolve conflicts 2003-10-06 01:55:17 +00:00
su Bumped the document date. 2004-05-19 09:53:41 +00:00
systat Bring in mbuma to replace mballoc. 2004-05-31 21:46:06 +00:00
tabs mdoc(7) police: markup polishing. 2002-11-26 17:33:37 +00:00
tail Removed check of st_rdev changing in the -F support. st_rdev for regular 2003-08-14 11:02:03 +00:00
talk Do not attempt ro read more than sizeof(buf) from stdin. 2004-05-10 15:52:16 +00:00
tar Correction: -h should be a synonym for -L, not -H. 2004-05-31 20:22:41 +00:00
tcopy Change /dev/rsa0 and /dev/rwt0 references to sa0 and wt0. 2003-09-05 15:28:09 +00:00
tee ANSIify function definitions. 2002-09-04 23:29:10 +00:00
telnet Make sure that a "make release" (more accurately the bit that makes 2003-07-24 17:19:15 +00:00
tftp Bumped the document date. 2004-05-19 09:54:14 +00:00
time Uses wait4() instead of wait3() when waiting for a child process to exit. 2003-10-17 07:53:30 +00:00
tip Use a proper protoype to declare interp() and move it to tip.h. Fix an 2004-05-06 13:25:09 +00:00
top Changes to allow top to decide whether or not to show multiple threads per 2003-07-17 23:56:40 +00:00
touch ANSIify function definitions. 2002-09-04 23:29:10 +00:00
tput command -> utility. Add section number to .Xr 2003-06-08 14:38:02 +00:00
tr Back out [:upper:] and [:lower:] classes sorting, it is not required 2003-08-05 07:59:46 +00:00
true A function which takes no arguments has an argument list spelled (void) in the 2002-06-20 05:35:40 +00:00
truncate
truss Add support for decoding Timespec, Timeval, Itimerval, Pollfd, 2004-03-23 12:37:02 +00:00
tset Add section number to .Xr 2003-06-08 13:58:08 +00:00
tsort Removed unused macro definition 2003-09-04 20:05:46 +00:00
tty
uac Remove (another) now redundant and now conflicting declaration of 2004-01-12 04:05:23 +00:00
ul Add section number to .Xr 2003-06-08 13:58:08 +00:00
uname Make the sysctlbyname stuff look like the 2-level MIB stuff. This 2003-07-01 20:15:28 +00:00
unexpand Fix off-by-one error processing the line after an empty line when the 2002-10-04 16:45:25 +00:00
unifdef Improve expression evaluation debugging output, tidy up the handling of 2003-07-01 15:30:43 +00:00
uniq Mention the environment variables that affect the execution of uniq. 2003-04-12 04:17:14 +00:00
units Use miligram rather than mg in the definition of carats. 2004-05-30 16:09:12 +00:00
unvis ANSIify function definitions. 2002-09-04 23:29:10 +00:00
usbhidaction Misc fixes brought to light by WARNS=6: 2004-03-09 11:35:43 +00:00
usbhidctl Correct reference to a non existant man page. 2004-01-04 16:34:16 +00:00
users ANSIify function definitions. 2002-09-04 23:29:10 +00:00
uudecode Make GCC 3.3 happy with rcsid[], sccs[], and copyright[]. 2003-05-03 19:44:46 +00:00
uuencode Userland signed char fixes for PPC build. Problems were using a char 2004-01-22 07:23:36 +00:00
uuidgen The uuidgen(1) program is WARNS=6 clean, so flag it as such. 2003-12-07 21:34:56 +00:00
vacation Remove MAINTAINER= lines from individual Makefiles in favor of the 2003-07-07 03:54:04 +00:00
vgrind Fix warning about cgetent() argument. 2003-10-26 05:03:11 +00:00
vi Fixed style of DPADD and LDADD assignments as per style.Makefile(5). 2004-02-05 22:44:25 +00:00
vis ANSIify function definitions. 2002-09-04 23:29:10 +00:00
vmstat Bumped the document date. 2004-05-19 09:54:14 +00:00
w Include <sys/proc.h> instead of depending on namespace pollution in 2004-04-14 09:34:17 +00:00
wall Remove "sleeper" nonsense. 2003-02-21 08:46:44 +00:00
wc Improve robustness of multibyte character handling (-m option), and 2004-04-09 11:17:29 +00:00
what mdoc(7) police: markup polishing. 2002-11-26 17:33:37 +00:00
whereis Adjust max WARNs for sparc64. 2002-12-30 09:48:40 +00:00
which Handle relative and absolute pathnames (anything with a `/' in it) in the same 2002-06-30 06:02:39 +00:00
who Fix a warning that showed up on 64 bit systems. It was actually a real 2003-10-26 05:05:48 +00:00
whois Back out .SU workaround - people at whois-servers.net set up 2003-06-29 23:56:31 +00:00
window Add FBSDID. Use %ld to printf(3) a long (even if the number is small). 2004-04-04 19:11:01 +00:00
write ANSIify function definitions. 2002-09-04 23:29:10 +00:00
xargs - Use _PATH_TTY and _PATH_DEVNULL macros. 2003-06-13 17:05:41 +00:00
xinstall Improved incorrect usage diagnostics. 2004-03-17 11:06:40 +00:00
xlint Define PTRDIFF_IS_LONG and SIZEOF_IS_ULONG for arm. 2004-05-14 13:44:36 +00:00
xstr Introduce options definition the standard way. Do not uppercase first 2003-06-09 19:35:56 +00:00
yacc Use getopt instead of hand-rolled argument parsing. Usage remains 2004-03-05 01:52:09 +00:00
yes #include <err.h> to make yes warns clean again. 2002-11-09 21:00:39 +00:00
ypcat Stop gcc warnings 2003-10-26 05:28:01 +00:00
ypmatch Stop gcc warnings 2003-10-26 05:28:01 +00:00
ypwhich Be consistant while reporting error conditions. 2004-04-04 19:17:38 +00:00
Makefile Build/install gprof on amd64 as well, after repocopying the MD bits. 2004-05-18 18:05:19 +00:00
Makefile.inc