half write performance, half cpu load

Björn König bkoenig at cs.tu-berlin.de
Tue Sep 14 08:31:52 PDT 2004


I recently reported that write operations to my hard disk were too slow. 
I compared only to FreeBSD 4.10, because I thought it is an issue with 
ATAng, but I was wrong. I installed FreeBSD 5.2.1 and noticed that 
everything works fine.

Once again I built kernels with profiling, tested my hard disk and tried 
to analyse the data. I'm sure that I understand the numbers, and I 
stepped into the kernel source code, recompiled an adjusted kernel again 
and again, but I can't get any conclusion what's going wrong; most 
likely because of I'm not a FreeBSD kernel developer and don't 
understand lot of code which deals with hardware.

So I like to refer again to some very similar kernel profiling results 
of a FreeBSD 5.2.1-RELEASE-p9 and a recent 5.3-BETA4. I made three 
benchmarks on each system. I used exactly the same kernel configuration 
with both kernels. I made them both with
   config -pp <KERNCONF> && ../compile/<KERNCONF> && make depend && make

I made the 'dd' tests (writing 256k 4k-blocks = 1G) in single-user mode 
on the exactly the same, identical ufs2 partition on hard disk.

There you'll find everything, results, kernel config, benchmark shell 
skript: http://www.alpha-tierchen.de/dateien/kernprof/

A short summary and little analysis of profiling:

kernel version:				5.2.1		5.3
runtime of test (seconds):		37.25		88.65
write perf. with profiling (MB/s):	27.49		11.55
write perf. without prof. (MB/s):	~35		~13

The data doesn't show any weird behaviour of the ata driver's functions; 
no excessive calls. Far from it! The ata functions are little faster 
than in 5.2.1 (good work, Søren Schmidt). But where's the difference? 
Please have a look at Xatpic_intr0 and Xatpic_intr8. They are called 
twice as often. The second hint is that ad_done and its descendents take 
too much time.

I'm really clouded.
Regards Björn

P.S.: For people who didn't get it last time I bothered with my problem: 
it is an ST380021A/3.19 with ICH2 controller and i815EP chipset. Write 
cache (hw.ata.wc) and dma (hw.ata.ata_dma) are activated. atacontrol 
shows UDMA100.

More information about the freebsd-current mailing list