Performance of SheevaPlug on 8-stable
Bernd Walter
ticso at cicely7.cicely.de
Sat Mar 6 21:52:18 UTC 2010
On Sat, Mar 06, 2010 at 10:17:16PM +0100, Bernd Walter wrote:
> On Sat, Mar 06, 2010 at 09:39:57PM +0100, Maks Verver wrote:
> > Hi everyone,
> >
> > After a bit of patching and tinkering I got my SheevaPlug to boot
> > FreeBSD from a UFS2-formatted USB stick. To compare it with Linux I
> > decided to run nbench to see how FreeBSD compares with Ubuntu (which is
> > shipped with the SheevaPlug). To my surprise, the results were
> > atrocious! FreeBSD scores about 50 times worse than Ubuntu.
> >
> > Of course, this performance difference is too large to be caused by
> > implementation differences. There must be something more fundemental
> > wrong here. To simplify things, I created a simple testcase that counts
> > up to the maximum value of an integer:
> >
> > int main() { int i = 0; do ++i; while(i > 0); return 0; }
> >
> > This compiles to: (both on Linux and on FreeBSD)
> >
> > 0000848c <main>:
> > 848c: e3a03000 mov r3, #0 ; 0x0
> > 8490: e2833001 add r3, r3, #1 ; 0x1
> > 8494: e3530000 cmp r3, #0 ; 0x0
> > 8498: cafffffc bgt 8490 <main+0x4>
> > 849c: e3a00000 mov r0, #0 ; 0x0
> > 84a0: e1a0f00e mov pc, lr
> >
> > This stresses the CPU and not much else. Since there are three
> > instructions in the loop and the SheevaPlug runs at 1.2 GHz, I
> > expect this to take around (1<<31)*3/1.2e9 ~ 5.3687 seconds. On Ubuntu:
> >
> > $ time ./test
> > real 0m5.422s
> > user 0m5.390s
> > sys 0m0.020s
> >
> > Exactly as expected. On FreeBSD on the other hand:
> >
> > %time ./test
> > 286.000u 0.000s 4:47.22 99.8% 40+1321k 0+0io 0pf+0w
> >
> > This takes almost five minutes, or over 50 times as long! All of it is
> > user-space CPU time. Does anybody have a suggestion why the CPU appears
> > to run so slowly in FreeBSD?
>
> I was tempted to say different compiler optimisaitons, but you say that
> the resulting code is the same.
> Such massive speed difference sounds a bit like cache problems.
> For what it's worth - I see it takes minutes (not finished yet) on 180MHz
> RM9200 as well.
[67]chipmunk.cicely.de# ./test
2185.000u 3.000s 42:03.86 86.6% 46+1532k 0+0io 0pf+0w
This is really a long time to count 2^32 with 180MHz.
I would really say that there is something wrong.
> According to dmesg IC is enabled:
> CPU: ARM920T rev 0 (ARM9TDMI core)
> DC enabled IC enabled WB enabled LABT
> 16KB/32B 64-way Instruction cache
> 16KB/32B 64-way write-back-locking-A Data cache
>
> If the above calculation is correct I would expect it to finish after
> ~7 times more time than calculated.
> If the calculation is wrong, then why does Ubunto agrees with it?
>
> > I pored over my kernel configuration but I don't see anything suspect. I
> > did (manually) apply Hans Petter Selasky's patch [1] to be able to boot
> > from USB, and consequently removed the NFS and BOOTP stuff from the
> > config provided at sys/arm/conf/SHEEVAPLUG. Furthermore I removed the
> > NO_SWAPPING and NO_FFS_SNAPSHOT options (because I plan to attach a USB
> > disk drive) and I left in the KDB and DDB options because as I think
> > they do not significantly affect performance. Is this correct?
> >
> > Kind regards,
> > Maks Verver.
> >
> > P.S. The strange thing is that stuff like network performance is
> > perfectly fine. I can fetch FTP data at 11 MB/s, which is about the
> > maximum possible on the cheap 100 Mbit switch I use, and is even a few
> > percent better than Ubuntu. So it seems it's really the CPU that's the
> > bottleneck, for no apparent reason.
>
> FTP won't win that much from cache and our network stack might outweight
> the loss, so this all makes sense if IC cache won't work.
> I think you have a very interesting catch, although I don't know why it
> exactly is.
>
> --
> B.Walter <bernd at bwct.de> http://www.bwct.de
> Modbus/TCP Ethernet I/O Baugruppen, ARM basierte FreeBSD Rechner uvm.
> _______________________________________________
> freebsd-arm at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-arm
> To unsubscribe, send any mail to "freebsd-arm-unsubscribe at freebsd.org"
--
B.Walter <bernd at bwct.de> http://www.bwct.de
Modbus/TCP Ethernet I/O Baugruppen, ARM basierte FreeBSD Rechner uvm.
More information about the freebsd-arm
mailing list