Graviton2はrandomが遅いのでリクエストの度にUUIDを発行しているようなWebアプリケーションだと性能出ないかもという話を聞いて、気になったので実際にUUIDを生成する速度を計測した。
goでUUIDv4を生成するだけのベンチマークを実装し、ECSで実行した。
c6g.largeの結果
go: downloading github.com/google/uuid v1.3.0
goos: linux
goarch: arm64
pkg: github.com/minami14/graviton-bench
BenchmarkUUIDDisableRandPool-2 1996345 601.1 ns/op 16 B/op 1 allocs/op
BenchmarkUUIDEnableRandPool-2 9639415 124.5 ns/op 0 B/op 0 allocs/op
PASS
ok github.com/minami14/graviton-bench 3.138s
c5.largeの結果
go: downloading github.com/google/uuid v1.3.0
goos: linux
goarch: amd64
pkg: github.com/minami14/graviton-bench
cpu: Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
BenchmarkUUIDDisableRandPool-2 1000000 1024 ns/op 16 B/op 1 allocs/op
BenchmarkUUIDEnableRandPool-2 6812577 170.1 ns/op 0 B/op 0 allocs/op
PASS
ok github.com/minami14/graviton-bench 2.384s
Graviton2を搭載しているc6gのインスタンスの方が速いという結果になった。
AWS Batchの配列ジョブを使用してそれぞれ10台インスタンスずつ実行したが、c6gは差がほとんどなく、c5はCPUが異なることもあるので多少の差はあったがc6gの方が速いという結果は変わらなかった。
エントロピーが少ないとかはあまり気にしなくてもいいかもしれない。
c6gの料金はc5より2割安いので性能が上がるだけでなく費用も抑えられる。