6 ms·
2,500 continuous runtime hours on a 4.77Mhz DOS web server
- IceCreamJonsey 3y agoMike also runs the best PCjr forum! It's been invaluable for help as I got my recently purchased PCjr running with mods and flash media. https://www.brutman.com/forums/index.php https://www.brutman.com/forums/index.php
- mbbrutman 3y ago(Sorry, I forgot to preface this with Show HN) ** 2023-07-14 18:38 PDT The DOS machine is getting DoSed. It's still beeping and happy but it's busy. ** This website is hosted on a 39 year old PCjr running at 4.77Mhz and it has been running over 2,500 hours continuously now. No reboots or program restarts ... you can see the current runtime stats by visiting http://brutmanlabs.org/status http://brutmanlabs.org/status . The machine specs are: - IBM PCjr w/ NEC V20 CPU (the V20 gives a small speed bump compared to the original 8088) - jrIDE sidecar providing expansion RAM to bring the system up to 736KB and an IDE port - Kingston SSD w/ a Startech SATA-IDE bridge - Parallel printer sidecar, modified to be bi-directional - Xircom PE3-10BT Ethernet adapter hanging off of the parallel port - IBM PC DOS 5.02 and mTCP HTTPServ - APC UPS (45 watt power draw with networking equipment) - Dynamic DNS is being handled by my home router, which forwards port 80 to the machine. All of the upgrade parts are there for performance or convenience; you could use period correct parts and everything would work the same. (The IDE adapter would be a homebrew MFM adapter and you'd have to use something like a 3Com 3C503 on a bus adapter, but all of that existed in the mid 1980s when the machine was new.) The web server is my own work, part of the mTCP project. Here are some of the features: - serves HTTP 0.9, 1.0 and 1.1 requests to be friendly to vintage browsers - Maps "normal" looking paths and resources to DOS 8.3 file format - HTTP 1.1 requests can be pipelined. - can serve up to 8 concurrent connections - logging to local disk and over UDP - can serve pre-compressed content - basic auth - runs on DOS 2.1 and up - built in SNTP client for time syncing Besides the UPS it needs the SNTP client to achieve long run times, otherwise dropped interrupts cause the machine to lose time. Without the SNTP client it was losing up to a few minutes per day depending on the system load. The SNTP client also helped it transition through the daylight savings time change in March. The limiting factor is going to be disk space for logging; it is generating logs and eventually that disk partition will fill up. (I need to add log rotating and compression.) This machine was running when the ChatGPT client for DOS was announced, and it was hosting the mTCP networking pages at the time, so it got quite a bit of traffic. I learned after that to leave a lot of space for logs. It beeps when somebody visits - enjoy!
- anyfoo 3y agoA PCjr? That somehow makes this more funny than if it was a 5150 or something (but equally impressive). I remember playing around with Xircom parallel port ethernet adapters and TCP/IP packet drivers (and corresponding applications) in the 90s on an old 286 laptop I still had. Almost exclusively used it as a client, though. Good times.
- mbbrutman 3y agoYep, a PCjr. No parity bit on the memory even. I have a love/hate relationship with the Xircom adapter. It's portable and great for machines without ISA slots, but the max throughput is about 40KB/sec. A nice, real ISA card like a WD8003 can do over 100KB/sec on the same machine.
- anyfoo 3y agoHmm, I now have memories of both a parallel Xircom adapter, and just a null-modem connection with SLIP and PPP (pretty sure I used both). The Xircom adapter might have come after. Though with that, you'd get at most around 10kB/s (at 115200 baud), and that's assuming the 286 has a 16550A to begin with...
- userbinator 3y agoI guess HTTPS is just a little bit too much processing power for it to handle?
- mbbrutman 3y agoYeah, far too much for a little CPU like this. Never mind the horror of trying to port all of the libraries and keep them up to date. Although there are people are using Apache in front of their vintage computers to terminate SSL for them while still having the vintage computer handle the request.
- ipcress_file 3y agoOne of my friends was way ahead of the rest of us in 1987, and bought a V20 to upgrade his Tandy computer. He works for a telcom now. Nice to see one still churning away.
- williamsiddall 3y agoHe's dead, Jim.
- mbbrutman 3y agoIt's still beeping ... busy != dead. Right now it's getting hammered pretty hard. I haven't implemented the clustering and load balancing yet. It can serve 8 concurrent connections but that slows it down. It will queue a few more too; be patient and you will be rewarded.
- wvenable 3y agoIt actually works for me if you just wait long enough for it load. Which, at this point, is very impressive.
- mbbrutman 3y agoYep, at this point it's just continually busy. For the next iteration I've got to put a better Ethernet card on it. The Xircom PE3-10BT device is nice because it's convenient, but the bandwidth would be 2x higher with a real Ethernet card on the bus. And normally this machine is idle so the speed and bandwidth are not a problem. Right now it's very popular. :)
- lucb1e 3y agoWhat kind of speed does that Xircom get? I don't know what's on the site, maybe it's busy uploading data to various people, but usually the original 10mbps ethernet is enough to serve most ~light websites (anything that is not as heavy as youtube or an image blog basically) to the hacker news homepage, and I'm not getting synacks so this is not the web server (layer 7) being slow
- anyfoo 3y agoI'm repeating myself a bit, but, dude, it's an 8088 (EDIT: ok, technically a NEC V20, pretty negligible though). It has an 8 bit wide bus. It runs at 4.77MHz and needs many cycles (at least 4? more?) per instruction. With a parallel port adapter, not even an 8 bit ISA one. I haven't done the math, not even on an envelope, but I somehow doubt the Ethernet adapter is the bottleneck here...
- eek2121 3y agopfft...that is nothing. I was on a 286 running a DOS IRC client and managed to take back an IRC channel with more than 150 users that was previously taken over... ...no joke. However, in all seriousness: nice.
- mbbrutman 3y agoI have a small IRC client for that 286 if you still have it. Even has some Unicode support, but being limited to CP437 kind of limits it. ;-0
- anyfoo 3y agoDid that client exist in the 90s? I, too, IRC'd on a 286 laptop with TCP/IP packet drivers in the 90s.
- mbbrutman 3y agoNo, it's a 2009 creation. When I started mTCP I did netcat first because it was simple. My first iteration of an IRC client wasn't much better than netcat. It has improved since then though.
- anyfoo 3y agoAh. I remember mTCP, from trying again much later, then. You said you started it, so is that all yours? In any case, very impressive work, and still useful every once in a while next to the cool factor! And HTTP/1.1 with pipelining is seriously cool...
- tinus_hn 3y agoThat’s slightly over 100 days of uptime. How is this special?
- mbbrutman 3y ago100+ days of runtime on nearly 40 year old hardware not designed as a server exposed to all of the garbage coming in on port 80. Remember, this is a home computer from the mid 1980s. This thing is way outside of it's duty cycle. And the software is holding up pretty well too, even during what is effectively a DoS attack on a DOS machine.
- quickthrower2 3y agoOh they mean a real web server exposed to the internet (not hiding behind an NGINX). Impressive. Hug of death means I didn’t see the article
- tinus_hn 3y agoWow expectations sure have come down! When that computer was new, people had uptimes measured in years, 100 days was pedestrian.
- IntelMiner 3y agoAnd we were all on HN 40 years ago huh?
- tinus_hn 3y agoWell it’s about a computer from 40 years ago! That’s why I don’t see what’s so special; any computer from that era that still works today could easily run for a hundred days.
- anyfoo 3y agoSerious question: How could this not be special?
- AdieuToLogic 3y agoThe last time I checked on a FreeBSD server running Apache httpd for a previous client, it had an uptime of about 4,000 days. So here is the obligatory: "Here's a nickle, kid. Get yourself a better computer."[0] :-D 0 - https://web.archive.org/web/20190304153157im_/https://assets.amuniversal.com/6b08abb09fbb012f2fe600163e41dd5b https://web.archive.org/web/20190304153157im_/https://assets...
- lo_zamoyski 3y agoA long time ago, an acquaintance of mine was working part-time at a tool manufacturer that was running either AIX or HP-UX (I cannot recall which) that had an uptime of something like 11 years. I do not recall what they used it for, unfortunately.
- mbbrutman 3y agoFreeBSD is crusty, but is it really bad enough to compare to DOS 5.02? Besides, who needs 32 bits when 16 will do ... (Not serious.)
- yjftsjthsd-h 3y agoFreeBSD is fine; FreeBSD with 4000 days of uptime would concern me just like a Linux box with that much uptime.
- AdieuToLogic 3y ago> Besides, who needs 32 bits when 16 will do ... Hahaha, well played! :-) Seriously, though, it is impressive to have a DOS machine running a web server in today's environment. I assume dynamic content is produced via Sidekick[0]... (ducks) 0 - https://en.wikipedia.org/wiki/Borland_Sidekick https://en.wikipedia.org/wiki/Borland_Sidekick
- Borg3 3y agoHaha :) I always extend my respect for such stuff.. It just shows how everything is bloated and ballooned today.. You barelly can browse modern web with 32bit today.. VSZ hits the sky (3GB).
- quickthrower2 3y agoIf you get 2 of these it would be DDOS
- hedora 3y agoI once ran most of a fish tank worth of water through an internet-facing 25MHz computer with at least that much uptime. It stayed up, but I had to replace the boot floppy. (Not the whole drive; just the $5 disk). No fish were harmed.
- klysm 3y agoThat is astonishing if water got on the motherboard
- InvaderFizz 3y agoI had a 486 go through a tornado where the entire building was torn apart. Completely soaked. Brought it home, let it dry for a few weeks. Worked fine for a few years after as a mp3 player.
- guessbest 3y agoThat must have been a beefy 486, as I remember I had trouble getting a Pentium 100 Mhz Toshiba laptop to play mp3's on Linux kernel ver 2.4, and it could only do so from the bash shell without XWindows running. It could manage it on Windows 98, though, but only with the windows media player, if I remember correctly. Winamp 2 was a bit of a CPU hog for some reason, even though I never used visualizations.
- InvaderFizz 3y agoWinAmp + Windows 98 on a DX2 66. Now, if you did anything on the computer other than let WinAmp play without the flame graph, it would stutter. I had the machine under my desk and used VNC to connect to it and change tracks or whatever.
- deeesstoronto 3y agoI played mp3s on a 486dx2... I think at 40MHz (but could be after 100MHz upgrade). The biggest issue was bitrate, I think it struggled with 128kps but was fine if they were encoded anywhere below. Certainly could not play 160kps. 96kps mp3s were common enough on the internet back then with dialup, although they sounded awful. Brings back memories of the mp3car (PC parts) and mp3ar (MAS3507d) projects. Going back to 2000 on archive.org https://web.archive.org/web/20000408180856/http://www.mp3ar.com/ https://web.archive.org/web/20000408180856/http://www.mp3ar....
- schemescape 3y agoIs there a link with more info (while we wait for the server to catch up)? Sorry if I missed it! Edit: misread the CPU as a 486 somehow. I was wondering why the clock speed was so low.
- mbbrutman 3y ago486? Nah. 4.77Mhz NEC V20, which is just slightly faster than an 8088. This should tide you over: http://www.brutman.com/PCjr/pcjr_web_server.html http://www.brutman.com/PCjr/pcjr_web_server.html The main page is the best link. You might want to try back later after the initial rush; the machine is getting pounded.
- schemescape 3y agoGot through today. Very impressive work!
- 29athrowaway 3y agoBetter press that Turbo button.
- starkparker 3y agocf. https://fsturmat.net/blog/04202022/ https://fsturmat.net/blog/04202022/ on hosting a site running the same mTCP HTTPserv server under QEMU on a VPS, with SSL via Caddy reverse proxy.
- mbbrutman 3y agohttp://floppy.museum http://floppy.museum also running mTCP HTTPServ, but on 80286 class hardware. (That was featured earlier this year on HN.)
- kristopolous 3y agoYou can also browse this in DOS https://en.m.wikipedia.org/wiki/Arachne_(web_browser) https://en.m.wikipedia.org/wiki/Arachne_(web_browser)
- jwrallie 3y agoThere is some beauty to the fact that even if you wanted to update your software, you can't unless you patch it by yourself, so you know that in a month or a year from now it will be exactly the same way you left it the last time you configured it (apart from the chance the hardware fails or the security by obscurity is breached somehow).
- mbbrutman 3y agoThe machine continues to receive the hug of death .. especially with our friendly Europeans waking up. Have faith, it's still running. (And it's been surviving like this for four hours now.) I've turned down the logging level a little bit and turned off the beeper. On this machine, a 50ms beep on the motherboard buzzer is 50ms of delay. :)
- ndiddy 3y agoI think it's impressive how your site's managed to stay online when many sites hosted on much more powerful hardware haven't been able to handle HN frontpage levels of traffic.
- mbbrutman 3y agoThanks ... I think people are having time-outs so it's not anywhere near close to perfect, but the machine has been running at 100% for five hours or so now and it is not crashing, so I'm happy.
- rightbyte 3y agoThe power of good old static sites. I saw some number of the amount of electrical power going to web servers and it was like single digit percents. The js-web is a huge waste environmentaly and it is sad since js is mostly used to spy and show ads.
- sedatk 3y agoWhat OS signature do you get when you portscan it? :)
- tgv 3y agoI very friendly opened the link, and it is still serving pages. The images are pretty slow to load, though. While reading the page, I thought it was just text, but then suddenly a banner appeared. Great demo of what such a machine can do, and how much we take our 3GHz, 12 core machines for granted. BTW, how do you keep it dust-free?
- Uptrenda 3y agoThat keyboard there was a work of art. I can still remember typing on one as a kid. So responsive, so satisfying, it just compelled you to want to write more. I own a few mechanical keyboards now and none of them compare to the original IBM Model M (I have heard that there are companies making 'new ones' though so maybe I'll have to try one.)
- helf 3y agoI type every day on an IBM model M ps2 keyboard that I have owned for 30 years lol. Currently connected to an i9-13900K system via a ps2 to usb adapter
- anyfoo 3y agoNote that the original PCjr keyboard was notorious for being terrible. One of the major flaws that helped making that system a flop.
- fuzztester 3y agoWhat were the other major flaws?
- einr 3y ago* No standard ISA slots, instead a bulky and expensive ”sidecar” system * Partially incompatible with regular IBM PC software * Max 128K RAM IBM likely did this stuff on purpose to avoid cannibalizing PC sales, but it ended up killing the Jr. Later on Tandy would borrow the PCjr sound and graphics hardware (superior to a normal CGA PC/XT) for a line of more successful personal computers.
- bdowling 3y ago> * Max 128K RAM IBM sold a 128K memory expansion sidecar to bring it to 256K. There is also apparently a way to swap in denser RAM chips to make it 512K (640K total).
- 3y ago
- CodeWriter23 3y ago4.77Mhz on a V20? The whole point of the V20 was running 9.54Mhz.
- anyfoo 3y agoNah, it was also a bit faster at the same frequency.
- mbbrutman 3y agoThere were several speeds of the V20, including the base version at 5Mhz. Using it as a drop-in replacement and keeping the system clock speed the same the NEC V20 would still give you a 15 to 20% performance bump because it used less clock cycles when executing many insgtructions. (This machine has not been altered to speed the clock.)
- charles_f 3y agoSo how do you apply the latest DOS security patches without rebooting?
- mbbrutman 3y agoI'm sure I can go for a few more years until the next patch ... On a more serious note, the web server is the problem here. I've tried to run long periods of time before but eventually it would crash. I finally found a 10+ year old parsing bug that wasn't handling quoting correctly, and it was some sort of crypto coin mining JSON request that tripped the bug. So even what I thought was bullet proof years ago turned out to be broken by changes in the user traffic.
- charles_f 3y agoThis is a priceless anecdote, thanks for sharing!
- 3dbrows 3y agoCould this claim the title of “oldest host on the public internet serving traffic”? At first I thought “~100 days, so what?” - but that was before I knew this was an 8088 managing to hold up to even just the background noise of the modern net (portscans, etc). It’s surviving being slashdotted by HN. Very impressive.
- mbbrutman 3y agoMaybe, with some qualifications. A machine that is powered on but serves almost no traffic would also qualify but not be terribly interesting. I'm just happy it's been surviving the hug of death for 12+ hours now. Given the age and software that might be the true accomplishment.
- K0balt 3y agoThe complexity of operation of 2500 hours at 4.77Mhz, single core, is equivalent to about an hour on a garden variety modern server. In my mind, this stuff is impossibly reliable and should simply not work, but here we are.
- shric 3y agoAre you referring to the CPU used for the site? If so, how did you arrive at one hour? I'd put it closer to a second.
- K0balt 3y agoI was being extremely generous, but you are closer to the reality of the situation. Back of the napkin- assuming 2020 tech, 20 cores, 2.4ghz and ignoring all of the non-cpu complexity growth, it would be around 0.2 seconds lol. If you were to wrap in the actual system complexity *operating frequency we’d probably be around 10ms equivalent complexity. The reliability of modern computing systems is ridiculous.
- bdowling 3y agoSomehow this is even more interesting after reading that OP is a Site Reliability Engineer for Google. http://www.brutman.com/Michael_Brutman_resume.pdf http://www.brutman.com/Michael_Brutman_resume.pdf
- mbbrutman 3y agoSadly the project is mostly unrelated to my day job. I started mTCP at least 6 years before joining Google and at most of my time at Google is spent on much less fun things. On the plus side, when I finally do get around to building a cluster of these and a load balancer I'll know what to do. ;)
- nikau 3y agoIts probably on par with the feature set of googles internal load balancers :P
- nikau 3y agoBefore cattle computing and non stop vulnerabilities, high uptime was a badge of honour. Was not at all uncommon to have heavy use Solaris or Tru64 boxes with 3 years uptime.