The rumors have been running around for years, and they turned out to be true. Microsoft, the world’s largest operating system supplier and still the dominant seller of systems software for the datacenter, has indeed been working for years on a port of its Windows Server 2016 operating system to the ARM server chip architecture.
The rumors about Windows Server on ARM started in earnest back in October 2014, which just before Qualcomm threw its hat into the ARM server ring and when Cavium and Applied Micro were in the market and starting to plan the generation of chips that will appear later this year. This is not precisely a coincidence, but it is only because those ARM server chip makers have advanced their technologies that Microsoft can even consider putting workloads on an ARM server.
We have said time and again that the hyperscalers that provide services to consumers and companies alike are the best places for a new server architecture to try to break into the market because they buy machinery in high volume – something that ARM chip makers, AMD with its Opterons, and IBM with its Power8 and Power9 chips crave – and they own their own software stacks, by and large, and often including their own variants of Linux operating systems. Microsoft is a special case among the biggest of the big in that it is a cloud provider (meaning it sells raw and semi-cooked infrastructure services), a hyperscaler (in that it offers software services aimed at very large number of consumers and corporates), and a provider of commercial operating systems (used by people and companies as well). After it created variants of the Windows operating system aimed at ARM-based Surface laptops and tablets – called Windows RT – it would not be that big of a jump to use that same kernel to run Windows Server.
The wonder is that it took this long, but Microsoft, like every other corporation, is not interested in doing science projects but in doing things that bring it competitive advantage. We have also said that using ARM-based servers running is the best way for Microsoft to test out the feasibility of using such technology in production, and hilariously, for many of the services it deploys (as is the case with other hyperscalers) we would be none the wiser if it changed from Xeon servers to Power or ARM or whatever servers. The whole point of hyperscalers is that the programmers should not care, only the hardware engineers should.
Everyone is excited, of course, about the revelation at the Open Compute Project Summit in Silicon Valley this week that there is indeed a variant of Windows Server running on ARM servers. And Microsoft is, too. But the company also wants to curb our enthusiasm out here in the broader IT market and is making it clear that, for now, only Microsoft is getting to use the ARM variant of Windows Server, and it is only being used to test its own applications that run on its own Azure infrastructure.
“We have been working with multiple partners, including Cavium and Qualcomm, and they are all running the same Windows Server version,” Leendert van Doorn, distinguished engineer for the Azure cloud at Microsoft, tells The Next Platform. “But this is for internal use only, and that is an important bit, because we see an opportunity for these class of devices for our own datacenter use, but we don’t really see much traction on the enterprise side. We have no plans at this point to produce an enterprise version of Windows Server on ARM.”
As our colleague over at The Register, Chris Williams, learned from van Doorn, the Windows is now being developed as a single code base for client and server devices, called OneCore, which not only is used to target those two classes of devices, but now also X86 and ARM processors. This code is the same for the two ARM chips that Microsoft is itself supporting in its Project Olympus platforms unveiled this week at the OCP Summit, including the Centriq 2400 from Qualcomm and the ThunderX2 from Cavium, and we presume their predecessors, in the case of Qualcomm a development kit hardware based on an earlier core design and for Cavium the ThunderX processor that it currently sells. Because of the standardization within the ARM community and because a lot of cruft simply does not exist in this relatively new platform, it seems like the port from X86 to ARM for Windows was a lot easier than many of us might think.
No one said how Microsoft was planning to tune the ARM version of Windows Server, or how much tuning it already does on the X86 version and its myriad Xeon and Xeon Phi processors from Intel and, soon again, AMD with its “Naples” Zen processors.
According to van Doorn, the ARM variant of Windows Server – which Microsoft’s PR team said should not be called Windows Server 2016 because that implies it is a supported version but which we presume is the case anyway because Microsoft would not take the Windows Server 2012 kernel and port that to ARM – is not based on the full Windows Server or the Nano Server minimalist variant of Windows Server, but rather the Server Core variant, and only those features necessary for the datacenter.
“We reduced the scope a lot because we don’t need to use a fax driver in the datacenter,” van Doorn says with a laugh. “We used Server Core because we needed a bigger API footprint for the applications.”
The jobs that Microsoft expected to run on ARM servers (as well as X86 servers) include search engines and other kinds of indexing like that done by the Bing service, web serving, high performance storage, machine learning and data analytics, database services, and higher-level platform services on Azure. These workloads represent more than 50 percent of the datacenter capacity for the Azure infrastructure, which is used by Microsoft internally as well as externally on the Azure public cloud. With well over a million servers, this is a tremendous amount of total addressable workload within Microsoft. And that has to be pretty pleasing to Cavium and Qualcomm, which are lining up to take a bite out of it.
To create the ARM distro, Microsoft grabbed Server Core and stripped out the stupid stuff and then added in .NET Core plus the tools, compilers, debuggers, and libraries used by its own programmers to create the applications that comprise Microsoft’s own for-sale services. “Since most of our own code is actually written in C#, the Common Language Runtime is the key component that we moved,” he says. The ARM variant of Windows Server is not being used in production, but test machines are running in the labs and in some cases side-by-side next to production machines, executing the same workloads so they can be evaluated with real-world data comparing X86 and ARM gear. Van Doorn says that Microsoft is working with ARM server chip partners not just on current parts, but is trying to give them input in the next two generations so the processors and other components that wrap around them are further optimized to run Microsoft’s code – something it has been doing with Intel for a very long time, and that we expect it will be doing with AMD going forward, too.
“What we are seeing is actually quite compelling to us, and knowing where their roadmaps are going, things are getting even more exciting,” says van Doorn. “Do we have plans to deploy this? That’s why we are running them.”
For those of us who use various Microsoft services that are hosted on the Azure infrastructure, the idea is that the fact that it is running on ARM rather than X86 iron should and will be utterly invisible to us and, for the most part, even Microsoft’s own developers. The processors are sitting deep behind the API stack, transparent.
At the moment, Microsoft is not planning to sell raw compute capacity based on the ARM iron on its Azure VM infrastructure services, but if there is a market for it, van Doorn says that Microsoft will consider it.
While there is perhaps pent up demand for Windows Server on alternative platforms, the fact of the matter is that the share of systems running Windows Server is not growing anywhere as fast as that for commercial grade Linux; Microsoft is really the only big public cloud and hyperscaler that is based on Windows Server rather than Linux. A decade ago, for new X86 systems, Linux might have been 15 percent of shipments compared to 85 percent for Windows Server, but now, after steady declines, the ratio is more like 30 percent Linux and 70 percent Windows Server in 2015 and soon it will fall by another 10 percent in favor of Linux. Linux has been the only growing operating system platform for a very long time.
That said, there are tens of millions of companies worldwide with Windows Server machines running all or part of their businesses, and there are hundreds of thousands of applications that run on it, and while not all of those applications can make the jump to ARM iron, those that are coded in Java or C# or modern interpreted languages like Python or PHP or Ruby can make the jump fairly easily. Certainly new applications can be coded to run on Windows Server and target either ARM or X86 instruction sets, and perhaps Microsoft would be wise to let its customers sort out what iron they want once it gets a little more experience with ARM iron. Should ARM iron have a sustained advantage over X86 iron, we think this will come to pass, particularly among the 50,000 large enterprises, governments, and academic centers that, in the aggregate, buy as much gear as the hyperscalers and cloud builders as well as the SMBs who make up the other third of the market with their onesies and twosies of systems.
Supporting ARM chips is not just about Microsoft pulling a stunt to get some open source hardware cred for a proprietary Windows Server platform. But the company has to take a measured approach. Particularly if there are those inside of the company who are really thinking that maybe Microsoft needs to do a Linux variant of its own, with a Windows interface that people know and love, and really shake things up. That is the other option to supporting multiple ISAs. Supporting ARM chips is easier, we think.