On 24-Sep-2012, at 6:02 AM, Ivan Rodriguez <[email protected]> wrote:

> Dear Cloudstack users,
> 
> We have several servers provisioning vm's through cloudstack, our primary
> storage is coming from a NFS mount point,  we have some high demanding and
> important vm's  and some which are not that important but do lots of writes
> to the disk, since all the vm's are competing for access to the NFS disk,
> one vm can affect the speed of the whole setup, I know cloudstack can
> manage network speed shaping, but I haven't found a way to do network
> storage speed quota or something like that do you guys know if this is
> something that we can do inside cloudstack ?

AWS provides a "Provisioned IOPS" feature for their storage offerings. This 
allows for predictable IO performance to the instances.

http://aws.amazon.com/about-aws/whats-new/2012/07/31/announcing-provisioned-iops-for-amazon-ebs/

NFS by itself cannot do much to guarantee predictable performance. A simple 
network rate limit can control overall throughput but cannot prevent a tenant 
from performing massive number of small IO operations on their virtual disk 
like what a database would usually do. End of the day, NFS does not do multi 
tenancy very well.

I am guessing that an AWS style "Provisioned IOPS" like "feature" can be 
implemented by having a storage layer that understands multi tenancy and 
natively provides an API to limit/guarantee raw read/write IO operations on a 
per file/object/directory basis. Basically, a storage layer that does QoS on a 
wide range of factors. Cloudstack can then use these native APIs to set the 
desired PIOPS while provisioning instances using a plugin connector.

Xenserver seems to allow for I/O priority QoS on the virtual disk. I am not 
sure if this is possible for NFS. The doc seems to suggest that its for 
multiple hosts accessing the same LUN.

http://support.citrix.com/servlet/KbServlet/download/28751-102-673823/XenServer-6.0.0-reference.pdf

A workaround would be to have multiple PODs having different QoS 
characteristics - low IO, medium IO, high IO and a very high IO PODs. Each POD 
can use a different primary storage with desired IO characteristics or maybe a 
shared primary storage with QoS features enabled.

Am hoping others can share their experiences handling performance expectations 
in a multi tenant cloud using shared storage. Its a very interesting problem to 
solve as clouds in general are notorious for their IO performances.

Hth.

--  
Shanker Balan
@shankerbalan

Reply via email to