CTSS was the predecessor to Multics. It ran on a modified IBM 7094, with 32K of memory for the supervisor, and 32K for all the users. (That's 32768 36-bit words. Nobody'd heard of bytes then.) This machine, one of the most powerful computers in the world in 1965, could support 30 timesharing users. Add more and system response got unbearably slow. At first, 30 seemed like a lot, but as the system became popular, we soon ran out of capacity, and had to develop elaborate rationing schemes. So when MIT people heard we were designing a successor to CTSS, they naturally asked, "How many users will it support?"
Well, the new machine, the GE-645, was twice as fast as the 7094; and there would be two CPUs instead of one; and the software, we reckoned, would be twice as efficient. And two times two times two is ten, (:-) so we'd reply, "Three hundred users." And they'd say, "Ooo, gosh, that'll be wonderful."
This kind of arithmetic got us in trouble later. People remembered our promises and were disgusted to discover that we could only support about 30 users per CPU. One thing that happened in the meantime was the invention of PL/I, Emacs, and other wonderful tools that enabled a single user to use more resources in a minute than whole teams used to use in a week. I once theorized that thirty users per CPU is a natural constant, independent of CPU speed: faster CPU encourages more usage that cancels out the new speed. (That was before bitmap displays and C++. Now we think in CPUs per user.)
But when Multics first came up in 1967, things were even worse, because we were off by a factor of about a thousand. Instead of supporting 300 users, Multics couldn't even support a third of a user. The system took 55 minutes to bootload; and that was after significant performance tuning. Paging was one problem: the system thrashed violently and continually, and the mechanisms for handling page faults had such generality and so many options that the table maintenance was a major bottleneck. For example, the 645 hardware supported two page sizes: 64 words and 1024 words. All the memory mapping structures and allocation pools had to account for the size of a segment's pages.
Almost all the performance improvements that we made came from simplification and streamlining of the initial design. We made everything large pages, ripped out options and algorithms, and supported 25 to 30 users per CPU on the GE-645 by 1969, when MIT users actually started using it.
05/03/93, updated 11/08/94