VOGONS


First post, by douglar

User metadata
Rank Oldbie
Rank
Oldbie

I'm trying to put together some DOS storage benchmarks and I wanted to throw some thoughts into a post so that I can get feedback from other Vogons members.

First, it seems important to have an easy to use benchmark took that gives consistent results.

Looking at available software, I see three contenders:

Speedsys (https://www.philscomputerlab.com/dos-benchmark-pack.html)

  • Directly sends commands INT13h, bypassing the file system {edited}
  • Often identifies the difference between SSD and Disk storage and does different seek tests
  • Some BIOS extensions seem to confuse it and it defaults to the Disk tests ( XTIDE UBE ) {edit} when the rom is not shadowed
  • Some devices report unexpectedly high values on the linear verify test, suggesting that they are not actually verifying the sectors and just immediately returning "success'
  • Doesn't work with my Atronics caching controller. Always reports 0MB/s.
  • Samples the entire storage device
  • The write test is destructive
  • Requires a 386
  • Has some command line scripting functionality

DiskMBPS & DiskRand (http://www.roylongbottom.org.uk/oldones.htm#anchorDisk)

  • Uses the filesystem, so it is affected by BIOS speed, DOS buffers, and anything that hooks INT21h like smartdrv.exe
  • Samples inside a single file
  • Requires a 386
  • Very scriptable and configurable

DOS Disk Tester (https://www.lo-tech.co.uk/wiki/DOS_Disk_Tester)

  • Uses the filesystem, so it is affected by BIOS speed, DOS buffers, and anything that hooks INT21h like smartdrv.exe
  • Simple and works on 8088, DOS >= 2.0
  • Scriptable

I'm leaning toward DOS Disk Tester because it is pretty straight forward. Hopefully the results are pretty consistent over time.

Here's the items that I see affecting the storage stack:

INT21h & INT13h

  • Partition size, FAT type, & DOS buffers
  • BIOS & BIOS Extension performance (Optimized? RAM shadowed?)
  • Drive Overly Performance
  • DOS Driver - Does your storage device need a device driver to reach max performance
  • Disk caches like smartdrv.exe

System Speed

  • CPU - In the days before bus mastering, CPU speed was important for I/O throughput
  • Bus Speed - a 12Mhz ISA bus is faster than 8Mhz. A 50Mhz VLB should be faster than a 33Mhz.
  • PCI Bridge - systems that used a bridge chip were often much slower
  • Hard drive controller - Once we get into >= VLB, there is a controller chip that affects performance

ATA Protocol

  • Is the storage device using the best ATA protocol?
  • Is there a slow device on the same cable slowing you down?

Storage device

Last edited by douglar on 2023-06-06, 20:26. Edited 2 times in total.

Reply 1 of 10, by jakethompson1

User metadata
Rank Oldbie
Rank
Oldbie
douglar wrote on 2023-06-05, 19:37:
  • Directly sends ATA commands to the storage device, bypassing the file system

Are you sure it sends commands directly (as in 1f0-1f7/3f6h io ports) and doesn't just bypass the file system and use Int 13h?
For my systems (using HDD) it makes a difference whether you have Block Mode enabled in the BIOS which would only affect Int 13h. That wouldn't be the case if it accesses the hardware directly.

The efficiency of BIOS code for CHS->LBA translation could be a factor too as there can be division involved. This would most likely crop up on 8088/286 when you add a huge drive and XT-IDE Universal BIOS.

Reply 2 of 10, by douglar

User metadata
Rank Oldbie
Rank
Oldbie
jakethompson1 wrote on 2023-06-05, 20:04:
Are you sure it sends commands directly (as in 1f0-1f7/3f6h io ports) and doesn't just bypass the file system and use Int 13h? F […]
Show full quote
douglar wrote on 2023-06-05, 19:37:
  • Directly sends ATA commands to the storage device, bypassing the file system

Are you sure it sends commands directly (as in 1f0-1f7/3f6h io ports) and doesn't just bypass the file system and use Int 13h?
For my systems (using HDD) it makes a difference whether you have Block Mode enabled in the BIOS which would only affect Int 13h. That wouldn't be the case if it accesses the hardware directly.

The efficiency of BIOS code for CHS->LBA translation could be a factor too as there can be division involved. This would most likely crop up on 8088/286 when you add a huge drive and XT-IDE Universal BIOS.

I assumed that the ATA verify command required direct ATA commands. Now that I look more closely, I see that it is available via INT 13h, so you are probably correct.

Reply 3 of 10, by douglar

User metadata
Rank Oldbie
Rank
Oldbie

I completed a round of baseline benchmarks where I used the same Storage Device & Controller in a number of different systems.

The storage device is Silicon Systems Inc 512MB Compact Flash. It's no speed burner, but it is < 528MB, so things are simpler.
The controller is a Lion 3+ VLB card with FCCID "LTNAYCOMP-9401". Jumpers are listed here: http://www.vogonsdrivers.com/getfile.php?file … menustate=56,55

For the first round, I just wanted to try different boards with different BIOS.

Here are the motherboards:

  • LION NiCE Green VL - Contaq 82C597 - 1 MB L2, Evergreen Chip
  • Shuttle HOT 419 v1.0 - Opti 895 - 512K L2, Evergreen Chip
  • FIC 486 VIP - Via82C505 - 256K L2, AMD P75 ADZ
  • PC Chips M919 v3.3 - M82C881 - 1 MB L2 - EDO Ram, Kingston Chip
  • WinTech MV008 - OPTi 82C495SX - 256KB, AMD P75 ADW

I ran the tests with:

  • Trident 8900D ISA VGA card
  • MS-DOS 7.1 from Win98se
  • Nothing loaded in the config.sys or autoexec.bat except DOSKEY
  • Fastest possible memory timings
  • Writeback cache wherever possible
  • Shadow the System, Video, and Option ROMS when possible
  • XUB was build v625 386L
  • DTCY2K is a DTC-1181Y2K with v1.2 BIOS & LBA Support

I benchmarked with Speedsys because the results are so repeatable.

  • WS = IDE Wait States
  • CPU = AM133 is an AMD 486 @ 133mhz, POD83 is a Pentium Overdrive @83mhz
  • PRIDX = Speedsys Processor Index
  • Seek = Average Seek Time MS
  • BRead = Buffered Read KB/s
  • LVrfy = Linear Verify KB/s
  • LRead = Linear Read KB/s
Board          |Bios  |WS|CPU  |PRIDX| Seek|BRead|LVrfy|LRead|Notes
PC CHIPS M919 |AMI |36|AM133|50.05| 0.77| 1257| 9391| 1257|36 Wait States
PC CHIPS M919 |XUB |36|AM133|50.05| 0.72| 1298| 9589| 1297|36 Wait States
PC CHIPS M919 |DTCY2K|36|AM133|51.55| 0.53| 1350| 9959| 1358|36 Wait States
PC CHIPS M919 |AMI |5 |AM133|50.05| 0.52| 3291| 9404| 3293|
PC CHIPS M919 |XUB |5 |AM133|50.05| 0.47| 3611| 9601| 3592|
PC CHIPS M919 |DTCY2K|5 |AM133|51.55| 0.28| 4002| 9987| 4079|CPU Index is 8% higher. This was exact & repeatable.
Shuttle Hot419 |AMI |5 |POD83|61.33| 0.55| 3008| 9355| 2969|Pentium Overdrive had slower disk IO
Shuttle Hot419 |AMI |5 |AM133|48.12| 0.47| 3746| 9479| 3677|
Shuttle Hot419 |DTCY2K|5 |AM133|48.12| 0.27| 4542| 9997| 4521|
Shuttle Hot419 |XUB |5 |AM133|48.12| 3.32| 508| 5004| 494|Should be shadowed, but not acting like it
Lion Nice Green|AMI |5 |AM133|38.19| 0.39| 3335| 9867| 3304|
Lion Nice Green|DTCY2K|5 |AM133|38.19| 0.28| 4905|10030| 4868|Old BIOS doesn't shadow option Roms
Lion Nice Green|XUB |5 |AM133|38.19| 2.93| 563| 5223| 548|Old BIOS doesn't shadow option Roms
FIC VIP |AWARD |5 |AM133|44.52| 0.35| 3235| 9966| 3219|
FIC VIP |DTCY2K|5 |AM133| Fail| Fail| Fail| Fail| Fail|Boots very slowly, unstable
FIC VIP |XUB |5 |AM133| Fail| Fail| Fail| Fail| Fail|Boots very slowly, unstable
WinTech MV008 |MRBIOS|5 |AM133|48.29| 0.41| 3336| 9743| 3309|
WinTech MV008 |DTCY2K|5 |AM133|48.29| 0.27| 4955|10008| 4934|
WinTech MV008 |XUB |5 |AM133|48.29| 0.44| 3957| 9622| 3914|
WinTech MV008 |DTCY2K|5 |AM133|48.29| 0.33| 4927| 9783| 4879|Unshadowed
WinTech MV008 |XUB |5 |AM133|48.29| 4.14| 416| 4368| 404|Unshadowed

It appears to me like Speedsys gets confused when the XUB option rom is not shadowed and acts like it is a disk instead of an SSD
The DTCY2K option ROM is a little slower, but doesn't have nearly the same impact, and it still benchmarks like an SSD

Reply 4 of 10, by jakethompson1

User metadata
Rank Oldbie
Rank
Oldbie

The UM8886A/UM8886B as found on your M919 really need the driver to be fully performant. feipoa, mkarcher and I have been discussing and testing this behind the scenes. Unlike other PCI IDE chipsets you can't just turn on FIFO (prefetching) and go. The FIFO has to be flipped between disabled, filling, draining, and then back to disabled at the appropriate points during the read of each sector (or block of sectors for multi-sector) during every access. Unfortunately the UMC driver has a lot of complaints with incompatibility with Win95, sometimes even Win95 plain DOS mode. According to my notes the FIFO mode provides about a 55% speedup.

I assume your SSD, like other SSDs I have looked at, does not support multi-sector transfers (in the ATA IDENTIFY data is a field showing the maximum number of sectors that can be programmed in for Read/Write Multiple Sectors). Those really help PIO performance, so you might find a mechanical drive to be faster than an SSD for buffered & linear reads--and that applies across the board, not just to the UM8886.

Reply 6 of 10, by douglar

User metadata
Rank Oldbie
Rank
Oldbie
jakethompson1 wrote on 2023-06-07, 00:45:

Oh, I didn't realize you were using a VLB I/O card. I don't have the M919 but an 8433UUD so I immediately thought of the onboard IDE.
The multi-sector part still applies though.

I was surprised that the M919 didn't perform better with the VLB card, but it's sort of academic. If I'm using the M919 board for anything real, I'm using the onboard IDE or a PCI IDE and I'm using the vendor's drivers.

I did a couple more tests before putting the kids to bed tonight.

The Lion DOS driver has 20% better throughput and a slightly higher latency than the DTCY2K bios card.
Initial tests with EZ Drive 9.09 have been outstanding

Board          |Driver|WS|CPU  |PRIDX| Seek|BufRd|Verfy|LinRd|Notes
Lion Nice Green|DTCY2K|5 |AM133|38.19| 0.28| 4905|10030| 4868|
Lion Nice Green|Vendor|5 |AM133|38.19| 0.33| 5884| 9843| 5781|Driver reports "Mode 2"

WinTech MV008 |DTCY2K|5 |AM133|48.29| 0.27| 4955|10008| 4934|
WinTech MV008 |Vendor|5 |AM133|48.29| 0.30| 6014| 9816| 5950|Driver reports "Mode 2"
WinTech MV008 |EZDrv |5 |AM133|48.29| 0.27| 6186|10020| 6139|32bit access disabled
WinTech MV008 |EZDrv |5 |AM133|48.29| 0.26| 6861|10021| 6792|32bit access enabled

Reply 7 of 10, by douglar

User metadata
Rank Oldbie
Rank
Oldbie

I focused on the WinTech board with the Lion 3 card yesterday

Two discoveries about the LION 3+ card :
1) I have rarely been able to go faster than 6MB/s with the controller jumpered to 5ws for the IDE device (fastest setting) and a 33MHz VL bus.
2) The Lion 3 driver is a little faster but while it detects large storage, it only reports up to 8.4GB capacity when initializing the device (the ECHS limit), and only lets DOS see up to 1024C/16H/63S (528MB CHS limit).
Looking through the driver binary, I see there's an "incorrect switches" string, but I can't see any help page that indicates what switches are available. The driver isn't all that useful at this point.

Here are the drives that I used:

Drive Selection.png
Filename
Drive Selection.png
File size
26.54 KiB
Views
201 views
File license
Public domain

Here are the results I collected:

Lion3 Benches.png
Filename
Lion3 Benches.png
File size
77.85 KiB
Views
201 views
File license
Public domain

Notes:

  • I wasn't able to match the high benchmarks that I saw on the SILICONSYSTEMS CF Tuesday evening. Don't know what changed. I messed with the device a lot Wed morning trying to get Ontrack to work with it, formatting it a couple times. Ontrack was fussy and never loaded on the drive.
  • The WD Caviar 80 only worked with high waitstates, and even then it was iffy
  • Could not get my 6.4GB Quantum Fireball LCT to work with this controller
  • Could not get my 211MB 3600RMP ST1239a to work either. Clanged like it was having LBA issues regardless of the BIOS
  • I'm going to swap out on of the fast 16GB SD's for something smaller and slower when it arrives.

Let me know if there's any tests you want to see with the LION, otherwise I'll move along to another controller.

Last edited by douglar on 2023-06-08, 15:40. Edited 1 time in total.

Reply 9 of 10, by douglar

User metadata
Rank Oldbie
Rank
Oldbie
rasz_pl wrote on 2023-06-08, 15:40:

Loving this. I hope you also do some tests with slower CPUs.

I'm working through a test plan.

First I did baselines across motherboards to make sure I wasn't using a crappy board.

Next I'm working through the VLB cards trying to minimize card pulls. I hear that old mobo plastic creak and groan every time I pull a VLB card, so trying to minimize the swaps.

Last, I'm trying to minimize mobo jumper changes because that's a total pain.

So once I find out which VLB cards are interesting and I have a good handle on desirable BIOS & Drives, I'll take the 4 most interesting VLB boards and do a CPU series, fixing the best performing drive and BIOS.

I'd like to do 386dx-20, 386dx-40, 486dx-33, 486dx-66, & 486dx-133, but there are many things I'd like to do.

This was something interesting I found in the Tyan S134x driver package:

To Choose the "Wait State" for VL Bus Clock:
1. According to the recommanded options shown on screen, choose one number
which between 1 and 7. "1" is the fastest wait state and "7" is the
slowest wait state.

For example:
386 SX 16Mhz = 7 wait state
386 DX 33Mhz = 3 wait state
486 DX 33Mhz = 2 wait state
486 DX/2 50Mhz = 5 wait state
486 DX/2 66Mhz = 2 wait state (Some DX/2 66Mhz can take 1 wait state)
486 DX/4 100Mhz = 1 wait state
586 = 1 wait state

Really, did Tyan have a 386sx VLB motherboard in their testing room? Maybe.

Here's the armada of VLB controllers that I've collected:

Photo Jun 06 2023, 9 38 56 PM.jpg
Filename
Photo Jun 06 2023, 9 38 56 PM.jpg
File size
163.05 KiB
Views
178 views
File license
Public domain

Sorry about ruining the market for < $40 VLB controllers on ebay. They'll come back in a few months.

Controllers.png
Filename
Controllers.png
File size
32.73 KiB
Views
178 views
File license
Public domain

Reply 10 of 10, by douglar

User metadata
Rank Oldbie
Rank
Oldbie

I wanted to do the read/write hard drive tests. In the past, I had worked with a newer board that had two IDE channels, so I just always benchmarked on the second channel.

This was a little trickier, because not all of the controllers had a second channel, some of the second channels were on ISA, and I didn't want to mess with trying to jumper all of the test drives to be slaves and deal will a bunch of unknowns.

My solution was just to run speedsys from A: and use the report options to dump the info to the A:

Then I take that to another computer, parse the output with powershell and put the results a SQL database.