Importance of Placement Groups along with Enhanced Networking – AWS
Cloud Computing is a wonderful yet mysterious thing to a lot of people, yet to people that are enthusiasts and passionate about what they do they always strive to get a little bit more out of what is offered to them. If it’s with your car you look for ways to make it faster or handle better than stock, or with your desktop you figure out how to overclock the CPU to get better performance out of it. Well, with cloud computing this is no different. AWS (Amazon Web Services) offers a wide variety of instance types to suit your cloud computing needs. Ranging from high CPU to high memory, max network throughput or max disk through put.
I have touched briefly in the past on choosing instance types and the max network throughput you can achieve for both Network and EBS (Storage) iOPS in order to provide a best effort service agreement for its customers and their cloud computing needs.
At the time of this writing there are 11 instance family types that support Enhanced Networking. They are M4, C4, Cr1, R3, X1, D2, HI1, HS1, I2, CG1, and G2. Now what exactly is enhanced networking?
Enhanced networking is a setting that you can use to move your instance from the standard network backbone to the 10GB/s (AWS Internal Network) and 5GB/s (Internet Bound External Network).
Typically, in order to do this, you will need to verify what network driver is running on your instance first, stop the instance and then enable it using the AWS Console and then start it up. However, there are 2 things I want to point out in my learning curve that is not very well pointed out:
- Once you enable Enhanced Networking for an instance – you cannot turn it off
- If the network driver is old / not supported and you enable Enhanced Networking – your instance could become unreachable by any means and will require you to terminate / move EBS volumes to another instance.
However, if you use Redhat Enterprise, AWS backed image etc, usually Enhanced networking is baked into the AMI that you are launching and there is no user intervention that is required. Note: the only way to verify enhanced networking on a Linux backed instance would be to run the following command and make sure network is set to 10GB/s or to contact AWS for verification:
sudo modinfo ixgbevf
Now onto Placement groups:
Ok, so you are probably wondering “What are placement groups – This is why I originally came here!”.
Placement groups are a way to group specific instances / computers close by (best effort) in a specific Availability Zone (AZ) in order to reduce the number of switches and hops to communicate with each other. Creating a Placement group, enabling Enhanced Networking and choosing the right instance type will put you on the path to yield the highest performance out of your cloud computing system. In speaking with AWS utilizing the 10GB backbone and with Placement groups you can see ~8.5GB/s throughput vs ~6.5GB/s throughput without using placement groups! ~2GB/s is a pretty big performance gain! When launching a new placement group, it is important to keep them all within the same family size and to launch them at the same time. This will give you the highest probability that the instances will be located close to each other and not scattered across the AZ data center. Below is a screenshot on how to do this manually. This can also be done using the API’s and also CloudFormation as well.
Now there are some things to take into consider with Placement Groups:
- Multiple Placement groups cannot be combined
- Placement groups cannot span across multiple AZ’s
- Best practice is to launch all instances within the same Instance Family together
- If you need to stop / start a instance, its best to stop All instances in the placement group so they get started in the same area of the data center.
- If you stop a single instance – there may not be enough capacity in that section and may get moved to a farther location then the rest of your instances.
- Cluster instances deployed in a placement group allow for low latency and full bisection of the 10Gbps bandwidth.
With the knowledge of Instance types, Enhanced Networking and Placement groups you can squeeze out the most performance out of your AWS Cloud computing architecture. Whether you are running a Big Data solution, need multiple nodes to handle your business capacity needs you will be better equipped to do more with less and help lower overall costs within your AWS environment.
Placement Groups -https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html