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?