ARM Server FAQ
https://wiki.ubuntu.com/ARM Ubuntu wiki info
http://www.ubuntu.com/arm ARM partner page
https://wiki.linaro.org/ChristianReis?action=AttachFile&do=view&target=linuxcon-weird-arm.pdf An interesting take on the Weird World of ARM (featuring Android)
General ARM Server Questions
Q: What is an ARM server?
A: In general, if you know what an x86 server is, an ARM server is essentially the same thing, but with an ARM processor. This is not meant to be flippant; in many discussions with ARM server manufacturers, that really appears to be the ultimate goal.
Q: Why ARM servers at all?
A: ARM servers have come into being because of what the ARM architecture allows you to do with your hardware design, and because of their pervasiveness in the market.
First, ARM has a long-standing history of providing processors that use very little power. When this is the case, you can drive server processor density up and still keep power consumption low. With this greater density, server makers are also seeing opportunities for building very high speed interconnects that allow these processors to share data and cooperate quickly and easily. ARM server makers such as Calxeda can now build computing grids that won't dim the lights in Chicago when you turn them on.
Second, the processors are very low cost and very durable. They have had to be to drive the kinds of numbers ARM reports -- there are roughly 25 billion ARM processors in use in 2011, which works out to about 3.5 processors for every man, woman, and child on the face of the planet. And, the growth in these numbers is accelerating, something easy to see when almost every cell phone has at least one ARM processor in it.
Third, with the Cortex-A9 and Cortex-A15 processors in particular (both ARMv7), the performance differential between ARM processors and x86 is starting to shrink pretty significantly. With the ARMv7-A architecture, ARM processors can start to match x86 processors, feature for feature. When we look into the future and have the full 64-bit support of the coming ARMv8 (or AArch64) processors, the gap in feature set and in performance has the potential to narrow even further, while still retaining the low power usage and low cost heritage of the ARM processor.
Finally, the growth of Linux and open source software provides software costs that can now match the low costs of the processor itself. The incredible growth in Android alone has driven the creation of huge numbers of applications. Since much if not all of this software is open source, one can now provide significant functionality on ARM and still keep the price low. Just as example, consider the Beagleboard project; the entire system costs USD$125, a price point that would be impossible to reach if one also had to pay USD$100 for just the operating system.
The net result of all of these factors is that ARM server manufacturers can now start putting into very low-cost, very dense, and very robust systems the kind of functionality, interconnectivity and compute power that only used to be available in the large scale server class of machines.
Q: What makes ARM servers different from x86 servers?
A: As data centers grow, their power consumption, cooling needs, and just plain physical space require greater and greater capital outlays. We can increase the server density (i.e., the number of servers per cubic meter) in these data centers but the typically used x86 or x86_64 processors simply drive up space, power and cooling costs at that point. With ARM servers, we believe we can achieve not only greater density, but dramatically drive down power and cooling requirements.
There are deeper differences, however. Consider where ARM processors have typically been used. Usually, the processor needs to come up and start working immediately; lengthy boot processes are almost never an option. Further, the devices using the ARM processor are usually very strictly defined, instead of the general purpose x86 devices that could contain any number of an enormous variety of interfaces and peripherals. With these sorts of constraints, it's easy -- and more profitable -- to take some shortcuts or to replace code and structures with minimized implementations of more general purpose software such as the Linux kernel. For example, ARM systems that use UEFI and ACPI are just about non-existent; there's too much overhead and too many complications that slow down boot time and are just plain unnecessary -- why interrogate for the interfaces on a device when you already know exactly what they are? Hence, there are times when tools that are just expected to be present in x86 (IPMI, for example), may or may not be available from any particular ARM vendor.
Another significant difference shows up in the Linux kernel. Many ARM devices started life using some other operating system; there are legions of them in the mobile phone space, for example. As these ARM SoCs moved to Linux, their vendors seldom coordinated their efforts. The result is that each SoC typically requires a unique kernel. With x86 systems, however, you can essentially build a single kernel that can be used on almost any x86 system. This is changing over time, and will eventually be corrected since Linus Torvalds himself has said this sort of mess in his kernel tree has to stop. And, there is significant effort being expended by SoC vendors, ARM, Linaro, Ubuntu and other distributions to fix this problem.
Q: For ARM servers to be successful, don't they need virtualization?
A: It would depend on the definition of successful. Most server farms, and all IaaS for cloud computing do absolutely rely on virtualization. With the ARMv7 ISA on the ARM Cortex-A9 processor, virtualization through LXC works just fine. There are also efforts under way to support Xen and KVM on this processor. With the ARM Cortex-A15 processor, virtualization support becomes even easier. Work is underway there, also. With the advent of the ARMv8 ISA announced at the end of October 2011, a full 64-bit architecture will be available, removing the last significant difference with x86 in providing virtualization support.
Q: Where can I find further technical resources?
A: There are several places:
ARM Holdings: the company that designs and licenses the ARM processor makes an incredible amount of information available at http://www.arm.com. In particular, there are detailed descriptions of all of the various processor designs available.
Linaro: this organization is focused on bringing the best tools and open source software available to Linux on ARM. For now, one can get many of the tools needed to best use ARM at http://www.linaro.org. In the future, Linaro is planning on releasing a set of technical recommendations for ARM servers, oriented towards ISVs, OSVs and OEMs. They hope to cover such topics as:
- For ISVs/OEMs targeting ARM GNU/Linux distributions:
- How to make use of NEON
- ARM vs. Thumb 2
- The hard-float (armhf) ABI -- it's not about performance but about compatibility
- For OSVs/OEMs that need to understand the boot architecture:
- GNU/Linux OS image format
- Network boot recommendations
- Using and supporting UEFI
- For ISVs/OEMs targeting ARM GNU/Linux distributions:
Ubuntu: you can learn more about the first Linux distribution to officially support an ARM server at http://wiki.ubuntu.com/ARM. Details such as which versions of Ubuntu are available and how to use them to get started can be found at this site.
Ubuntu on ARM Questions
Q: Why Ubuntu on ARM?
A: Ubuntu Server 11.10 for ARM was the first time a Linux distribution announced full support of an ARM server. As of this writing, Ubuntu Server 12.04 has not been released, but the publicly visible plans for Ubuntu demonstrate clearly that Ubuntu intends to be the very first Linux distribution to put an enterprise class ARM release out with full long term support (LTS).
Ubuntu has had significant experience with ARM. The ARMv7 Thumb 2 port came out with Ubuntu 10.04 in 2010 and there was a full ARM port a year earlier than that.
Ubuntu provides "multiarch" support, which allows a user to mix binaries from multiple ABIs on the same installation. This will allow a user to install packages and application with apt-get that can be from either the Ubuntu armel ABI repository or the armhf ABI repository currently in progress. In the future, one could also add to those applications any aarch64 applications as they become available.
Ubuntu has also been a leader in cloud-based technologies as one of the first most significant providers of technologies such as OpenStack. Further, we have added innovative cloud-based technologies such as JuJu that make it extraordinarily simple for DevOps to quickly deploy and coordinate new services (such as web servers and data bases) to a cloud. Ubuntu has become the strongest Linux platform on the cloud.
Ubuntu is a key partner of Linaro, the essential source for ARM support of Linux. Significant amounts of work in ARM Linux toolchains, kernels and other tools are exchanged between the two organizations, and significant amounts of work are accomplished via extensive collaboration between the two groups. This provides for a broad and healthy ecosystem for new application development and new software technologies on ARM processors.
Ubuntu also has deep connections to the kind of ecosystem needed to ensure that ARM servers are ultimately successful. It has been certified (on x86) by over 200 ISVs; it is emerging as the Linux of choice for next generation cloud and Big Data workloads; and, it has over 175 certifications on servers from OEMs such as HP, Dell, Lenovo and IBM. The icing on the cake, though, is that Ubuntu leads other distributions enormously as the platform of choice for developers. Making the leap from Ubuntu on x86 to Ubuntu on ARM becomes very simple.
Q: What workloads will ARM Servers with Ubuntu be best suited for?
In the near term, with Cortex-A9 and even Cortex-A15 ARM processors, the architecture is a 32-bit architecture. This of course limits the data sizes that can be accessed by a program at run-time, so these servers probably won't provide optimal performance for memory-intensive applications such as data base servers. And, while floating performance is good, ARM processors may not fare that well with large numeric computations; data size limits may also play a role here. It's important to remember that ARM processors are not typically general-purpose CPUs.
Just the same, what we do see happening is that there are environments where ARM is a perfect fit. In fact, ARM can be a better fit than x86 for some of these because of its low power usage and the kinds of computing grids it is starting to power -- think of highly distributed work that occurs in enormous numbers of small chunks of work. Web servers, for example, fit this sort of model very nicely. You want the web server itself to respond as quickly as possible, and farm out difficult work to other systems that specialize in that work, such as data base engines. Big data applications using tools such as Hadoop, are very similar. No one machine does an enormous amount of work, but it does take a large number of machines. Cloud workloads are also similar -- often, they are small and transitory, but it takes a large number of them to do the work.
We see ARM servers starting to appear -- and be successful -- in these categories:
- Web services
- Web servers
- App interfaces
- Web hosting
- Application servers
- Memcached appliances
- Content delivery
- Off-line analytics
- Search indexing
- Financial modeling
- Storage servers
- Object storage
Swift from OpenStack
Canonical Support of ARM Questions
Q: Why does Canonical think Ubuntu on ARM Servers will be important?
A: The key factors are cost and resource consumption. While in many ways the two are tied together, ARM servers present all of us with the opportunity to "go green" effectively. We will be able to get the server densities we would like to see, and need to continue to grow our businesses, but do so while actually reducing our energy, cooling and space requirements -- at worse, we flatten the demand over time instead of having it continue to grow at the pace it has. The key to this, though, is that less energy, less cooling and less space translates directly to lower operating costs in the data center. Couple that with servers that cost less to purchase, and ARM servers become an increasingly obvious choice. If we now factor in the Ubuntu cost model across tens of thousands -- or more -- of these servers, Customers can afford to buy and maintain the kind of computing power they could only dream of before.
Q: Why Canonical?
A: Canonical is the commercial entity that ensures that the Ubuntu Linux distribution exists, will continue to exist, and will stay free.
Canonical was the driving force in creating Ubuntu Server 11.10 for ARM -- the first time a Linux distribution announced full support of an ARM server. As of this writing, Ubuntu Server 12.04 has not been released, but the publicly visible plans for Ubuntu demonstrate clearly that Ubuntu intends to be the very first Linux distribution to put an enterprise class ARM release out with full long term support (LTS); it is Canonical that will be providing that support for the five years after release.
As the creators of Ubuntu, Canonical has therefore had significant experience with ARM. The ARMv7 Thumb 2 port came out with Ubuntu 10.04 in 2010 and there was a full ARM port a year earlier than that.
Canonical has also been a very close partner with Calxeda, a pioneer in ARM-based grid computing. This has given Canonical -- and hence Ubuntu -- more exposure and testing on such platforms than other distributions might have available to them.
Canonical continues to be a pioneer in cloud-based technologies and is a key supporter and contributor to significant supports of technologies such as OpenStack. Further, Canonical has created and sponsored innovative cloud-based technologies such as JuJu that make it extraordinarily simple for DevOps to quickly deploy and coordinate new services (such as web servers and data bases) to a cloud. Ubuntu has become the strongest Linux platform on the cloud, and Canonical its strongest contributor.
Canonical is also a key partner of Linaro, the essential source for ARM support of Linux. Significant amounts of work in ARM Linux toolchains, kernels and other tools are exchanged between the two organizations, and significant amounts of work are accomplished via extensive collaboration between the two groups. This provides for a broad and healthy ecosystem for new application development and new software technologies on ARM processors.
Finally, the Canonical business model is deeply disruptive, in a manner optimal for the volume of ARM processors being deployed in servers. Canonical and the Ubuntu community develop the Ubuntu Linux distribution, and copies of that distribution will always be free. But, Canonical takes this further by ensuring that security updates and critical bug fixes are also included without charge, for the life of the release. The disruption is that the Canonical revenue stream is based on the idea of charging a fee for services only. For example, Ubuntu Advantage is a packaged set of services including telephone support, on site technical help and management software; there is a fee for this package, but not for Ubuntu. At the same time, Customers are not forced to buy support on machines when deploying Ubuntu. They can elect to only buy support for the servers that truly need it. What this does is make Ubuntu an ideal operating system to deploy in the sort of hyper-scale grids of computers that will be using ARM processors; the initial cost per server remains low, and the cost of support can be carefully managed, instead of having to buy support contracts for every CPU in use.