🦔

SnowflakeのワーカーノードがGraviton3に!

に公開

先日、Snowflakeから「Gen2 スタンダードウェアハウス」が発表されました(リリースノート 2025-05-05-gen2-standard-warehouses)。

以前、こちらの記事と同様の手法で、この新しいGen2環境の内部を調査した。

結論

C7g.2xlargeが使われるようになった。CPU以外に大きな変更はないけれど、CPUレベルで列ストレージ向けに最適化がされたっぽい。

Gen2 (2025年5月現在) の推定マシン構成 (1ノードあたり):

パラメータ
インスタンスタイプ C7g.2xlarge
ディストリビューション 不明 (inux-5.4.181-99.354.2024082308gcbf50e6+snow+aws+btrfs+arm64.aarch64-aarch64-with-glibc2.34)
CPU コア 8コア/ノード
CPU アーキテクチャ aarch64(arm64)
CPU モデル (推定) AWS Graviton3
ディスク容量 約400GB/ノード (公称)

詳細

1. OS情報

項目 Gen1 (旧環境) Gen2 (新環境) 備考
OS Linux Linux 変更なし
ディストリビューション Linux-5.4.181-99.354.2024082308gcbf50e6+snow+aws+btrfs+arm64.aarch64-aarch64-with-glibc2.34 Linux-5.4.181-99.354.2024082308gcbf50e6+snow+aws+btrfs+arm64.aarch64-aarch64-with-glibc2.34 変更なし。カスタムLinuxであると推測される。
リリース 5.4.181-99.354.2024082308gcbf50e6+snow+aws+btrfs+arm64.aarch64 5.4.181-99.354.2024082308gcbf50e6+snow+aws+btrfs+arm64.aarch64 変更なし
バージョン #1 SMP Fri Aug 23 08:44:13 UTC 2024 #1 SMP Fri Aug 23 08:44:13 UTC 2024 変更なし
Pythonバージョン 3.9.21 (main, Dec 11 2024, 16:39:34) 3.9.21 (main, Dec 11 2024, 16:39:34) 変更なし

2. CPU情報 (/proc/cpuinfo より)

ここに大きな変更が入りました。

項目 Gen1 (旧環境) Gen2 (新環境) 備考
BogoMIPS 243.75 2100.00 大幅に向上
CPU implementer 0x41 (ARM) 0x41 (ARM) 変更なし
CPU architecture 8 8 変更なし
CPU variant 0x3 0x1 変更あり
CPU part 0xd0c (AWS Graviton2) 0xd40 (AWS Graviton3) 最重要ポイント
Features fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimdd... fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc d... 変更あり
論理プロセッサ数 8 8 変更なし (os.sysconf(SC_NPROCESSORS_ONLN) より)

CPU part0xd0cから 0xd40 に変更されているのでGraviton 3へのアップグレードはほぼ確定ぽい。

3. メモリ情報 (os.sysconf() より)

項目 Gen1 (旧環境) Gen2 (新環境) 備考
SC_PHYS_PAGES (総物理メモリ) 4015143 (約 15.32 GB) 4015143 (約 15.32 GB) 変更なし。
SC_AVPHYS_PAGES (利用可能物理メモリ) 3034205 (約 11.57 GB) 140224 (約 0.53 GB) 大幅に減少

SC_AVPHYS_PAGES の値が下がったのは謎だが、1つのインスタンスを大量に使い回すために予約するメモリ量を下げたとかかも。

過去の環境との比較まとめ

これまでの調査結果

項目 2022年11月 (C5d.2xlarge相当 - 過去記事より) 2024年1月 (C6g.2xlarge相当 - Gen1) 2025年5月 (C7g.2xlarge相当 - Gen2)
インスタンスタイプ C5d.2xlarge C6g.2xlarge C7g.2xlarge
OSバージョン (カーネル) 不明 Linux Kernel 5.4.181
(Linux-5.4.181-...-with-glibc2.34)
Linux Kernel 5.4.181
(Linux-5.4.181-...-with-glibc2.34) (変更なし)
コア数 8コア/ノード 8コア/ノード 8コア/ノード (変更なし)
アーキテクチャ x86_64 aarch64(arm64) aarch64(arm64) (変更なし)
ディスク容量 (推定) 200GB/ノード 400GB/ノード 約400GB/ノード (変更なし)
CPU Part ) (不明) 0xd0c (Graviton2) 0xd40 (Graviton3)
BogoMIPS (不明) 243.75 2100.00

おまけ CPUの違いと、それが何に影響するか?

結局今回のアップデートは
Neoverse N1
Neoverse V1
の違いに収束するので、それを調べると良さそう。

ちょっと調べたところ下のような感じらしい。

項目 Neoverse N1
(Ares, 2019)
Neoverse V1
(Zeus, 2020)
影響するワークロード
ISA 世代 Arm v8.2-A + LSE + FP16 等 Arm v8.4-A + LSE + SVE 256bit / bfloat16 SIMD/AI 命令対応の差
SIMD 幅 NEON 128 bit ×2 SVE 256 bit ×2(可変長) HPC・ベクトル演算・暗号・ML
典型 IPC 向上 +50 %(SPECint/fp 換算)([Arm][1], [AnandTech][2]) 単一スレッド性能
コア構造 A76 派生、11-stage パイプライン Cortex-X1 派生、投機幅・バッファ拡大 分岐性能・O3 窓サイズ
L1/L2 キャッシュ 64 KB I + 64 KB D / L2 1 MB 64 KB I + 64 KB D / L2 2 MB キャッシュヒット率向上

あまりCPUに詳しくないけど感想。

SVE 256 bitは Scalable Vector Extensionの略で、従来 NEON 128 bit の 2 倍の演算幅 を持つらしい。列のように独立したデータを倍の帯域で処理出来るみたいな感じだと理解している。parquetのような列フォーマットの優位性がますます出てきそう。

bfloat16は多少の精度を犠牲に素早く計算する仕組み。AI系の時系列予測関数とかが早くなるかも?

IPCが25%増加しているので、シンプルに単位時間当たりにこなせる命令が増えてそう。

暗号化用のハードウェアがあるので、HashやSha2が爆速になりそう。

L1/L2キャッシュも拡大しているので、巨大なテーブルのJOINとかは確かに早くなりそう。

実際の速度面は、さがらさんが検証されてます。

https://dev.classmethod.jp/articles/snowflake-generation-2-standard-warehouses/

まとめ

暗号化が多発するユースケースと、横や縦に広いユースケースで特に早くなりそう。(DataVaultのSurrogate Keyとかね)
Gen2は1.35倍のクレジット消費となるが、巨大なタスクではコストメリットがあるはず。
処理データが巨大で1時間近くかかっているタスクがあるなら、1つサイズを落としてGen2にしてみても良さそう。

Snowflake Data Heroes

Discussion