博客 / 詳情

返回

AWS EC2 必知必會小技巧 | 機型特點解析和選型技巧分享

背景

AWS EC2 是 AWS 的彈性計算服務,為廣大開發者提供簡單便捷彈性的虛擬機,是 AWS 歷史最悠久的服務之一(另外一個是 S3),從 2006 年發佈至今,已經發展了近 17 年曆史。

相信不少剛開始接觸 EC2 的朋友都有如下類似的感受:

  • AWS EC2 的類型實在是太多了(數百種)!我究竟應該選擇哪一種 EC2 機型既能滿足業務需求且不超過預算 ?
  • EC2 的 CPU 和 Memory 配置一樣,是不是代表它們的性能差異也一樣 ?
  • 採用什麼樣的 EC2 付費模式才比較划算 ?

回想 EC2 剛開始發佈時,只有兩種 機型可供選擇,而如今則有 781 種,琳琅滿目的 EC2 類型必然會讓開發者們陷入選擇困難症。本文將簡單介紹一些 EC2 機型選擇的小技巧,目的是為了幫助讀者能夠更快地選擇合適的 EC2 機型。

機型分類和選擇

總體分類

儘管 AWS 有數百種 EC2 機型,但其實只有以下幾種大的分類:

  • General Purpose:Compute、Memory 和 Networking 資源相對平衡,即 M 系列和 T 系列。絕大多數場景用 General Purpose 就足夠了;
  • Compute Optimized:計算優化型,適合計算密集型服務,即 C 系列;
  • Memory Optimized:內存優化實例旨在為處理大型數據集的工作負載提供快速性能,主要有 R 和 X 系列;
  • Accelerated Computing:加速計算實例使用硬件加速器或協處理器來執行功能,例如浮點數計算、圖形處理或數據模式匹配,比在 CPU 上運行的軟件更高效;
  • Storage Optimized:存儲優化實例專為需要在本地存儲上對非常大的數據集進行高速連續讀寫訪問的工作負載而設計;
  • HPC Optimized:這是 AWS 新出一個分類(HPC 系列),主要適用於需要高性能處理的應用程序,例如大型複雜模擬和深度學習工作負載。

一般來説,每一個具體的 EC2 型號都從屬於某個帶有相應數字序號的 Family,比如以 General Purpose 類型的 M 系列為例:

  • M7g / M7i / M7i-flex / M7a
  • M6g / M6i / M6in / M6a
  • M5 / M5n / M5zn / M5a
  • M4

從序號上我們不難看出,M7 是最新一代的產品,而 M4 則是相對比較舊款的型號。序號越大,則説明對應的機型和 CPU 型號也就是越新,同等配置下價格也有可能會更實惠(硬件總是在不斷貶值)。

關鍵參數

從 AWS 一個典型的 EC2 型號介紹,我們可以提取出以下幾個關鍵參數:

1. EC2 的具體型號
一般以 <family>.<size> 命名,比如 m7g.large / m7g.xlarge 等。對於 EC2 來説,某種型號在全局是唯一的;

2. CPU 和 Memory 大小
即上圖中的 vCPU 和 Memory 大小。絕大多數 EC2 機型都是 1:4,即 vCPU 和 Memory 的數量上的比值。比如,當 vCPU 為 1 時,Memory 通常是 4GiB;當 vCPU 為 2 時,Memory 通常是 8GiB,以此類推;

3. 實例存儲
EC2 通常可以掛載不同類型的持久化存儲盤,主要有以下幾種:

  • EBS

    EBS 是 AWS 的分佈式塊存儲服務 ,通常也是大多數 EC2 機型默認選擇的持久化存儲方式。有些機型只能選擇使用 EBS。EBS 是與具體 AZ 相綁定,讀寫延遲當然會比本地 SSD 要差一些,但在大多數場景下也能接受。根據 IOPS 和吞吐量等一些參數的不同,EBS 也有不同的類型,比如:

    • gp2/gp3:底層是通用型的 SSD,官方推薦使用性價比更好的 gp3。一般默認是 3000 IOPS,但是也支持按需無停機提升 IOPS(這意味着需要多花點錢);
    • io1/io2:更強的性能和更貴的價格,同時還支持 Multi Attach 這類特性(一般其他類型的 EBS 只能掛載一台 EC2)。
  • 本地存儲

    某些機型除了支持掛載 EBS 外,同時還支持本地存儲,當然,價格上也會更貴一些。一般這類機型的型號上都會 帶有 d,比如:m7g.large 是 EBS-Only 的機型,而 m7gd.large 則是帶有 1 塊 118GiB NVME SSD 本地存儲的機型。某些特殊機型還支持容量更大本地 HDD;

4. EBS 帶寬
對於一些比較新且有專門的 EBS 優化的 EC2 機型,AWS 都會為其配備專用的 EBS 帶寬。這意味着在高數據量吞吐的場景,EBS 優化機型總能享有更好的吞吐而不與本機上的網絡帶寬有資源競爭;

5. 網絡帶寬
即 EC2 機型對應的網絡帶寬。

6. CPU 型號
大多數場景下,我們能看到以下幾種廠商的 CPU:

  • AWS 自研的基於 ARM 架構的 Graviton 處理器(目前已經到 Graviton 3),比如 M7g 系列;
  • Intel x86-64 架構的 CPU;
  • AMD x86-64 架構的 CPU;

一般來説,相近配置上價格上是:Intel > AMD > Graviton,性能則剛好反過來。對於一些性能不敏感的通用化場景,用户可以考慮使用 ARM 架構的機型,這樣能獲得更高性價比。

AWS 是最早嘗試將 ARM 架構引入服務器 CPU 領域的雲廠商,經過多年的研發,Graviton CPU 已經取得長足的進步,性價比上有很大的競爭優勢,估計未來 AWS 會推動越來越多的客户使用 Graviton CPU 機型。

7. 虛擬化技術
不同的 EC2 機型底層使用的虛擬化技術也是不完全相同的,這也導致了一些參數上的差異。比如對於較新的 EC2 機型,一般都採用 Nitro 虛擬化技術。Nitro 是 AWS 最新的虛擬化技術,將很多虛擬化行為都卸載到了硬件上,而軟件上則可以做得相對較輕量,從而虛擬化性能會更強,從用户視角感受到則是相同配置下會有更好的性能(因為虛擬化的 Overhead 更低了)。

8. 是否用於機器學習場景
隨着 LLM 技術的發展,越來越多的廠商會選擇在雲端訓練自己的模型。如果想在 AWS EC2 使用模型訓練,一般會使用 Accelerated Computing 這個大類的機型,比如:

  • P 系列和 G 系列機型:這部分使用的是 Nvidia 的 GPU 芯片。在 re:Invent 2023 大會上,Nvidia 與 AWS 開啓了更深度的戰略合作,AWS 計劃使用 Nvidia 最新最強的 GPU 來打造一個專門用於生成式 AI 的算力平台;
  • Trn 和 Inf 系列:AWS 除了使用 Nvidia GPU,自己也研發專用於機器學習的芯片,比如用於訓練的 Trainium 芯片和模型推理的 Inferentia 芯片。Trn 系列和 Inf 系列的 EC2 機型則分別對應這兩種 AWS 自研的機器學習芯片;

Key Takeway

根據我們上文的一些簡單介紹(EC2 可以説的內容遠不止於此),我們總結了一下小技巧供讀者參考:

  1. 對於大多數 EC2 機型,一般序號越大,CPU 型號越新,性能會越強,價格反而會越便宜,即性價比更高;
  2. EC2 通用型中 T 系列相對便宜,並且提供了一種 Burstable CPU 的特性:實例在基線性能下運行會累積 CPU 積分,當遇到基線性能之上的高負載場景時可根據 CPU 積分運行超出基線性能一定時間的能力(費用不變),但隨之也帶來 T 系列性能不會太高,普遍帶寬也低且沒有 EBS 優化。因此 T 系列比較適合非性能驗證的測試環境;
  3. EC2 通用型系列中如果追求性價比,可優先選擇 AWS ARM 架構;
  4. AWS 官網的 EC2 Pricing 非常難以閲讀,推薦使用 Vantage 的 https://ec2instances.info/ 來查閲價格信息(這也是一個開源項目);
  5. 對於大多數雲用户來説,EC2 的費用一般是其大頭支出,這裏有幾個手段可以儘量減低這方面的開支:
  6. 充分運用雲的彈性:讓你的架構儘可能彈性,按需使用算力,這裏可使用 AWS 的 Karpenter 或者 Cluster Autoscaler 來讓你的 EC2 具備靈活伸縮的能力;
  7. 使用 Spot 實例:Spot 實例的價格可比 On-Demand 實例便宜 30% 甚至 90%,但是會被搶佔,無法長時間穩定運行。AWS 會在搶佔前 2 分鐘提醒你,然後就進行搶佔。Spot 實例如果底層管理得好,非常適合彈性計算且可容忍中斷的場景,比如 SkyPilot 項目就是拿不同的雲的 Spot 實例進行機器學習訓練;
  8. 優化付費模式:除了技術手段,我們其實還可以通過購買 Saving Plans 等方式來獲得比 On-Demand 更低廉的單位使用時間,但缺點就是靈活度降低,比較適用於整體業務架構相對穩定的場景。

總結

如何高效選擇和使用 EC2 必須根據用户的具體場景因地制宜,具體問題具體分析,是一件持續迭代優化的工作。總而言之,充分運用雲的彈性和了解不同 EC2 機型的關鍵參數,是我們每一個 AWS 用户必須掌握的技巧。

關於 Greptime 的小知識:

Greptime 格睿科技於 2022 年創立,目前正在完善和打造時序數據庫 GreptimeDB,格睿雲 GreptimeCloud 和可觀測工具 GreptimeAI 這三款產品。

GreptimeDB 是一款用 Rust 語言編寫的時序數據庫,具有分佈式、開源、雲原生和兼容性強等特點,幫助企業實時讀寫、處理和分析時序數據的同時降低長期存儲成本;GreptimeCloud 可以為用户提供全託管的 DBaaS 服務,能夠與可觀測性、物聯網等領域高度結合;GreptimeAI 為 LLM 量身打造,提供成本、性能和生成過程的全鏈路監控。

GreptimeCloud 和 GreptimeAI 已正式公測,歡迎關注公眾號或官網瞭解最新動態!

官網:https://greptime.cn/

GitHub: https://github.com/GreptimeTeam/greptimedb

文檔:https://docs.greptime.cn/

Twitter: https://twitter.com/Greptime

Slack: https://greptime.com/slack

LinkedIn: https://www.linkedin.com/company/greptime/

user avatar chazhoudeqingchun 頭像 wodingshangniliao 頭像 u_16120231 頭像 FlyAway2013 頭像 xiaojiu_625c14980f596 頭像 yimin333 頭像 xiaoqian01 頭像 fanjiapeng 頭像 phytium_developers 頭像 u_15966245 頭像 tugraph 頭像
11 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.