Veteran Microsoft engineer says original Task Manager was only 80KB so it could run smoothly on 90s computers — original utility used a smart technique to determine whether it was the only running instance

Dave Plummer showing the original Windows Task Manager
(Image credit: Dave's Garage/YouTube)

Dave Plummer, the engineer behind many of Windows iconic features like ZIP file support, shared how he built the Task Manager to be so efficient. According to his YouTube video, the current Windows Task Manager is about 4MB, but the original version that he built was just 80K. Plummer’s main concern when he built the Windows utility was that hardware during that time was so limited, and that the tool that was used to recover the PC after everything had failed still needs to feel crisp and responsive, even if everything else had hung.

“Every line has a cost; every allocation can leave footprints. Every dependency is a roommate that eats your food and never pays rent,” said Plummer. “And so, when I ended up writing Task Manager, I didn’t approach it like a modern utility where you start with a framework, add nine layers of comfort, six layers of futureproofing, and then act surprised when the thing eats 800MBs and a motivational speech to display just a few numbers.”

One of Plummer’s favorite features on the Task Manager is how it handles startup. Unlike other apps that just check if another instance of the app is already running and activates it if there’s already one, this Windows tool goes one step further. It checks if the already existing instance, if there is one, is not frozen by sending it a private message and waiting for a reply. If it gets a positive response, then it’s a sign that the other Task Manager instance is fine and dandy, but if all it gets is silence, then it assumes that the other instance is also lost and would launch to help get you out of a rut.

Latest Videos From

Another thing that the engineer did was to load frequently used strings into globals once instead of fetching them over and over again, while rare functionalities, like ejecting a docked PC, are only loaded when needed. The process tree also saves resources by asking the kernel for the entire process table instead of querying programs one by one. This removes numerous API calls, and if its buffer is too small, it would resize the buffer and try again. Plummer also shared several tips and tricks that he used to ensure that Windows Task Manager did not take on more resources than necessary, allowing it to run smoothly on the limited computing power available at that time, even on systems that were already facing issues.

The processing and resource limitations of 90s computers forced Plummer to make the Windows Task Manager as lean as possible. “Task Manager came from a very different mindset. It came from a world where a page fault was something you felt, where low memory conditions had a weird smell, where if you made the wrong thing redraw too often, you could practically hear the guys in the offices moaning,” he said. “And while I absolutely do not want to go back to that old hardware, I do wish we had carried more of that taste. Not the suffering, the taste, the instinct to batch work, to cache the right things, to skip invisible work, to diff before repainting, to ask the kernel once instead of a hundred times, to load rare data rarely, to be suspicious of convenience when convenience sends a bill to the user.”

Google Preferred Source

Follow Tom's Hardware on Google News, or add us as a preferred source, to get our latest news, analysis, & reviews in your feeds.

Jowi Morales
Contributing Writer

Jowi Morales is a tech enthusiast with years of experience working in the industry. He’s been writing with several tech publications since 2021, where he’s been interested in tech hardware and consumer electronics.

  • Sam Hobbs
    40 years ago I was amazed when I was told my employer had a PC with 16 MB (not GB) of memory. Back then mainframes were the powerful systems that big companies used and none of them had 16 MB of main memory, none that I knew of. And the mainframe systems could support multiple users (using VM, CICS, TSO and other utilities) using dumb terminals.

    As for checking if another instance of the app is already running and activating it if there’s already one, if an application were to to send arguments to another instance then that would be much the same as checking to ensure that the other instance is working.

    I might misunderstand load frequently used strings into globals but that sounds like something that the C compiler and runtime do normally.

    As for only loading functionalities when needed, that sounds like the LoadLibrary function for DLLs. If so then that was not as unusual as the article indicates.
    Reply
  • rooted
    I really like Dave and from what I've seen of him he's a good developer but man let it go, so he wrote task manager.

    It's not like it was a unique application. Top is older, faster, and small.
    Reply
  • Caltor
    Admin said:
    Dave Plummer used several clever techniques to ensure that Windows Task Manager will always run while cutting the performance hit on your hardware when when it's opened.

    Veteran Microsoft engineer says original Task Manager was only 80KB so it could run smoothly on 90s computers — original utility used a smart techn... : Read more
    I miss the days when developers knew how to write software
    Reply
  • gnyff
    Caltor said:
    I miss the days when developers knew how to write software
    Me too!
    Without any real insight (!) I blame both object oriented programming, lack of hardware insight and "don't care about performance" attitude.
    My quick fix for the developers (beside education) would be:
    1) No software developer should (only) be using bleeding edge hardware!
    2) If at all possible, they should be forced to use their own software - and so should their family/friends... (This would also make some of the UX problems disappear rather quickly! It's typically faster "making it right" than supporting multiple generations of friends and family ;-)

    A special shout-out to ACDSee that over the years perfected the bad programming to a degree that they've managed to seriously slow down the performance and start-up times of their (once great!) viewer software ("Photo Studio") to a degree that not even fast NVMe SSDs, excessive RAM amounts and multi-Ghz multi-core CPUs can stop it from beeing slooooooooooow! ;-)
    Reply
  • mitch074
    gnyff said:
    Me too!
    Without any real insight (!) I blame both object oriented programming, lack of hardware insight and "don't care about performance" attitude.
    My quick fix for the developers (beside education) would be:
    1) No software developer should (only) be using bleeding edge hardware!
    2) If at all possible, they should be forced to use their own software - and so should their family/friends... (This would also make some of the UX problems disappear rather quickly! It's typically faster "making it right" than supporting multiple generations of friends and family ;-)

    A special shout-out to ACDSee that over the years perfected the bad programming to a degree that they've managed to seriously slow down the performance and start-up times of their (once great!) viewer software ("Photo Studio") to a degree that not even fast NVMe SSDs, excessive RAM amounts and multi-Ghz multi-core CPUs can stop it from beeing slooooooooooow! ;-)
    "if it crashes a 1 GHz dual core with 1 Gb of RAM available, no 3D acceleration and a network with random 4 seconds of latency and 6 KBps network access, then something is very wrong". Why so little ? Because that's an older entry level smartphone that's still in use today, and while it's very slow, NOTHING should crash on it.
    Reply
  • Darkbreed
    Sam Hobbs said:
    40 years ago I was amazed when I was told my employer had a PC with 16 MB (not GB) of memory. Back then mainframes were the powerful systems that big companies used and none of them had 16 MB of main memory, none that I knew of. And the mainframe systems could support multiple users (using VM, CICS, TSO and other utilities) using dumb terminals.

    As for checking if another instance of the app is already running and activating it if there’s already one, if an application were to to send arguments to another instance then that would be much the same as checking to ensure that the other instance is working.

    I might misunderstand load frequently used strings into globals but that sounds like something that the C compiler and runtime do normally.

    As for only loading functionalities when needed, that sounds like the LoadLibrary function for DLLs. If so then that was not as unusual as the article indicates.
    I can’t speak for him but it sounds like he is saying that developers over the past decade or few create such poorly written code that they make these super computers we carry around crawl. Why because they don’t know how to program, they know how to make calls to runtimes or other tools usually by dragging boxes around the screen and setting parameters. That is not programming and they seem to just assume it will work because it worked on their fancy development system so they test nothing. Been in IT for 50 years, most of it management and I have had to totally rewrite several programs because no one could make sense of the undocumented cloud mess that was left. Also this article is about PCs not mainframes 🤷🏾‍♂️but good whatabout, not really. Another tragic sign of our times. Maybe it’s time to stop letting things go, stop simply doing what they are told verbatim and idk, think! 🤔 imma say it. Babysitting these weak minded, fragile, grown ass children was exhausting. Anyway, I will be dead soon and all of this will be in Chinese sooner than later I think. So disregard everything I said and go back to your nitpicking, misdirecting ways. And Dave, you did a most excellent job my dude.
    Reply
  • usertests
    gnyff said:
    1) No software developer should (only) be using bleeding edge hardware!
    Everyone should be forced to target the Core i5-6400T. Or maybe Atom x5-Z8300 as a hard mode.
    Reply
  • sftwn
    Friendly heads-up for anyone reading: Dave has real Microsoft history, but his storytelling tends to get embellished. Worth noting that after leaving Microsoft he ran SoftwareOnline.com, which settled with the Washington State Attorney General in 2006. He and the company admitted to violations of the state Consumer Protection Act, including false 'your computer is at risk' claims to sell products like InternetShield and Registry Cleaner, plus deceptive billing. The WA AG's press release is still online if you want to read it directly. Not trying to dunk on the guy, just suggesting people verify his claims rather than take them at face value.
    Reply
  • ArcadianR
    What do you mean by 80 Kelvin bytes ?
    Reply
  • AndrewH007
    Well, this tool never showed correct CPU utilization per process, based on general CPU performance
    Reply