Mandrake Linux
Initially established back in 1998, MandrakeSoft (Wikipedia) was a commercial Linux vendor known for the Mandrake Linux distribution (Wikipedia), after a merger with the Brazilian Linux distribution Conectiva and a dispute over rights to the "Mandrake" name, the company and their Linux distribution changed name from Mandrake to Mandriva.
Mandrake Linux is notable for many improvements to desktop Linux distributions, including improvements to hardware detection and handing, and the use of a graphical installation process. Mandrake was also a pioneer in optimizing their Intel x86 distribution for Pentium or higher processors.
Mandrake Linux 7.2 was released in 2000, and so was a competitor with Red Hat Linux 6.2, and supported Pentium through early Pentium III systems (the Intel Pentium 4 didn't ship until November that year). So it is suitable for comparing our physical Intel Pentium system (tilia) and the PCem emulated equivalent.
PCem
The IBM PC and compatibles emulator PCem supports a range of PC systems, from the original Intel 8088 based IBM PC through to a early 2000s slot 1 based Pentium II system. This includes a couple of systems featuring the Intel 430fx chipset which makes them equivalent to our physical system.
Basing our desired system on tilia and the PCem devices, the target emulated hardware is:
Mainboard | Intel Advanced/ZP (Zappa); Intel Triton 82430FX PCIset aka. 430FX |
---|---|
CPU | Intel Pentium 75 |
RAM | 72 MiB (128 MiB max.) |
Floppy | 3.5" 2.88MB |
Storage | IDE Controller Intel 82371FB aka. PIIX, ATA-2 16 MB/s |
IDE hard disk 2048 GB | |
ATAPI CD-ROM drive | |
Video | S3 Trio64 based VGA PCI |
Network | 10Mb/s ethernet ISA or 100Mb/s ethernet PCI |
PCem Installation & Configuration
Since we have the PCem installation from the Slackware 3.0 on PCem Pentium 75, where we looked at how an early Slackware behaved on similar configuration, refer to that post of details of the installation of PCem and the configuration of the emulated machine.
For this emulation the only differences are:
- the name given to the configuration ("Mandrake Linux 7 i430fx Pentium 75")
- the file name used for the hard disk image (Mandrake72-i430fx-P5.img)
- the NE2000 ISA Ethernet card has been swapped for a Realtek RTL8092AS based NE2000 PCI Ethernet card
- addition of a Sound Blaster PCI 128 card
Mandrake Linux 7.2 Installation
- Fetch the Mandrake Linux 7.2 CD-ROM image from Archive.org (e.g. https://archive.org/details/mandrake-7.2-i386)
- The Mandrake Linux 7.2 CD is bootable and will boot our machine if the option is enabled in the BIOS
- So back to PCem...
- Start/load the machine we created
- Use the "CD-ROM">"Image..." menu to insert the CD-ROM ISO
- When first booted the machine will stop for the BIOS settings to be confirmed. Most of the settings will be fine, but the BIOS needs to be told about the floppy drive being 2.88MB and that we want the CD-ROM to be a boot device.
- The Mandrake Linux installer is pretty good, so just follow the prompts.
- The mouse is a "Mouse Systems - Mouse (serial)"
- For the monitor I used "Generic Monitor, 1280x1024 @ 76 Hz"
- Remember to "Empty" the CD-ROM drive when the installer reboots the system.
- Once logged in:
- To always boot to console rather than into X Windows, edit /etc/inittab and set the default 'runlevel' to '3'
With the installation complete and configured we can have a play... to start the desktop we can use the startx command.
System Information - Mandrake Linux 7.2 (Odyssey)
So what does Mandrake Linux 7.2 (Odyssey) for x86 have to say about this system...
uname
Operating system release information:
$ uname -a Linux p-mdk7.home 2.2.17-21mdk #1 Thu Oct 5 13:16:08 CEST 2000 i586 unknown
A "Linux" kernel, on a node named "p-mdk7.home", kernel release "2.2.17-21mdk", version "#1 Thu Oct 5 13:16:08 CEST 2000", on a "i586" machine, processor "unknown"
For details of the Linux distribution, there are the distribution release files:
$ cat /etc/redhat-release Linux Mandrake release 7.2 (Odyssey) for i586 $ cat /etc/mandrake-release Linux Mandrake release 7.2 (Odyssey) for i586
So the Mandrake Linux 7.2 (Odyssey) for i586 (i.e. Pentium class systems). Mandrake Linux was initially based on Red Hat, and so has the Red Hat release file.
/proc/cpuinfo
Processor information:
$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 5 model : 2 model name : Pentium 75 - 200 stepping : 4 cpu MHz : 75.005 fdiv_bug : no hlt_bug : no sep_bug : no f00f_bug : yes coma_bug : no fpu : yes fpu_exception : no cpuid level : 1 wp : yes flags : fpu vme pse tsc msr cx8 bogomips : 149.50
The CPUID information is consistent with this being a second generation Intel Pentium processor (P54C), which is expected. The BogoMips result is at roughly twice clock, as expected for Linux 2.2.14 and later.
/proc/meminfo
Memory information:
$ cat /proc/meminfo total: used: free: shared: buffers: cached: Mem: 75071488 47771648 27299840 0 3031040 31739904 Swap: 227041280 0 227041280 MemTotal: 73312 kB MemFree: 26660 kB MemShared: 0 kB Buffers: 2960 kB Cached: 30996 kB BigTotal: 0 kB BigFree: 0 kB SwapTotal: 221720 kB SwapFree: 221720 kB
So 72 MiB RAM, with about 221 MB of swap.
/proc/bus/pci/devices & /proc/pci
The machine readable /proc/bus/pci/devices:
$ cat /proc/bus/pci/devices 0000 8086122d 0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0038 8086122e 0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0039 80861230 0 00000000 00000000 00000000 00000000 0000ffa1 00000000 00000000 0068 53338811 b 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0070 10ec8029 9 0000ff81 00000000 00000000 00000000 00000000 00000000 00000000 0078 12741371 a 0000ff01 00000000 00000000 00000000 00000000 00000000 00000000
And the obsolete /proc/pci, which was how to get PCI in older kernels:
$ cat /proc/pci PCI devices found: Bus 0, device 0, function 0: Host bridge: Intel 82437 (rev 0). Medium devsel. Master Capable. Latency=66. Bus 0, device 7, function 0: ISA bridge: Intel 82371FB PIIX ISA (rev 0). Medium devsel. Fast back-to-back capable. Master Capable. No bursts. Bus 0, device 7, function 1: IDE interface: Intel 82371FB PIIX IDE (rev 0). Medium devsel. Fast back-to-back capable. Master Capable. Latency=66. I/O at 0xffa0 [0xffa1]. Bus 0, device 13, function 0: VGA compatible controller: S3 Inc. Trio32/Trio64 (rev 0). Medium devsel. IRQ 11. Bus 0, device 14, function 0: Ethernet controller: Realtek 8029 (rev 0). Medium devsel. IRQ 9. I/O at 0xff80 [0xff81]. Bus 0, device 15, function 0: Multimedia audio controller: Ensoniq ES1371 (rev 2). Fast devsel. IRQ 10. Master Capable. No bursts. Min Gnt=12.Max Lat=128. I/O at 0xff00 [0xff01].
In each case we get details of the same devices, but presented differently.
dmesg
System log:
$ dmesg Linux version 2.2.17-21mdk (chmou@no.mandrakesoft.com) (gcc version 2.95.3 19991030 (prerelease)) #1 Thu Oct 5 13:16:08 CEST 2000 Detected 75005 kHz processor. Console: colour VGA+ 80x25 Calibrating delay loop... 149.50 BogoMIPS Memory: 70896k/73728k available (1136k kernel code, 416k reserved, 1152k data, 128k init, 0k bigmem) Dentry hash table entries: 16384 (order 5, 128k) Buffer cache hash table entries: 131072 (order 7, 512k) Page cache hash table entries: 32768 (order 5, 128k) VFS: Diskquotas version dquot_6.4.0 initialized CPU: Intel Pentium 75 - 200 stepping 04 Checking 386/387 coupling... OK, FPU using old IRQ 13 error reporting Checking 'hlt' instruction... OK. Intel Pentium with F0 0F bug - workaround enabled. POSIX conformance testing by UNIFIX PCI: PCI BIOS revision 2.10 entry at 0xfca21, last bus=0 PCI: Using configuration type 1 PCI: Probing PCI hardware Linux NET4.0 for Linux 2.2 Based upon Swansea University Computer Society NET3.039 NET4: Unix domain sockets 1.0 for Linux NET4.0. NET4: Linux TCP/IP 1.0 for NET4.0 IP Protocols: ICMP, UDP, TCP, IGMP TCP: Hash tables configured (ehash 131072 bhash 65536) Initializing RT netlink socket Starting kswapd v 1.5 Serial driver version 4.27 with MANY_PORTS MULTIPORT SHARE_IRQ enabled ttyS00 at 0x03f8 (irq = 4) is a 16550A ttyS01 at 0x02f8 (irq = 3) is a 16550A pty: 256 Unix98 ptys configured apm: BIOS version 1.1 Flags 0x03 (Driver version 1.13) Real Time Clock Driver v1.09 RAM disk driver initialized: 16 RAM disks of 4096K size Uniform Multi-Platform E-IDE driver Revision: 6.30 ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx PIIX: IDE controller on PCI bus 00 dev 38 PIIX: chipset revision 0 PIIX: not 100% native mode: will probe irqs later PIIX: neither IDE port enabled (BIOS) PIIX: IDE controller on PCI bus 00 dev 39 PIIX: chipset revision 0 PIIX: not 100% native mode: will probe irqs later ide0: BM-DMA at 0xffa0-0xffa7, BIOS settings: hda:pio, hdb:pio ide1: BM-DMA at 0xffa8-0xffaf, BIOS settings: hdc:pio, hdd:pio hda: PCemHD, ATA DISK drive hdc: PCemCD, ATAPI CDROM drive ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 ide1 at 0x170-0x177,0x376 on irq 15 hda: PCemHD, 2047MB w/256kB Cache, CHS=520/128/63 hdc: ATAPI 52X CD-ROM drive, 0kB Cache Uniform CD-ROM driver Revision: 3.11 Floppy drive(s): fd0 is 2.88M FDC 0 is a post-1991 82077 md driver 0.90.0 MAX_MD_DEVS=256, MAX_REAL=12 raid5: measuring checksumming speed 8regs : 82.296 MB/sec 32regs : 64.389 MB/sec using fastest function: 8regs (82.296 MB/sec) scsi : 0 hosts. scsi : detected total. md.c: sizeof(mdp_super_t) = 4096 Partition check: hda:hda: lost interrupt hda1 hda2 < hda5 hda6 > autodetecting RAID arrays autorun ... ... autorun DONE. VFS: Mounted root (ext2 filesystem) readonly. Freeing unused kernel memory: 128k freed Adding Swap: 221720k swap-space (priority -1) ne2k-pci.c:vpre-1.00e 5/27/99 D. Becker/P. Gortmaker http://cesdis.gsfc.nasa.gov/linux/drivers/ne2k-pci.html ne2k-pci.c: PCI NE2000 clone 'RealTek RTL-8029' at I/O 0xff80, IRQ 9. eth0: RealTek RTL-8029 found at 0xff80, IRQ 9, AC:DE:48:88:BB:AA. parport0: PC-style at 0x3bc [SPP] parport_probe: failed parport0: no IEEE-1284 device present. lp0: using parport0 (polling). isapnp: No Plug & Play device found es1371: version v0.22 time 13:20:20 Oct 5 2000 es1371: found chip, vendor id 0x1274 device id 0x1371 revision 0x02 es1371: found es1371 rev 2 at io 0xff00 irq 10 es1371: features: joystick 0x0 PCI: Increasing latency timer of device 00:78 to 64 es1371: codec vendor (0x000000) revision 0 (0x00) es1371: codec features none es1371: stereo enhancement: no 3D stereo enhancement cat uses obsolete /proc/pci interface
Here we see the results of hardware detection and initialization.
Benchmark
Since we have some information from an equivalent physical system (tilia), let's see how well the emulated system matches up let's run some benchmarks...
Note: the X Windows desktop has a fair amount of overhead, so benchmarking commands have been run from a text console.
BogoMips
The BogoMips (Wikipedia) pseudo-benchmark has a behavior where the score is related to the processor clock speed, and has an easily available collection of results from a range of systems (see BogoMips mini-Howto and our BogoMips Results).
PCem system: Linux 2.2.17, Mandrake Linux 7.2 (Odyssey) for x86:
Calibrating delay loop... 149.50 BogoMIPS
Comparing our physical system and the emulated system:
Linux | tilia | PCem | |
---|---|---|---|
Distribution | Kernel | BogoMips | BogoMips |
Slackware Linux 3.0 | Linux 1.2.13 | 29.80 | 74.98 |
RedHat Linux 5.2 (Apollo) | Linux 2.0.36 | 29.80 | 74.75 |
RedHat Linux 6.2 (Zoot) | Linux 2.2.14 | 29.80 | 74.75 |
Mandrake Linux 7.2 (Odyssey) | Linux 2.2.17 | 148.68 | 149.50 |
RedHat Linux 7.3 (Valhalla) | Linux 2.4.18 | 148.68 | ? |
With the Linux 2.2.17 kernel used in Mandrake Linux 7.2 we see the change to BogoMips result scaling, due to a change in CPU cache states before the BogoMips calculation, that gives an approximately double the processor clock result for Pentium and later processors.
OpenSSL
The OpenSSL library of cryptographic methods provides a means to test the performance of the methods. Using this we can get a feel for the computational performance of a system, and comparisons with real hardware and other emulations can show how well a particular emulation performs. Since we are mainly interested in old hardware, we'll test using two of the older methods: MD5 and RSA.
Note: old versions of OpenSSL are not recommended for actual use. If you want to run comparisons like this, and thus need to use an old release, see the OpenSSL site for back to 0.9.6, for even older releases back to 0.91 see http://ftp.mirrorservice.org/sites/ftp.wiretapped.net/pub/security/cryptography/libraries/ssl/openssl/.
Mandrake Linux 7.2 (Odyssey) for x86, , with packaged OpenSSL 0.9.5a
$ openssl version OpenSSL 0.9.5a 1 Apr 2000
Let's seen how MD5 and RSA do:
$ openssl speed md5 rsa Doing md5 for 3s on 8 size blocks: 283971 md5's in 3.00s Doing md5 for 3s on 64 size blocks: 200865 md5's in 3.00s Doing md5 for 3s on 256 size blocks: 103511 md5's in 3.00s Doing md5 for 3s on 1024 size blocks: 35330 md5's in 3.00s Doing md5 for 3s on 8192 size blocks: 4942 md5's in 3.00s Doing 512 bit private rsa's for 10s: 423 512 bit private RSA's in 10.00s Doing 512 bit public rsa's for 10s: 4131 512 bit public RSA's in 10.00s Doing 1024 bit private rsa's for 10s: 76 1024 bit private RSA's in 10.40s Doing 1024 bit public rsa's for 10s: 1311 1024 bit public RSA's in 10.00s Doing 2048 bit private rsa's for 10s: 12 2048 bit private RSA's in 10.80s Doing 2048 bit public rsa's for 10s: 383 2048 bit public RSA's in 10.20s Doing 4096 bit private rsa's for 10s: 2 4096 bit private RSA's in 11.60s Doing 4096 bit public rsa's for 10s: 106 4096 bit public RSA's in 10.30s OpenSSL 0.9.5a 1 Apr 2000 built on: Sun Oct 1 01:53:22 CEST 2000 options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) idea(int) blowfish(idx) compiler: gcc -fPIC -DTHREADS -D_REENTRANT -fPIC -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -pipe -s -march=pentium -ffast-math -fexpensive-optimizations -Wall -DSHA1_ASM -DMD5_ASM -DRMD160_ASM The 'numbers' are in 1000s of bytes per second processed. type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes md5 757.26k 4285.12k 8832.94k 12059.31k 13494.95k sign verify sign/s verify/s rsa 512 bits 0.0236s 0.0024s 42.3 413.1 rsa 1024 bits 0.1321s 0.0076s 7.6 131.1 rsa 2048 bits 0.8400s 0.0262s 1.2 38.2 rsa 4096 bits 5.8000s 0.0946s 0.2 10.6
Extracting the relevant figures for comparisons (see OpenSSL Speed Results):
- OpenSSL speed MD5 8,192 bytes: 13,494.95k
- OpenSSL speed RSA 4,096 bytes sign/s: 0.2
- OpenSSL speed RSA 4,096 bytes verify/s: 10.6
So how does this compare to tilia?
OpenSSL results from tilia:
OS | OpenSSL Version | MD5 8,192 bytes | RSA 4,096 bytes sign/s | RSA 4,096 bytes verify/s |
---|---|---|---|---|
Linux 2.0.36 RedHat Linux 5.2 x86 | 0.9.2b 22 Mar 1999 | 12,391.77k | 0.2 | 11.2 |
Linux 2.2.14 RedHat Linux 6.2 x86 | 0.9.5a 1 Apr 2000 | 12,454.57k | 0.2 | 11.1 |
Linux 2.2.17 Mandrake Linux 7.2 x86 | 0.9.5a 1 Apr 2000 | 12,208.81k | 0.2 | 10.8 |
Linux 2.4.18 RedHat Linux 7.3 x86 | 0.9.6b [engine] 9 Jul 2001 | 6,075.73k | 0.1 | 4.5 |
From these results it seems the PCem system has slightly better performance for MD5 (approx. +10.5%), and slightly worse for RSA (approx. -1.8%), with OpenSSL 0.9.5a on Linux 2.2.17, compared to the physical hardware in tilia.
Thoughts
PCem works well for getting a reasonably close match to old hardware, the slight difference in performance is not going to be an issue in most cases.
Further Sources
- Pentium (original) - Wikipedia
- 242480-002_Pentium_Processor_Specification_Update_Mar95.pdf - Intel Pentium Processor Specification Update. Release Date: March, 1995
Supplemental: OpenSSL 0.9.5a speed
For reference a full run of all the methods provided by OpenSSL 0.9.5a on this PCem system gives results (openssl speed):
OpenSSL 0.9.5a 1 Apr 2000 built on: Sun Oct 1 01:53:22 CEST 2000 options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) idea(int) blowfish(idx) compiler: gcc -fPIC -DTHREADS -D_REENTRANT -fPIC -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -pipe -s -march=pentium -ffast-math -fexpensive-optimizations -Wall -DSHA1_ASM -DMD5_ASM -DRMD160_ASM The 'numbers' are in 1000s of bytes per second processed. type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes md2 61.36k 171.67k 232.36k 255.66k 263.12k mdc2 139.34k 145.17k 145.92k 146.09k 146.00k md5 756.72k 4280.92k 8847.62k 12062.38k 13494.95k hmac(md5) 289.67k 1999.17k 5565.61k 10043.39k 13126.31k sha1 463.42k 2250.84k 4090.97k 5140.82k 5559.64k rmd160 373.86k 1754.03k 3093.08k 3821.91k 4101.46k rc4 5871.13k 8600.02k 9052.59k 9171.63k 9202.35k des cbc 1409.06k 1570.65k 1590.44k 1595.39k 1597.44k des ede3 535.73k 559.77k 562.35k 563.20k 563.37k idea cbc 537.38k 584.92k 590.59k 591.19k 592.55k rc2 cbc 523.79k 570.30k 575.74k 577.19k 578.90k rc5-32/12 cbc 3471.27k 5019.82k 5218.05k 5268.82k 5286.57k blowfish cbc 2614.39k 3202.22k 3281.66k 3301.38k 3309.57k cast cbc 2284.33k 2720.90k 2779.05k 2793.47k 2796.20k sign verify sign/s verify/s rsa 512 bits 0.0237s 0.0024s 42.2 411.6 rsa 1024 bits 0.1322s 0.0076s 7.6 131.7 rsa 2048 bits 0.8400s 0.0261s 1.2 38.3 rsa 4096 bits 5.8000s 0.0944s 0.2 10.6 sign verify sign/s verify/s dsa 512 bits 0.0240s 0.0290s 41.7 34.5 dsa 1024 bits 0.0716s 0.0877s 14.0 11.4 dsa 2048 bits 0.2433s 0.2947s 4.1 3.4
No comments:
Post a Comment