Cells is the first open-source virtualization architecture that enables multiple virtual smartphones and tablets to run simultaneously on the same physical device. Leveraging lightweight virtualization work done on Linux containers, Cells introduces a new device namespace framework that allows kernel and user space drivers to efficiently multiplex access to hardware. Unlike traditional virtual machine approaches that are too heavyweight for smartphones and tablets, the Cells device namespace framework is lightweight and provides native hardware performance when running multiple virtual phones or tablets. This includes fully accelerated 3D graphics, providing the same visual user experience for graphics-intensive applications that users have come to expect from their mobile devices. Cells transparently runs Android applications at native speed without any modifications, so you can use all your favorite applications from the Google Play store.
Cells has many uses. Multiple, isolated, virtual devices on the same phone can allow business professionals to carry a single phone that contains both corporate and personal phones, providing an efficient, high performance BYOD solution. Application developers can use multiple virtual devices to test different applications and configurations. Cells also gives parents a way to isolate applications and settings in a kid-friendly virtual tablet while simultaneously running a full-featured tablet configured with private email addresses and applications on the same physical tablet.
We invite anyone interested to download, build, and play with Cells. Our open-source release runs on the widely-used Nexus 7 tablet with the latest version of Android, Jelly Bean 4.3. Please follow the links below to see a demo of the system, read about technology behind the system, and download, build, and play with the system. Contributions are welcome.
While Cells is an open source GPL project, it has also been commercially licensed by Cellrox. For further information regarding the commercial release, please contact Cellrox.
We are pleased to release Cells source-code as open-source under the GNU GPLv2.
Instructions on how to download and build can be found here.
Instructions on how to become a registered Cells developer can be found here.
The Cells source code review site is https://cells-source.cs.columbia.edu/.
Smartphones are increasingly ubiquitous, and many users carry multiple phones to accommodate work, personal, and geographic mobility needs. We present Cells, a virtualization architecture for enabling multiple virtual smartphones to run simultaneously on the same physical cellphone in an isolated, secure manner. Cells introduces a usage model of having one foreground virtual phone and multiple background virtual phones. This model enables a new device namespace mechanism and novel device proxies that integrate with lightweight operating system virtualization to multiplex phone hardware across multiple virtual phones while providing native hardware device performance. Cells virtual phone features include fully accelerated 3D graphics, complete power management features, and full telephony functionality with separately assignable telephone numbers and caller ID support. We have implemented a prototype of Cells that supports multiple Android virtual phones on the same phone. Our performance results demonstrate that Cells imposes only modest runtime and memory overhead, works seamlessly across multiple hardware devices including Google Nexus 1 and Nexus S phones, and transparently runs Android applications at native speed without any modifications.
Smartphones are increasingly ubiquitous, and many users carry multiple phones to accommodate work, personal, and geographic mobility needs. We present Cells, a virtualization architecture for enabling multiple virtual smartphones to run simultaneously on the same physical cellphone in an isolated, secure manner. Cells introduces a usage model of having one foreground virtual phone and multiple background virtual phones. This model enables a new device namespace mechanism and novel device proxies that integrate with lightweight operating system virtualization to multiplex phone hardware across multiple virtual phones while providing native hardware device performance. Cells virtual phone features include fully accelerated 3D graphics, complete power management features, and full telephony functionality with separately assignable telephone numbers and caller ID support. We have implemented a prototype of Cells that supports multiple Android virtual phones on the same phone. Our performance results demonstrate that Cells imposes only modest runtime and memory overhead, works seamlessly across multiple hardware devices including Google Nexus 1 and Nexus S phones, and transparently runs Android applications at native speed without any modifications.
As ARM CPUs grow in performance and ubiquity across phones, netbooks, and embedded computers, providing virtualization support for ARM-based devices is increasingly important. We present KVM/ARM, a KVM-based virtualization solution for ARM-based devices that can run virtual machines with nearly unmodified operating systems. Because ARM is not virtualizable, KVM/ARM uses lightweight paravirtualization, a script-based method to automatically modify the source code of an operating system kernel to allow it to run in a virtual machine. Lightweight paravirtualization is architecture specific, but operating system independent. It is minimally intrusive, completely automated, and requires no knowledge or understanding of the guest operating system kernel code. By leveraging KVM, which is an intrinsic part of the Linux kernel, KVM/ARM’s code base can be always kept in line with new kernel releases without additional maintenance costs, and can be easily included in most Linux distributions. We have implemented a KVM/ARM prototype based on the Linux kernel used in Google Android, and demonstrated its ability to successfully run nearly unmodified Linux guest operating systems.
We have created Zap, a novel system for transparent migration of legacy and networked applications. Zap provides a thin virtualization layer on top of the operating system that introduces pods, which are groups of processes that are pro- vided a consistent, virtualized view of the system. This decouples processes in pods from dependencies to the host oper- ating system and other processes on the system. By integrating Zap virtualization with a checkpoint-restart mechanism, Zap can migrate a pod of processes as a unit among machines running independent operating systems without leaving behind any residual state after migration. We have implemented a Zap prototype in Linux that supports transparent mi- gration of unmodified applications without any kernel modifications. We demonstrate that our Linux Zap prototype can provide general-purpose process migration functionality with low overhead. Our experimental results for migrating pods used for running a standard user’s X windows desktop computing environment and for running an Apache web server show that these kinds of pods can be migrated with subsecond checkpoint and restart latencies.
This material is based upon work supported by the National Science Foundation under Grant Number CNS-1162447. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.
Columbia University Department of Computer Science