Subject: [E3-hacking] Debian report

From: David Given <[email-masked]>
Date: Sun, 16 Apr 2006 02:26:57 +0100

Well, I now have a new member of my family --- tarras, my E3 running Debian
etch. It's using a USB hard disk for storage and swap and a ZD1201 wireless
network widget for networking.

The general verdict: slow, but usable. Doing stuff on the shell, either
locally on the mailboard or remotely via ssh, is pretty snappy provided keep
your expectations realistically low.

Installing it basically Just Worked. I decompressed the etch initrd for the
CATS and wrote it to a partition on the hard disk, and then booted a custom
kernel via the serial port mounting the partition as root. The rest of the
installation was completely normal, including fetching all the packages over
the network. After setting up some basic services --- sshd, cron, sysklogd ---
boot time is about 120 seconds.

Using the device after installation is surprisingly responsive. Small,
old-skool apps work fine --- it's a good opportunity to brush up on doing
things The Unix Way. Larger, more complex apps are definitely sluggish.
Installing sshd, building the keys took a long time; apt-get is usable, but
aptitude (with its more complex database) is not. (It takes aptitude 270
seconds simply to start up.) From watching the disk activity, it would appear
that these are both CPU-bound activities.

Scaling up a bit, gcc isn't actually that bad --- I compiled and built the
dhrystone benchmark on the device, and it took about 5-10 seconds. (125000
dhrystones per second, if you're interested. My 1.5GHz Athlon gets 3.3 million.)

Getting this far, of course, I had to try building a kernel. It worked:

        Amstrad E3        1.5GHz Athlon
---------------------------------------
real    222m31.301s       5m23.053s
user    190m50.440s       3m48.011s
sys      20m41.680s       0m19.573s

The Amstrad's user:sys ratio is 9.5; the Athlon's is 12, indicating that the
Amstrad is spending proportionately more time on I/O than calculation. This is
what I expected, given the very slow mass storage, but I was expecting things
to be a lot worse. It would seem Linux' disk buffering actually works, even
with only 32MB of RAM.

hdparm gives this as disk transfer speeds:

/dev/sda:
 Timing cached reads:    92 MB in  2.08 seconds =  44.14 MB/sec
 Timing buffered disk reads:    4 MB in  5.12 seconds = 800.43 kB/sec

I also tried running LMBench, but had some problems I had to work around (such
as its configuration tool insisting that the device only had 1MB of RAM).
Also, I noticed disk activity during the memory benchmarks, despite having had
all services disabled and swap turned off --- which means I think its figures
are suspect. I'm enclosing the summary sheet at the end for interest value.

Are there any other benchmarks or tests that would be worth trying?

I couldn't get Doom running on the framebuffer --- fbcon didn't seem to want
to know, and directfb can't handle 4/4/4 surfaces --- but it ran quite happily
under AAlib and seemed reasonably smooth.

Conclusion: I'd never recommend this for someone wanting to use the thing as a
genuine appliance, but if you want to treat the E3 as a workstation and use it
for light ssh-ing, text editing and shell use, you could do a lot worse. It's
actually faster than some of the machines I've developed on. It would also
make a really good platform for developing E3-specific applications.

(It's interesting to compare the E3 with the NSLU2, which has very similar
specifications apart from a USB2 port.)

                 L M B E N C H  3 . 0   S U M M A R Y
                 ------------------------------------
                 (Alpha software, do not distribute)

Basic system parameters
------------------------------------------------------------------------------
Host                 OS Description              Mhz  tlb  cache  mem   scal
                                                     pages line   par   load
                                                           bytes
--------- ------------- ----------------------- ---- ----- ----- ------ ----
tarras    Linux 2.6.16-       armv4tl-linux-gnu  147    32    16 1.0400    1

Processor, Processes - times in microseconds - smaller is better
------------------------------------------------------------------------------
Host                 OS  Mhz null null      open slct sig  sig  fork exec sh
                             call  I/O stat clos TCP  inst hndl proc proc proc
--------- ------------- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
tarras    Linux 2.6.16-  147 2.17 9.28 66.7 114. 351. 16.6 61.9 8386 28.K 97.K

Basic integer operations - times in nanoseconds - smaller is better
-------------------------------------------------------------------
Host                 OS  intgr intgr  intgr  intgr  intgr
                          bit   add    mul    div    mod
--------- ------------- ------ ------ ------ ------ ------
tarras    Linux 2.6.16- 6.9200 6.9200   38.2  861.3  152.2

Basic float operations - times in nanoseconds - smaller is better
-----------------------------------------------------------------
Host                 OS  float  float  float  float
                         add    mul    div    bogo
--------- ------------- ------ ------ ------ ------
tarras    Linux 2.6.16- 6441.7 5751.0 8178.6  35.0K

Basic double operations - times in nanoseconds - smaller is better
------------------------------------------------------------------
Host                 OS  double double double double
                         add    mul    div    bogo
--------- ------------- ------  ------ ------ ------
tarras    Linux 2.6.16- 8176.1  10.2K  14.4K  53.8K

Context switching - times in microseconds - smaller is better
-------------------------------------------------------------------------
Host                 OS  2p/0K 2p/16K 2p/64K 8p/16K 8p/64K 16p/16K 16p/64K
                         ctxsw  ctxsw  ctxsw ctxsw  ctxsw   ctxsw   ctxsw
--------- ------------- ------ ------ ------ ------ ------ ------- -------
tarras    Linux 2.6.16-  277.6  219.1         304.7          256.0

*Local* Communication latencies in microseconds - smaller is better
---------------------------------------------------------------------
Host                 OS 2p/0K  Pipe AF     UDP  RPC/   TCP  RPC/ TCP
                        ctxsw       UNIX         UDP         TCP conn
--------- ------------- ----- ----- ---- ----- ----- ----- ----- ----
tarras    Linux 2.6.16- 277.6 693.8 999. 1218.       1669.       4493

File & VM system latencies in microseconds - smaller is better
-------------------------------------------------------------------------------
Host                 OS   0K File      10K File     Mmap    Prot   Page   100fd
                        Create Delete Create Delete Latency Fault  Fault  selct
--------- ------------- ------ ------ ------ ------ ------- ----- ------- -----
tarras    Linux 2.6.16-                               685.0 0.215    62.1 327.0

*Local* Communication bandwidths in MB/s - bigger is better
-----------------------------------------------------------------------------
Host                OS  Pipe AF    TCP  File   Mmap  Bcopy  Bcopy  Mem   Mem
                             UNIX      reread reread (libc) (hand) read write
--------- ------------- ---- ---- ---- ------ ------ ------ ------ ---- -----
tarras    Linux 2.6.16- 10.0 8.66 9.32   30.4   45.5   22.9   23.1 46.3  50.9

Memory latencies in nanoseconds - smaller is better
    (WARNING - may not be correct, check graphs)
------------------------------------------------------------------------------
Host                 OS   Mhz   L1 $   L2 $    Main mem    Rand mem    Guesses
--------- -------------   ---   ----   ----    --------    --------    -------
tarras    Linux 2.6.16-   147   14.0  276.9  284.7       769.8    No L2 cache?

-- 
+- David Given --McQ-+ "If you're up against someone more intelligent
|  [email-masked]    | than you are, do something insane and let him think
| ([email-masked]) | himself to death." --- Pyanfar Chanur
+- www.cowlark.com --+