VOGONS


mTCP NetDrive: network attached storage for DOS 2.0 or better

Topic actions

Reply 380 of 387, by vetz

User metadata
Rank l33t
Rank
l33t
mbbrutman wrote on 2026-01-13, 01:20:

The read-ahead function will eventually get out; it just makes more sense now to do the same for writes too before I release it. Depending on the machine and the distance to the server it increased the speed by 5x, which is something I need/want for usage with public servers.

There is also plenty of other work to be done too, but I'm having problems finding the time to get to all of it. But rest assured, it's not dead.

That's good to hear! I know how hard it can be to find time for side projects .

I really appreciate the work you've put in to create the mTCP package, it's something I use on all my retro computers.

3D Accelerated Games List (Proprietary APIs - No 3DFX/Direct3D)
3D Acceleration Comparison Episodes

Reply 381 of 387, by mbbrutman

User metadata
Rank Oldbie
Rank
Oldbie

(Delayed response - recovering from the flu)

Thank you ... and if it isn't obvious, I appreciate what you and the whole team here do at Vogons ...

Reply 382 of 387, by wondow

User metadata
Rank Newbie
Rank
Newbie

Thanks for your Netdrive!

I have a Toshiba Satellite Pro M10, but last year, I physically broke the HDD IDE connector. Thanks to Netdrive, it gave a second life to this computer. Yesterday, I installed Windows 98 completely diskless on it. I've made a small pxelinux boot drive of 7mb). I started the first part of the Windows install on virtual box with 2 hdd images, then I transferred the small image to pxeboot (boot drive), and the larger one (Windows drive) is used by netdrive. To my surprise, Windows 98 is fully working, stable, and much faster than anticipated. I tested Diablo. and It is very playable, with just a few audio glitches. I also tested Warcraft II, it seems to work without any issues. As for cd-rom drive, I used the Dos driver as a workaround. The internal Ethernet car is used for pxe boot and Netdrive. I use a pcmcia network card for Win98 network. I'm very pleased overall.

The only thing is that I need to kill the session on the server side between reboots.

Reply 383 of 387, by mbbrutman

User metadata
Rank Oldbie
Rank
Oldbie

Here is a glimpse into the future - I implemented streaming writes:

Machine: 386-40, 16 bit NE2000 card, DOS 5.
Test: Copy a 4MB file to a server that is 55ms away. (About 1400 miles.)

  • Old code: 220 sec, 18.6KB/sec
  • New: 17.14 secs, 238KB/sec.

(Copying the file to the same local IDE hard drive takes 4.84 seconds so the remote copy to a server is only 3.5x slower.)

The new code requires about 650 more bytes of memory; 350 for code and 300 for buffer. I think the performance bump is well worth it. Read speeds haven't changed, but I'm going to work on that next.

Reply 384 of 387, by mbbrutman

User metadata
Rank Oldbie
Rank
Oldbie

I'm not sure if people missed it because I started a new thread, but I'll repost it here in case was overlooked:

About a year ago I started experimenting with how to make NetDrive faster. I have the next revision of that experiment available for testing, and I am excited by the results. The new code was 1.4 to 2.7x faster when talking to a server on the same network, and 12x to 21x faster when talking to a remote machine across the internet.

I'd like to get some help testing it though. It is rock solid, and I'm not concerned about data corruption. I'd just like to hear what kind of improvements other people see on their machines. The new code requires both the DOS and server side be updated. The downloads are at:

Some quick notes:

  • You must update to the new server to test this code. (Your DOS machines using older code can use the new servers; if they can't that is a bug.)
  • Slower machines do not see as much of a benefit, as they can barely keep up packet processing. But even an XT connecting to a remote server saw more than 2x improvement when reading and more than a 3x improvement when writing.
  • I need your feedback before I go further and make this widely available.

Thanks,
Mike

Reply 386 of 387, by mbbrutman

User metadata
Rank Oldbie
Rank
Oldbie

The quick answer:

  • My 386-40 connected to a local server went from reading 373KB/sec to 779KB/sec for a 4KB read, and 882KB/sec for an 8KB read.
  • The same machine connected to a server with a 50ms round trip went from 18.8KB/sec to 90KB/sec for a 4KB read, and 151KB/sec for an 8KB read.
  • An XT with a WD 8003 card connected to a local server went from reading 60KB/sec to 75.3/sec for a 4KB read.
  • The same machine connected to a server with a 50ms round trip went from 14.8KB/sec to 42KB/sec for a 4KB read.
  • 8KB reads failed with an excessive number of retries - the network card and CPU are just not fast enough to work with read-ahead.

The longer answer - there are three key factors here - machine speed, distance, and I/O size.

  • Small I/Os (1KB or less) will see no improvement. At 1KB or less the behavior is the same as it is today.
  • Slow machines don't get as much speed-up, as they have limited buffers on the network card and are often not fast enough to keep up.
  • Local connections will see some speed-up, but not as much as remote connections because there is less opportunity.

The changes work by doing more work while waiting for the server to respond, so the opportunity is greater with distant servers. But as you can see above, even with a 1ms round trip time to the server there is still plenty of gain.

Slower machines don't do as well - they literally can't keep up and they start to drop packets quickly. But even an XT class machine saw

Reply 387 of 387, by mbbrutman

User metadata
Rank Oldbie
Rank
Oldbie

I did some more benchmarking today. The results are in a Google sheet: https://docs.google.com/spreadsheets/d/1cXfR- … dit?usp=sharing

These numbers are slightly different because the benchmark is different. These numbers include filesystem overhead for DOS, so they should be marginally lower than the first numbers which tried to eliminate that overhead.

The test machines include an 8088 class machine, a 386-40, a 486-66 and a Pentium 133. I need to cobble together a 286 to round out the set. The P133 has a 100Mb/sec PCI card on it; try not to giggle when you see the numbers.