Niels Horn's Blog

Random thoughts, tips & tricks about Slackware-Linux, Lego and Star Wars

Benchmarking with nbench

Since I was doing some tests with Slackware running on different platforms (Slack/390, Slack/390x, ArmedSlack on Qemu, etc.) I wanted to compare the performance of the different setups.

I used a (quite old) utility called nbench that was originally written in 1995 but still is a simple way to compare how processors perform, emulated or real. And it has a nice advantage that it can be built on x86, s390 and Arm processors without problems.

Here is the result of Slack/390x-11.0 running in Hercules 3.06 with two emulated processors:

BYTEmark* Native Mode Benchmark ver. 2 (10/95)
Index-split by Andrew D. Balsa (11/97)
Linux/Unix* port by Uwe F. Mayer (12/96,11/97)

TEST                : Iterations/sec.  : Old Index   : New Index
                    :                  : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT        :          34.476  :       0.88  :       0.29
STRING SORT         :           3.012  :       1.35  :       0.21
BITFIELD            :      8.3237e+06  :       1.43  :       0.30
FP EMULATION        :          2.3056  :       1.11  :       0.26
FOURIER             :          70.649  :       0.08  :       0.05
ASSIGNMENT          :         0.35083  :       1.33  :       0.35
IDEA                :          94.416  :       1.44  :       0.43
HUFFMAN             :          34.368  :       0.95  :       0.30
NEURAL NET          :         0.10472  :       0.17  :       0.07
LU DECOMPOSITION    :          3.5645  :       0.18  :       0.13
==========================ORIGINAL BYTEMARK RESULTS==========================
INTEGER INDEX       : 1.194
FLOATING-POINT INDEX: 0.136
Baseline (MSDOS*)   : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
==============================LINUX DATA BELOW===============================
CPU                 : Dual IBM/S390
L2 Cache            :
OS                  : Linux 2.4.33.3
C compiler          : gcc version 3.4.6
libc                :
MEMORY INDEX        : 0.278
INTEGER INDEX       : 0.314
FLOATING-POINT INDEX: 0.075
Baseline (LINUX)    : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38
* Trademarks are property of their respective holder.

And here is the result of ArmedSlack running in Qemu:

BYTEmark* Native Mode Benchmark ver. 2 (10/95)
Index-split by Andrew D. Balsa (11/97)
Linux/Unix* port by Uwe F. Mayer (12/96,11/97)

TEST                : Iterations/sec.  : Old Index   : New Index
                    :                  : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT        :          199.84  :       5.13  :       1.68
STRING SORT         :          22.453  :      10.03  :       1.55
BITFIELD            :       9.048e+07  :      15.52  :       3.24
FP EMULATION        :          28.281  :      13.57  :       3.13
FOURIER             :          139.34  :       0.16  :       0.09
ASSIGNMENT          :          4.4836  :      17.06  :       4.43
IDEA                :           922.7  :      14.11  :       4.19
HUFFMAN             :          322.93  :       8.95  :       2.86
NEURAL NET          :         0.26406  :       0.42  :       0.18
LU DECOMPOSITION    :          8.8432  :       0.46  :       0.33
==========================ORIGINAL BYTEMARK RESULTS==========================
INTEGER INDEX       : 11.288
FLOATING-POINT INDEX: 0.313
Baseline (MSDOS*)   : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
==============================LINUX DATA BELOW===============================
CPU                 :
L2 Cache            :
OS                  : Linux 2.6.32.7-versatile
C compiler          : gcc version 4.4.3 (GCC)
libc                : libc-2.11.1.so
MEMORY INDEX        : 2.814
INTEGER INDEX       : 2.819
FLOATING-POINT INDEX: 0.174
Baseline (LINUX)    : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38
* Trademarks are property of their respective holder.

And finally, my host system where Hercules and Qemu run:

BYTEmark* Native Mode Benchmark ver. 2 (10/95)
Index-split by Andrew D. Balsa (11/97)
Linux/Unix* port by Uwe F. Mayer (12/96,11/97)

TEST                : Iterations/sec.  : Old Index   : New Index
                    :                  : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT        :          1339.8  :      34.36  :      11.28
STRING SORT         :          282.56  :     126.26  :      19.54
BITFIELD            :      5.6507e+08  :      96.93  :      20.25
FP EMULATION        :          186.88  :      89.67  :      20.69
FOURIER             :           30009  :      34.13  :      19.17
ASSIGNMENT          :          38.938  :     148.16  :      38.43
IDEA                :            8292  :     126.82  :      37.65
HUFFMAN             :          2983.2  :      82.72  :      26.42
NEURAL NET          :            61.4  :      98.63  :      41.49
LU DECOMPOSITION    :          1939.9  :     100.50  :      72.57
==========================ORIGINAL BYTEMARK RESULTS==========================
INTEGER INDEX       : 92.652
FLOATING-POINT INDEX: 69.676
Baseline (MSDOS*)   : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
==============================LINUX DATA BELOW===============================
CPU                 : Dual GenuineIntel Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz 3010MHz
L2 Cache            : 6144 KB
OS                  : Linux 2.6.32.7-custom64
C compiler          : gcc version 4.4.3 (GCC)
libc                : libc-2.11.1.so
MEMORY INDEX        : 24.774
INTEGER INDEX       : 21.953
FLOATING-POINT INDEX: 38.645
Baseline (LINUX)    : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38

As you can see, the S/390 emulation is the one that suffers most. The new s390x 64-bits version performs a bit faster, but the processor on the host machine tops at 100% during more complex tasks.

I won’t put all the different (i486 / x86_64 / arm / s390 / s390x) packages on my site, but I’ll submit the SlackBuild script to SlackBuilds.org, so that you can build them yourself on your machines.

Bookmark and Share

This entry was posted on Monday, February 15th, 2010 at 15:07 and is filed under ARMedslack, Hercules, Qemu, Slack/390, emulation, nbench. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

2 Responses to “Benchmarking with nbench”

  1. wizardxbl Says:

    thanks for your blog, I just have one question to ask for using nbench to test my board.
    I have board with CPU is OMAP3530, now we call it A, and a PC called B.
    so I change nbench’s Makefile to omap’s gcc toolchains and ‘make’ it on B, then build a elf file: nbench.
    then , i copy nbench to A.
    then , I run ./nbench on A.
    but, here is the porblem… when nbench run the ITEM: ASSIGNMENT , it was blocked! I wait it for a long time ,but no result any more.

    so , i don’t know should I do sth for good? chang the cflags or make it on the wrong PC?
    ~and so , can you help me ? thanks again.~~

  2. Niels Horn Says:

    I understand that you’re cross-compiling for the OMAP (an ARM processor) on a PC.
    This is certainly possible, but not very simple.
    I suggest two solutions:
    1) compile nbench directly on the ARM board (it’s a quick compile)
    2) get the pre-compiled version for ARM processors from my site. It is inside a Slackware package, but you can simply untar it and get the binary from the usr/bin/ directory
    Hope this works out for you!

Leave a Reply



XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

It may take some time for your comment to appear, it is not necessary to submit it again.