AWS ECS Fargate のリージョン格差

前回が思いのほか反響があったので、インドカレーのナンの如くおかわりです。

今回は完全に蛇足っ……圧倒的蛇足っっ……です!同じことを他のリージョンで確認したら、どんなもんなのかという、おまえ暇ナンかと言わてれもおかしくないやつ、参りましょう。



おまえ暇なん……?

暇っちゃ暇。つーか、チャットとかで今忙しいですか?って話しかけられたら、俺はいつでも暇やでって応えるスタンスや。

元々趣味でやってるモンだから、休日にゲームしようか映画みようかエンジニアリングしようかって考えたときに、気になることがあったら先にやっちまうべき優先度が高いのがエンジニアリングってだけ。

こんなどーでもいい釈明をしたくなるくらいには、蛇足回……。

……と思うやん?


リージョン別CPUモデル

とりあえず結果を見たらよいと思うやつです。選択したリージョンは基本USで、一部適当にやってみただけです。

まずは出現CPUを、CPU指定値ごとにまとめ。だいたい3~4タスクをそれぞれ1発限りで採取した結果になります。

RegionCPU指定値CPUモデル
us-east-1
(バージニア北部)
1024Intel(R) Xeon(R) Platinum 8275CL CPU @ 3.00GHz
2048Intel(R) Xeon(R) Platinum 8275CL CPU @ 3.00GHz
Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
4096Intel(R) Xeon(R) Platinum 8275CL CPU @ 3.00GHz
us-east-2
(オハイオ)
1024Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
2048Intel(R) Xeon(R) Platinum 8275CL CPU @ 3.00GHz
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
4096Intel(R) Xeon(R) Platinum 8275CL CPU @ 3.00GHz
Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
us-west-1
(北カリフォルニア)
1024Intel(R) Xeon(R) Platinum 8275CL CPU @ 3.00GHz
Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
2048Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
4096Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
us-west-2
(オレゴン)
1024Intel(R) Xeon(R) Platinum 8275CL CPU @ 3.00GHz
Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
2048Intel(R) Xeon(R) Platinum 8275CL CPU @ 3.00GHz
Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
4096Intel(R) Xeon(R) Platinum 8275CL CPU @ 3.00GHz
Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
ap-northeast-1
(東京)
1024Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
2048Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
Intel(R) Xeon(R) CPU E5-2666 v3 @ 2.90GHz
Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
4096Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
ap-northeast-3
(大阪)
ECS Exec 非対応だから調べるのやめた
sa-east-1
(サンパウロ)
1024Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
2048Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
4096Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz

前回、CPU指定値でモデルが固定化されやすいみたいに書きましたが、おそらくCPUやメモリ指定値が大きいほど、必然的に物理サーバーの選択肢が狭まるので、小さい方が種類を観測しやすいとかその程度の話だと思います。

で、このCPUリストをユニークにすると、こんな感じ。およそ古めと新しめのシリーズに二分できることがわかります。

CPUモデルリリース年代
Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz2013
Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz2013
Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz2014
Intel(R) Xeon(R) CPU E5-2666 v3 @ 2.90GHz2015
Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz2018
Intel(R) Xeon(R) Platinum 8275CL CPU @ 3.00GHz2019
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz2020

んで、新旧混合なのか、新のみ構成なのかを(仮)でまとめると、

新旧対応リージョン
新のみ構成us-east-1 , us-west-2 , sa-east-1
新旧混合us-east-2 , us-west-1 , ap-northeast-1

新旧のCPU性能については、細かくは前回を読んでいただいている前提で省きますが、

旧型の中でもスレッドあたり性能が倍差ある場合もありますが、今回の新旧区分だと新型のほうが絶対的に性能がよく、最大で倍差あるという認識でよいかと思います。


仮想vCPUs

仮想 Virtual CPU、つまり仮想仮想CPUについてです。半分冗談です。

前回、メモ程度に Fargate のOS上で観測できる vCPU の数は、
cpu <= 1024 で 2、cpu >= 2048 で 4
と書きましたが、これをリージョンごとにメモっていくとこうなりました。

Region102420484096
us-east-1248
us-east-2244
us-west-1224
us-west-2248
ap-northeast-1244
sa-east-1244

us-east-1 と us-west-2 だけ、cpu=4096 で vCPUs=8個 に見えます。

一応、8threads で高負荷をかけてみましたが、おおむね 50% * 8 = 400% になったので、当然ですがCPUリソース制御は想定通りです。


AZ数

Fargateと直接関係ある話ではないですが、デフォルトVPC の subnet を見たりすると、そのリージョンで扱えるAZの数を確認することができます。現状をまとめると、

RegionAZ数
us-east-1 (バージニア北部)6
us-east-2 (オハイオ)3
us-west-1 (北カリフォルニア)2
us-west-2 (オレゴン)4
ap-northeast-1 (東京)3
ap-northeast-3 (大阪)3
sa-east-1 (サンパウロ)3

AZ が多いということは、単に規模が大きいとみてよいはずです。負荷対策の相談とかすると、東京のリソースがもし不足したら、USの方に退避できる構成にしておくと安心できます、みたいな提案もあるので、信頼度も段違いのはず。

規模、信頼度が大きければ、自然と機能の先行や性能の優位がついてきてもおかしくないだろう、そんな予想。


リージョン格差

これらの情報で全てを判断することなどできませんが、ある程度リージョンの格のようなものを区分するイメージはできます。

そもそも、us-east-1 がAWSにとって特別な立ち位置なのは言うまでもないです。APIを使い込めばすぐわかるのですが、一部のCloudWatchメトリクスは us-east-1 に取りにいく必要があったり、CloudFront や ACM のような立ち位置が Global の場合、Support, Health, Pricing などアカウント周りなどもそうです。

今回で言えば、us-east-1 と us-west-2 は先進的な立ち位置と想像できます。CPUモデルは新型のみ、cpu=4096でvCPU=8 に見える、AZ が多い……といった特徴があります。

vCPU=8 の件は、おそらくECSとしての見えないバージョン差とかでしょう。cpu=8192 以上を提供の準備とか?なにかしら進化するのかもですね。us-west-1 は逆にしょぼく見えたり、大阪のバージョンが低かったり、それなりに違いを観測できます。

大雑把には、先行・一般・後進 くらいに分かれてるイメージでしょうか。その中でも東京は中の中くらい?なんか井戸端会議の域を出ないですけど、噂話や想像は楽しいものです。


CPU格差の対策

たいしたことない内容なら、Fargateの利便性重視で東京を使う、でよいのですが、それなりにCPUリソースを酷使する場合、速いタスクと遅いタスクが混合するのは前記事にも書いた通り、困る場合が多いです。

なので、もし動かすシステムにリージョン間の通信を含まず、1リージョン+グローバルリソースとかで収まるのであれば、あえて us-east-1 や us-west-2 を選択することで速度と安定を求めることができます。

できます、というだけで、そのために大きくコストをかけて切り替えていくべきかというと、微妙なところで案件次第としか言えないのですが、メイン顧客の地域距離を無視できたり、一時的に起動と削除をする定期ジョブのようなものなら、検討したり試す価値はあるかもしれません。

まぁサクッと東京のCPUシリーズが速い方に統一されれば嬉しいですし、なんなら全部Graviton2になれば、Fargate覇権到来なんですけどね、っていう。



全体的に、やっぱおまえ暇なんやなって言われそうな気がしますが、こういう娯楽も真剣に調べて考えてみれば、意外と実になるものです。

前回の記事は雑に見えて100%業務に役立つと断言できますし、今回のも5%くらいは役立つんじゃないかな。知らんけど:-)