VOGONS


mTCP NetDrive: network attached storage for DOS 2.0 or better

Topic actions

Reply 380 of 394, 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 394, 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 394, 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 394, 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 394, 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 394, 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 394, 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.

Reply 388 of 394, by ppgrainbow

User metadata
Rank Member
Rank
Member

While I was defragmenting drive I (the first NetDrive attached hard disk image) using Speed Disk, defragmentation of the entire drive was slow. It took anywhere from two to four seconds just to read, write and verify clusters. Then I used parameters that are needed to connect the network attached drive - -mra and -mws to 4 KB respectively to improve performance.

Hopefully, the next time I defrag the NetDrive attached hard disk, lowering the read-ahead and write-ahead to 4 KB should help improve performance. 😀

Reply 389 of 394, by mbbrutman

User metadata
Rank Oldbie
Rank
Oldbie

What CPU and network card are you using?

Limiting the read-ahead to 4KB should only be necessary on an old card or a slow CPU. Generally bigger is better unless bigger means the server is flooding the DOS machine and causing packet drops.

Reply 390 of 394, by ppgrainbow

User metadata
Rank Member
Rank
Member
mbbrutman wrote on 2026-04-16, 02:13:

What CPU and network card are you using?

Limiting the read-ahead to 4KB should only be necessary on an old card or a slow CPU. Generally bigger is better unless bigger means the server is flooding the DOS machine and causing packet drops.

I'm currently emulating a Gigabyte GA-486GL under 86Box right now - the speed is set to 25 MHz (Intel 80486)...so, 4 KB read-ahead is definitely necessary. The emulated network card that I'm using is a Novell NE1000.

I mean, flooding a server and causing packet drops is definitely not a good thing.

Reply 391 of 394, by mbbrutman

User metadata
Rank Oldbie
Rank
Oldbie

Ok, well, you are on an emulator so all bets are off. Even my 386-40 can use 32KB of read-ahead. And the NE1000 is a pretty limited card; try emulating something better.

Reply 392 of 394, by ppgrainbow

User metadata
Rank Member
Rank
Member

I'll see if I can switch to the NE2000 to see if performance has improved or not. :\

Reply 393 of 394, by mbbrutman

User metadata
Rank Oldbie
Rank
Oldbie

You are running in a emulator. It might improve, but I wouldn't worry about the performance of anything that is being emulated.

Knowing that it is working correctly is the most important part of the test code. People are reporting similar speed-ups to what is in my spreadsheet, which is just a bonus.

Reply 394 of 394, by ppgrainbow

User metadata
Rank Member
Rank
Member

I wouldn't worry about it too. I really love how mTCP NetDrive imrpoved over the last 2+ years and I proud of that. 😀