From owner-freebsd-hackers Sun Mar 10 14:23:46 2002 Delivered-To: freebsd-hackers@freebsd.org Received: from iguana.icir.org (iguana.icir.org [192.150.187.36]) by hub.freebsd.org (Postfix) with ESMTP id 3BB5937B402 for ; Sun, 10 Mar 2002 14:23:36 -0800 (PST) Received: (from rizzo@localhost) by iguana.icir.org (8.11.6/8.11.3) id g2AMK1H36336; Sun, 10 Mar 2002 14:20:01 -0800 (PST) (envelope-from rizzo) Date: Sun, 10 Mar 2002 14:20:01 -0800 From: Luigi Rizzo To: BOUWSMA Beery Cc: hackers@FreeBSD.ORG Subject: Re: Performance of FreeBSD vs NetBSD (was: Re: Performance of -current vs -stable) Message-ID: <20020310142001.A36238@iguana.icir.org> References: <200203102005.g2AK5SN99334@beerswilling.netscum.dyndns.dk> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200203102005.g2AK5SN99334@beerswilling.netscum.dyndns.dk> User-Agent: Mutt/1.3.23i Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG Well, it is not the same binary, and compile options may make a huge difference. Browsing in the FreeBSD port of mpg123 I note this message: @${ECHO_MSG} "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" @${ECHO_MSG} "Note: you can set OPT_ARCH to optimize for your hardware." @${ECHO_MSG} "(e.g. make OPT_ARCH=i486)." @${ECHO_MSG} "Valid values are: i486, i586, 3dnow" @${ECHO_MSG} "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" and none of these seems to be used as default cc -O -pipe -DINET6 -Wall -ansi -pedantic -funroll-all-loops -ffast-math -fomi t-frame-pointer -DROT_I386 -DI386_ASSEM -DREAL_IS_FLOAT -DREAD_MMAP -DUSE_MMAP -DOSS -DTERM_CONTROL -I/usr/local/include -c mpg123.c cheers luigi On Sun, Mar 10, 2002 at 09:05:28PM +0100, BOUWSMA Beery wrote: ... > I wrote a while back, in an old freebsd-current list thread, in which it > was determined that WITNESS was to be avoided in -current if one wanted ... > Stable > CPU states: 52.7% user, 0.0% nice, 2.3% system, 5.8% interrupt, 39.2% idle > PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND > 272 beer 45 0 344M 908K RUN 3:10 56.10% 56.10% mpg123-O3 > 260 root 28 0 1440K 1176K RUN 0:04 0.24% 0.24% top > Current+WITNESS > CPU states: 51.9% user, 0.0% nice, 8.3% system, 12.4% interrupt, 27.4% idle > PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND > 305 beer 115 0 113M 960K RUN 2:06 55.91% 55.91% mpg123-O3 > 10 root -16 0 0K 12K RUN 1:52 27.39% 27.39% idle > 29 root -60 -179 0K 12K WAIT 0:14 5.96% 5.96% irq5: sbc0 > 12 root -48 -167 0K 12K WAIT 0:07 2.00% 2.00% swi6: tty:sio > 313 root 97 0 1544K 1264K RUN 0:02 1.19% 1.17% top > Current-without > CPU states: 54.0% user, 0.0% nice, 6.8% system, 10.6% interrupt, 28.7% idle > PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND > 322 beer 117 0 97400K 1384K RUN 4:44 55.18% 55.18% mpg123-O3 > 10 root -16 0 0K 12K RUN 5:38 26.95% 26.95% idle > 29 root -60 -179 0K 12K WAIT 0:35 6.01% 6.01% irq5: sbc0 > 12 root -48 -167 0K 12K WAIT 0:19 2.83% 2.83% swi6: tty:sio > 313 root 97 0 1544K 1252K RUN 0:16 1.07% 1.07% top > > > In both -current and -stable, the audio is usually smooth but > periodically has a hiccup or two and loops briefly. > > > But the very same hardware, booted into NetBSD off the same disk, > running a NetBSD-native binary of mpg123 on NetBSD-current shows this: > CPU states: 38.1% user, 0.0% nice, 1.5% system, 1.0% interrupt, 59.4% idle > PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND > 229 beer 10 0 308K 3828K aud_wr 1:17 37.16% 37.16% mpg123 > 245 root 28 0 164K 860K CPU 0:00 0.89% 0.29% top > > This machine can happily do a second task without it needing to be > `nice'd and still exude clean audio. Not possible with FreeBSD. > > Just in case I had botched the optimizations for the FreeBSD versions > of mpg123, I compiled them statically (I couldn't get the NetBSD > version to run under FreeBSD tho), and ran those under NetBSD with > the COMPAT_FREEBSD kernel option. Under FreeBSD I saw no change > in CPU needed, whilst surprisingly, the static FreeBSD binary run > under NetBSD on the same hardware needed *less* cpu than before: > > CPU states: 20.3% user, 0.0% nice, 1.0% system, 0.0% interrupt, 78.7% idle > PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND > 241 beer 36 0 512K 2020K RUN 0:24 21.71% 21.63% mpg123-stati > 268 root 28 0 164K 860K CPU 0:00 0.74% 0.24% top > > > I'm concerned. I know this isn't at all scientific, but why would > NetBSD require about 1/3 the CPU to run the same binary as either > -stable or -current FreeBSD on the same hardware? Can I be slowing > my FreeBSD OSen by using a kernel option that I shouldn't, or is > something else coming into play? > > Another thing of note, with this hardware, under FreeBSD, it takes > some seconds (ten or so) from the time I start mpg123 until it stops > pegging the CPU and starts to play audio, while with NEtBSD, playing > starts immediately with both binaries. If that means anything. > > > -stable: ls: /etc/malloc.conf: No such file or directory > -current: /FreeBSD-CURRENT/etc/malloc.conf -> aj > sound card: sbc0: at port 0x220-0x22f,0x388-0x38b,0x330-0x331 irq 5 drq 1,0 on isa0 > pcm0: on sbc0 > cpu: CPU: Pentium/P54C (75.00-MHz 586-class CPU) > Origin = "GenuineIntel" Id = 0x524 Stepping = 4 > Features=0x1bf > real memory = 75497472 (73728K bytes) > (entire dmesg on request if of interest) > > kernel config options used, if something is obviously a hog, -stable: > > options INET #InterNETworking > options FFS #Berkeley Fast Filesystem > options FFS_ROOT #FFS usable as root device [keep this!] > options SOFTUPDATES #Enable FFS soft updates support > options MFS #Memory Filesystem > options PROCFS #Process filesystem > options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!] > options SCSI_DELAY=2000 #Delay (in ms) before probing SCSI > options USERCONFIG #boot -c editor > options VISUAL_USERCONFIG #visual boot -c editor > options KTRACE #ktrace(1) support > options SYSVSHM #SYSV-style shared memory > options SYSVMSG #SYSV-style message queues > options SYSVSEM #SYSV-style semaphores > options P1003_1B #Posix P1003_1B real-time extensions > options _KPOSIX_PRIORITY_SCHEDULING > options ICMP_BANDLIM #Rate limit bad replies > options KBD_INSTALL_CDEV # install a CDEV entry in /dev > options ATA_STATIC_ID #Static device numbering > options PQ_CACHESIZE=512 # color for 512k/16k cache > options CPU_SUSP_HLT > options USER_LDT #allow user-level control of i386 ldt > options SHMMAXPGS=10000 # max amount of shared memory pages (4k on i386) > options SHMALL=8192 # max amount of shared memory (bytes) > options SHMMIN=1 # min shared memory segment size (bytes) > options SHMMNI=200 # max number of shared memory identifiers > options SHMSEG=200 # max shared memory segments per process > options SEMMAP=31 # amount of entries in semaphore map > options SEMMNI=128 # number of semaphore identifiers in the system > options SEMMNS=65536 # number of semaphores in the system > options SEMMNU=31 # number of undo structures in the system > options SEMMSL=512 # max number of semaphores per id > options SEMOPM=101 # max number of operations per semop call > options SEMUME=11 # max number of undo entries per process > options DDB > options DDB_UNATTENDED > options PERFMON > options PPP_BSDCOMP #PPP BSD-compress support > options PPP_DEFLATE #PPP zlib/deflate/gzip support > options PPP_FILTER #enable bpf filtering (needs bpf) > options RANDOM_IP_ID > options ICMP_BANDLIM > options NFS_NOSERVER #Disable the NFS-server code. > options UFS_DIRHASH > options EXT2FS > options CAM_MAX_HIGHPOWER=2 > options MSGBUF_SIZE=40960 > options PPS_SYNC > options MAXCONS=12 # number of virtual consoles > options SC_DISABLE_REBOOT # disable reboot key sequence > options SC_HISTORY_SIZE=500 # number of history buffer lines > options SC_NORM_ATTR="(FG_YELLOW|BG_BLACK)" > options SC_NORM_REV_ATTR="(FG_BLACK|BG_GREEN)" > options SC_KERNEL_CONS_ATTR="(FG_RED|BG_BLACK)" > options SC_KERNEL_CONS_REV_ATTR="(FG_BLACK|BG_RED)" > options CLK_USE_I8254_CALIBRATION > options CLK_USE_TSC_CALIBRATION > options NMBCLUSTERS=4096 > > (I post this in case something is glaringly obvious, before I start > to randomly disable half these options to see if things change) > > Rest of kernel config skipped here, but can be posted if of interest > > > I haven't paid much attention to CPU usage of mpg123 on a 500MHz > machine with both OSen, but it's in the low single digits, and is > not as blindingly obvious as with this slow machine. > > I've done a `buildworld' on this 75MHz machine for FreeBSD-current > and -stable is in progress, so I think I'll try a NetBSD build too > and see how elapsed time (many many hours) compares, not that that > is a reliable indicator of speed and efficiency either. > > > > confused, > barry bouwsma > > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-hackers" in the body of the message To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message