realloc+write benchmark
Radim Kolar
hsn at netmag.cz
Tue Jan 27 21:22:36 CET 2004
ten `benchmark` je v ports/benchmarks/forkbomb
> Bezpecnost obvykle neco stoji, v tomto pripade trochu vykonu - ale
> jde to vypnout, a defaultni nastaveni je spravne = "bezpecne".
defaultni nastaveni je bez junku. junk je defaultne pouze s
#ifdef MALLOC_EXTRA_SANITY
Zapnuti junku ho jeste vic zbrzdi:
forkbomb -l 32 -i 256 -M --quit 4.03s user 5.72s system 74% cpu 13.019 total
(hsn at ttyv2):~/myports% export MALLOC_OPTIONS=Jr 20:59
(hsn at ttyv2):~/myports% time forkbomb -l 32 -i 256 -M --quit 21:02
forkbomb -l 32 -i 256 -M --quit 11.54s user 5.89s system 72% cpu 24.205 total
Kdyz ten program odprofilujete, zjistite ze 98% CPU casu se travi
ve funkci memcopy(), coz chapu - malloc neumi zvetsit posledni blok a tak ho
prekopiruje jinam, pricemz stacilo by ho natahnout a to budto pomoci syscall mremap (freebsd nepodporuje, presneji receno podporuje jenom v Linuxove emulaci a to jeste pouze smerem dolu) nebo alespon brk()em. Linux alokuje bloky vetsi
nez jedna stranka mmapem /dev/zero a mremapem jim meni velikost (libc2.3.2)
Zajimava je ale jeste jina vec:
system travi nejak moc kernel casu ve funkci brk() aby zvetsil pamet procesu,
coz je divne protoze brk je tradicne rychly memory alloc syscall. Nekdo tady
prezentoval jiny benchmark (ports/benchmarks/ubench) a bylo videt ze freeBSD5
je pri praci s pameti o dost pomalejsi nez verze 4.
More information about the Users-l
mailing list