Monday, April 8, 2013

Part 2: Understanding Amazon Elastic Block Store - Standard EBS Volumes

Types of EBS Volumes:

EBS volumes can currently be classified into two types namely: Standard EBS Volumes & Provisioned IOPS Volumes

Standard EBS Volumes
Standard EBS Volumes were the first generation of block storage volumes introduced by AWS couple of years back. They operate in a typical AWS Multi-tenant model, where multiple clients mount volumes from a shared SAN backend in Availability Zone scope. Essentially when I mean shared there are two important things to note here, one is the connectivity (NW bandwidth) between EC2 instance and EBS and second is the IOPS on the disk. In a shared resource model a busy client can slow down other clients that share the same EBS backend.  In case there are no noisy neighbors you are lucky to enjoy very good IOPS at very low cost in this standard volumes model. The Standard EBS volumes are internally copied to multiple disks and you will get higher throughput (at times with higher variance in measurements). Standard volumes deliver approximately 100 IOPS on average with burst capability on a best effort basis up to hundreds of IOPS (depending upon disk size provisioned and your noisy neighbors). One common performance technique followed by experienced AWS Cloud architects is to allocate a 1TB volume (max size) which reduces the amount of multi-tenant sharing between the clients and gives you a better consistency with EBS. When you combine this 1 TB volume logic with High IO Capacity EC2 instances (Example Quadruple or High IO/CPU EC2 etc) you get better NW bandwidth between EC2 and EBS as well. This is not an always guaranteed technique, but I have observed better performance most of the times using this approach in many Amazon EC2 regions. On the negative side you might not need 1 TB capacity and could be wasting space and there by usage cost.  Standard EBS volumes are usually suitable for applications only with moderate or bursty I/O requirements.  AWS customers had been using them for RDBMS, NoSQL etc till sometime back because of limited options available and many are still using now because lack of knowledge in AWS infra. Some guidelines/best practices for standard EBS Volumes users are:
  • All layers of the application stack will not demand heavy and consistent IO in a larger web scale application; Secondly EBS PIOPS is costlier than standard EBS volumes. Taking both the points into consideration, I usually recommended to mix-match your tiers with standard EBS volumes and other storage options to get better overall cost efficiency and performance.
  • Standard volumes are also well suited for use as boot volumes, where the burst I/O capability provides fast instance start-up times
  • Standard EBS volumes are better performers in comparison to PIOPS volumes for sequential operations. Workloads like OLAP databases, Reporting stores or Hadoop processing which are more sequential, bursty and follows batch-oriented pattern are a better fit
  • Understanding of storage, blocks, IOPS, Caching, Latency, Bandwidth etc is complicated subject when combined with cloud for developers. I recommend proper benchmarking of your setup with tools like sysbench, FIO, SQLIO etc and frequent observation of the setup for a period of time, till it satisfies your performance.

No comments:

Need Consulting help ?


Email *

Message *

All posts, comments, views expressed in this blog are my own and does not represent the positions or views of my past, present or future employers. The intention of this blog is to share my experience and views. Content is subject to change without any notice. While I would do my best to quote the original author or copyright owners wherever I reference them, if you find any of the content / images violating copyright, please let me know and I will act upon it immediately. Lastly, I encourage you to share the content of this blog in general with other online communities for non-commercial and educational purposes.