Sadly, Linux has become old, fat, and slow. After two decades of overindulgence, the once-lean OS has gained some ugly pounds of cruft.
Linux may not be the most overweight server OS out there, but it does take up more resources than it used to. According to the Linux Foundation's 2014 Enterprise End User Report, 75% of enterprise cloud platforms are Linux. Since millions of cloud computing services are powered by Linux, that's a lot of extra resources consumed.
Do we really need to use an all-singing OS like Linux — one that requires an overloaded kernel and thousands of supporting files? Isn't there a lighter, faster, and more secure way of providing business value?
The Linux Swiss army knife
Linux server distributions such as Ubuntu Server, Red Hat Enterprise Linux, and SUSE Linux Enterprise are multi-purpose Swiss army knives. It's the flexibility of these Linux distros that make them the best choice for many cloud computing jobs. Making Linux flexible is also what's making it so fat.
The Linux OS contains many layers of complexity and abstraction. Drivers hide hardware, shells provide CLIs, containers isolate applications, and bytecode virtual machines interpret code. A basic installation may have 100 processes and 10,000 files; many of these can be safely stripped out, if the administrator has the specialist knowledge required to spot the excess baggage.
Libraries, interpreters, and runtimes for many popular programming languages are included in the OS. Many system administration scripts require Bash, Perl, Ruby, and Python interpreters, so these are all included too.
In addition to supporting all the latest toys, Linux is able to work with old hardware, follow dead protocols, and comply with obsolete standards. The typical cloud-based Linux server uses one type of storage. It doesn't need extra helpings of CD, DVD, IDE, SATA, SCSI, and USB drivers, but there they are.
Administering a heavy OS with a lot of moving parts is hard work.
- Cloud computing bills are high.
- Security holes are hard to find.
- Shoehorning Linux into embedded devices is difficult.
Logic suggests that these problems would disappear if the OS was more lightweight. How does a cloud machine shed those extra pounds?
Is the future skinny Linux, or low-level programming, or unikernels?
One obvious solution to Linux obesity is to put the OS on a diet. This is the approach the CoreOS crew takes. They recompile the Linux kernel to remove modules and weed out applications, with the exception of a few server tools. Project Atomic is doing something similar for the Fedora 21 Cloud release.
Another option is to go retro. Abandon all those abstraction layers in Linux and return to the low-level programming languages of yesteryear. Writing assembly code leads to fast and compact applications. Satellite programmers working at NASA are at one with their computer processors and love writing for an assembler. However, don't expect any retro fashion craze to sweep through cloud computing — the IT industry is not nostalgic for the 1950s. Most programmers love their high-level languages and don't want to get down and dirty with opcode and operands.
Instead of rewinding to the past, how about fast-forwarding to the future? Unikernels and rump kernels are new approaches to the OS. A unikernel puts system building blocks into a library of modules, and these are compiled in with the application to form one tiny all-in-one blob that runs on Xen. A rump kernel achieves a similar result using a stripped-down version of NetBSD.
No diet in the near future for Linux
Even though Linux is heavy and wasteful, the enterprise won't be moving on to a slimmer model. Linux is being used like an emulation layer to make applications portable. If the enterprise web server, application server, and database server can run on Linux on the organization's data center, these servers can be copied to Linux machines in AWS, Google, or Azure.
Enterprises run their services on Linux, so cloud providers make sure all the major Linux distros are available for their virtual machines. Linux is the overweight king of cloud and will be for years to come.
Also see: TechRepublic writer Jack Wallen's rebuttal to this column, Linux bloated? Think again.
Nick Hardiman builds and maintains the infrastructure required to run Internet services. Nick deals with the lower layers of the Internet - the machines, networks, operating systems, and applications. Nick's job stops there, and he hands over to the designers and developers who build the top layer that customers use.