SmartMachines

Optimized virtual environments for delivering real-time web applications with higher utilization and performance than traditional virtual machines that replicate hardware.
In a traditional network, developers managed the entire server environment, including the hardware (e.g., memory, CPU, storage) and the operating system. For a system to scale horizontally, the operator procured additional hardware. Networks achieved vertical scale through over-provisioning (i.e., operators installed enough hardware to accommodate worst-case, high-traffic scenarios with the excess hardware resources sitting idle during normal traffic periods); multiple machines, wasted resources, and complex management were the result.
Virtual machines, by contrast, allow the abstraction of the hardware and sharing of its resources. If managed correctly, virtual machines can ensure a higher utilization of hardware resources. However, virtual machines cannot provide instantaneous vertical scaling because the hardware resources are still provided in fixed sizes and the developer must still manage multiple machine instances with over-provisioning to achieve horizontal scaling. One of the complicating factors in the horizontal scaling of virtual machines is the time required to boot up an operating system may be on the order of minutes – driving predictive over-provision to maintain performance under unexpected loads. Another disadvantage of virtual machine administration is that developers must also manage the operating system, creating another layer of complexity in application production and stability.
The Joyent SmartMachine differs from traditional and virtual machine architectures primarily in that it goes further in the abstraction of the hardware by presenting the hosted application with access to a pool of resources rather than control of a fixed resource. The SmartMachine has been designed to be very transparent to the underlying operating system, Joyent SmartOS. SmartOS uses this visibility into the SmartMachine to provide all SmartMachines with as-needed access to a large pool of available resources while still providing each SmartMachine with minimum guaranteed access to resources based on a pre-established fair share schedule. This transparency allows SmartOS to identify under-utilized resources and use them to provide enhanced performance. In normal operating conditions, all CPU and memory resources are either directly used by applications or are being used by SmartOS to optimize disk I/O and provide other performance enhancements to the SmartMachines.
The SmartMachine’s light-weight virtualization reduces the need for the developer to manage multiple operating system images. When using a SmartMachine, the developer codes the application and only manages the application logic to enable horizontal scaling. This simplifies traditional hardware or virtual machine based architectures, where the developer must also create and manage multiple abstractions of physical servers loaded with an operating system and other software. Pooled hardware allows for easy and dynamic vertical scaling as well. As a result, developers may concentrate on application production rather than abstraction layers, operating systems, or virtual machine resources.
Because the SmartMachine is built on SmartOS, it incorporates the following core features:
Resource Bursting
SmartMachines have the ability to tap the expanded pool of CPU, memory, and network bandwidth through the SmartOS, providing needed capacity during bursts of activity or usage. SmartOS also supports more CPU cores and a larger memory footprint than other virtualization operating systems. So, the resource pools will grow larger as underlying hardware is improved.
Flexible Configuration
SmartMachines come pre-loaded with a variety of popular software environments including a vanilla Unix installation (e.g., SmartOS), development platforms (e.g., PHP, Python, Java, Ruby), databases (e.g., MySQL, Riak), load balancers (e.g., Zeus), and more. Since data centers may require variable hardware configurations, SmartOS supports KVM virtual machines to accommodate any legacy operating system in addition to the native SmartMachine.
Enhanced Application Performance
Joyent Unix provides a system-wide RAM cache for all disk I/O to significantly improve read and write performance of applications. Within a resource pool, any CPU and memory that is not directly utilized for application business logic is dedicated to providing improved performance. This approach of drawing on idle resources and providing them directly to applications is unique to Joyent.
Integrated Security
The SmartOS also adds additional security and stability to the SmartMachine application environment. Per machine administration is performed as a root user with no ability to manipulate the operating system kernel. SmartOS isolates memory, network, and processor isolation as well as blocks network reconfiguration and traffic sniffing to even keep public cloud applications completely segregated from one another.
Comprehension
SmartMachines allow the operator the maximum in introspection and deployment flexibility. The service provider and its customer have access to more than 4,000 telemetric points of introspection that include I/O, network, PHP performance, MySQL query latency – anything and everything that could adversely affect customer satisfaction. Service providers can utilize Joyent’s proactive, predictive technology to maximize per square foot profitability of services delivered on SmartMachines.