Performance of Porticor-Encrypted EBS Disks
We ran a large number of measurements to determine the performance of EBS disks, when used stand-alone and when use with a Porticor appliance. This article details our methodology and results. Please see the last section for conclusions.
In all cases, the client machine was an EBS-optimized m1.large instance running Windows Server 2012. Attached to the instance were 12 disks: one regular EBS disk and one "io1" EBS disk (set to 4000 IOPS) for each of the following:
- Local disk attached directly to the instance.
- The disk is attached to a Porticor appliance running on an m1.small instance.
- Same, Porticor runs on m1.medium.
- Same, Porticor runs on m1.large.
- The disk is attached to a Porticor appliance running on an EBS-optimized m1.large instance.
- Same, Porticor runs on an EBS-optimized m1.xlarge.
Sqlio is a very popular benchmark, freely available from Microsoft.
The benchmark was performed using the following flags:
-s180 = 180 seconds duration
-BH = Hardware controller buffering
-LS = Show latencies from system timer
-t8 -o8 = Use 8 simultaneous threads with 8 outstanding requests on each
-frandom (or sequential) = Different test scenarios
-b8 (or 64,256,512) = Different block sizes used
sqlio -kW -s180 -t8 -o8 -BH -LS -b8 -fsequential
%%A:\testfile.dat >> sqlio.%%A.seq.write.8.log
Four types of tests were run:
- sequential write;
- sequential read;
- random write;
- random read;
Three block sizes were used in each test type:
- 8 kB
- 64 kB
- 256 kB for write tests, 512 kB for read tests.
Results are presented in the form of 4 graphs, one for each of
the test types.
Each graph is a combo chart including a bar chart where each of the disk measurements for each of the block sizes is listed, as well as a line chart between the averages of all the block sizes for each disk, presented mostly for readability.
For sequential tests we present throughput, measured in MBs/sec, while for random access tests the data presented is IO Operations per Second (IOPS).
Amazon provides two disk performance options: EBS Optimized instances and IOPS-optimized (io1) volumes. Both perform very well with Porticor appliances and are recommended by us. Only m1.large and higher instances can be EBS-optimized, but io1 volumes can be attached to any instance type, and when IOPS is of concern these volumes should absolutely be used.
For customers interested in sequential throughput, the parameter that has the largest influence is the instance size, with m1.medium significantly better than m1.small. m1.large performs only slightly better than m1.medium.
If you do use an m1.large instance, we recommend that you enable EBS optimization on it.
Porticor-protected volumes perform on par with local EBS volumes (and sometimes better) when testing sequential access. Performance is somewhat lower on random access tests, especially when testing with small block sizes and when not using io1 volumes.
Finally, a note on methodology: EBS is amenable to stable benchmarking. Each of the tests was repeated 5 times to validate the numbers. Out of 144 tests, we had to remove 1 outlier (more than 10% off the average) in only 6 tests. In no case did we have to remove more than 1 run or to invalidate the entire test. When possible, we highly recommend that customers perform their own independent tests, according to their own usage patterns.