Skip to end of metadata
Go to start of metadata

A drawback of multi-tenancy in classic Solaris is that, where storage is shared, a single application on a system can monopolize access to local storage by a stream of synchronous I/O requests, effectively blocking the system from servicing I/O requests from other zones and applications, and causing performance slowdowns for other tenants.

In SmartOS, we've added a feature to track I/O, and throttle it from misbehaving zones by adding a small delay to each read or write, thus ensuring that other zones also get a turn at reading/writing to disk. This is an operator-configurable setting, see below.

Disk I/O throttling only comes into effect when a system is under load from multiple tenants. When a system is relatively quiet, a single tenant can enjoy faster I/O without bothering the neighbors.

A detailed overview of the I/O throttle is available here.

I/O priority

Each zone has an I/O priority which determines its priority relative to other zones. Unlike RAM and CPU shares, which correspond to a finite resource, the I/O priorities are all relative, so three zones with priorities (200, 200, 100) will elicit the same behavior as three zones with priorities (100, 100, 50).

If priority is not explicitly set for a zone, it gets the default priority (1).

It can be set via zonecfg:

or get/set using prctl:

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
  1. Nov 02, 2011

    Is there a way to use I/O throttling for the ZFS volumes/filesystem, such that it can throttle VMs that are KVM based rather than OS virtualization based? 

    1. Dec 02, 2012

      Obviously, you run KVM virtual machines, under Solaris zones.

      And as they are inside Zone, they get benefits of it, (they get no overhead for being inside the zone).

      It is how Joyent's cloud in working actually.