Instance ประเภท t คืออะไร? จะใช้งานได้ดีและถูกจริงๆเหรอ?

นี่เป็นบทความที่มีเนื้อหาดัดแปลงมาจากบทความภาษาญี่ปุ่นของ Classmethod, Inc. ในหัวข้อ「ちょっと待ってください!あなたが使うべきは本当にT系インスタンスですか!?」 หากผู้อ่านสนใจอ่านเนื้อหาต้นฉบับสามารถอ่านได้ที่ลิ้งค์ "บทความต้นฉบับ" ด้านล่าง เนื้อหาในบทความนี้การอัพเดทเนื้อหาบางอย่างเพื่อให้เข้าใจง่ายขึ้นทำให้แตกต่างจากต้นฉบับในบางจุด
2022.10.28

สวัสดีครับ ต้า ครับ
EC2 นั้นมี Instance Type หลากหลายประเภทมากๆเลยใช่ไหมครับ

สำหรับผูเริ่มใช้ AWS นั้นคงมีโอกาสได้ใช้ Instance Type t หรือ m ที่เป็นตัวที่มีความยืดหยุ่นสูงกันมาไม่น้อยใช่ไหมครับ
ซึ่งเมื่อไปดูตารางค่าใช้จ่ายระหว่างประเภท t และ m จะเจอราคาประมาณนี้ครับ
*หมายเหตุ ในตารางเป็นราคาเปรียบเทียบของ Linux ครับ

Instance Type vCPU Memory[GiB] ค่าใช้จ่าย(Singpore)[USD/ชั่วโมง]
t3.large 2 8 0.1056 USD
m5.large 2 8 0.12 USD

จะเห็นว่าสเปคเหมือนกันแท้ๆ แต่ t3.large นั้นราคาถูกกว่าค่อนข้างเยอะเลยครับ
แต่อย่าพึ่งรีบตัดสินใจไปลองอ่านบทความนี้ให้จบกันก่อนนะครับ

หากตรงกับเงื่อนไขต่อไปนี้ อย่าพึ่งตัดสินใจใช้ instance type t นะครับ!!

  • พึ่งเคยใช้ AWS เป็นครั้งแรก
  • ใช้ในสภาพแวดล้อมที่เอาไปใช้ในงานจริง
  • เป็น System ที่ใช้สำหรับเปิดให้ใช้งานภายนอกทั่วไป (ไม่ใช้ระบบที่ใช้งานแค่ภายในบริษัท)

หากตรงกับเงื่อนไขที่กล่าวไปนี้ผมแนะนำให้อ่านบทคาวมนี้ก่อนเพื่อพิจารณาว่าจะใช้ instance type t จริงหรือเปล่า

เนื้อหาในบทความนี้เป็นเนื้อหาที่ต้องการส่งไปยังผู้เริ่มใช้งาน AWS ไม่ได้เป็นการปฏิเสธหรือห้ามไม่ให้ผู้ใช้งาน AWS ที่ช่ำชองหรือเข้าใจใน instance type t ใช้งาน instance type t ในสภาพแวดล้อมที่เอาไปใช้ในงานจริง หรือ System ที่ใช้สำหรับเปิดให้ใช้งานภายนอกทั่วไป

ต้องการ Burstable performance instances หรือไม่

instance type t มีชื่อเรียกอีกอย่างนึงว่า Burstable performance instances ครับ ลองไปตรวจสอบ AWS Document กันดูครับ

The T instance family provides a baseline CPU performance with the ability to burst above the baseline at any time for as long as required. The baseline CPU is defined to meet the needs of the majority of general purpose workloads, including large-scale micro-services, web servers, small and medium databases, data logging, code repositories, virtual desktops, development and test environments, and business-critical applications. Burstable performance instances - Amazon Elastic Compute Cloud

สิ่งที่สำคัญคือประโยคนี้ครับ

The T instance family provides a baseline CPU performance with the ability to burst above the baseline at any time for as long as required.

การจะใช้ instance type t จำเป็นต้องคิดว่าสเปคที่เราจะใช้ มันพอเพียงกับ baseline รึเปล่าครับ

ตัวอย่างเช่น กรณีของ t3.large มี Baseline utilization per vCPU อยู่ที่ 30% และมี vCPUs อยู่ที่ 2 ตัว พอนำไปคำนวณก็จะได้ 30[%] * 2[vCPU] = 60[%] นั่นหมายความว่าหาก สเปคที่เราต้องการมีการใช้งาน CPU ปกติอยู่ที่ต่ำกว่า 60 % จะสามารถใช้งาน t3.large ได้ครับ
แต่ในส่วน CloudWatch Metrics จะแสดงออกมาเป็น vCPU แต่ละตัวออกมา ทำให้ baseline CPU performance ของ t3.large (CPUUtilization) จะอยู่ที่ 30% ครับ
หากปกติเราใช้งาน vCPU ในแต่ละตัวอยู่ที่ 40% สักวันเราก็จะเสีย CPU Credit ไปจนหมด และถูกบังคับให้ใช้งาน CPU อยู่ที่ 30% ครับ

สำหรับใครที่อยากตรวจสอบว่า instance type t ตัวอื่นมี Baseline utilization per vCPU และ vCPUs อยู่ที่เท่าไรสามารถตรวจสอบได้ที่ตารางด้านล่างนี้ หรือเพื่อให้แน่ใจสามารถเช็คข้อมูลได้ที่ AWS Document ด้านล่าง(ใน AWS Document จะมีการอัพเดทข้อมูลอยู่ตลอด)
Key concepts and definitions for burstable performance instances - Amazon Elastic Compute Cloud

Instance type CPU credits earned per hour Maximum earned credits that can be accrued* vCPUs*** Baseline utilization per vCPU
T2
t2.nano 3 72 1 5%
t2.micro 6 144 1 10%
t2.small 12 288 1 20%
t2.medium 24 576 2 20%**
t2.large 36 864 2 30%**
t2.xlarge 54 1296 4 22.5%**
t2.2xlarge 81.6 1958.4 8 17%**
T3
t3.nano 6 144 2 5%**
t3.micro 12 288 2 10%**
t3.small 24 576 2 20%**
t3.medium 24 576 2 20%**
t3.large 36 864 2 30%**
t3.xlarge 96 2304 4 40%**
t3.2xlarge 192 4608 8 40%**
T3a
t3a.nano 6 144 2 5%**
t3a.micro 12 288 2 10%**
t3a.small 24 576 2 20%**
t3a.medium 24 576 2 20%**
t3a.large 36 864 2 30%**
t3a.xlarge 96 2304 4 40%**
t3a.2xlarge 192 4608 8 40%**
T4g

t4g.nano

6

144

2

5%**

t4g.micro

12

288

2

10%**

t4g.small

24

576

2

20%**

t4g.medium

24

576

2

20%**

t4g.large

36

864

2

30%**

t4g.xlarge

96

2304

4

40%**

t4g.2xlarge

192

4608

8

40%**

CPU Credit

CPU credit คือสิ่งที่เราจะเสียเมื่อ Burstable performance instances ใช้งาน CPU ครับ โดยเมื่อเราทำการใช้งาน EC2 instance จำเป็นต้องใช้งาน CPU อยู่แล้ว ทำให้เราจำเป็นต้องเสีย CPU Credit อยู่ตลอดเวลาครับ โดย 1 CPU Credit จะใช้งาน vCPU 100% ได้ 1 นาที หรือตามข้อความด้านล่างนี้ครับ

CPU credit
A unit of vCPU-time.
Examples:
1 CPU credit = 1 vCPU * 100% utilization * 1 minute.
1 CPU credit = 1 vCPU * 50% utilization * 2 minutes
1 CPU credit = 2 vCPU * 25% utilization * 2 minutes
Key concepts and definitions for burstable performance instances - Amazon Elastic Compute Cloud

เมื่อมีการเสียก็ต้องมีการได้รับคืนครับ ทุกๆ instance type จะได้รับ CPU Credit ตามจำนวนที่กำหนดไว้ครับ โดย t3.large จะเป็นตามตารางนี้ครับ

Instance type จำนวน CPU Credit ที่ได้รับมากสุดต่อ 1 ชั่วโมง จำนวน CPU Credit ที่สามารถกักเก็บไว้ได้มากที่สุด vCPU Baseline utilization per vCPU[%] เวลาที่สามารถ Brust ได้มากที่สุด[ชั่วโมง]
A B C = B * 24[ชั่วโมง] D E = B / D / 60[นาที] * 100[%] F = C / D / 60[นาที]
t3.large 36 864 2 30 7.2

สิ่งสำหรับที่ควรดูคือ จำนวน CPU Credit ที่ได้รับมากสุดต่อ 1 ชั่วโมง ครับ เพราะนอกจากนี้เป็นค่าที่ถูกนำไปคำนวณครับจากจำนวน CPU Credit ที่ได้รับมากสุดต่อ 1 ชั่วโมงครับ ในหัวข้อที่ผ่านมาผมได้เขียนไว้ว่าให้เลือกการจะใช้ instance type t จำเป็นต้องคิดว่าสเปคที่เราจะใช้ มันพอเพียงกับ baseline แต่ถ้าจะเขียนให้ถูกต้องคือ baseline นั้นถูกคำนวณมาจาก การใช้จ่าย CPU Credit ให้เพียงพอ ครับ และก็สามารถใช้ไปคำนวณเวลาที่สามารถ Brust ได้มากที่สุด[ชั่วโมง](เวลาที่ใช้ CPU 100% โดยนับจากเวลาที่มีจำนวน CPU Credit ที่สามารถกักเก็บไว้ได้มากที่สุด) ในกรณีที่ต้องการใช้ CPU จำนวนมากในเวลานึง เช่นการประมวลผลแบบ Batch ก็ลองไปพิจารณาการใช้ Burstable performance instances ได้ครับ

Unlimited mode และ Standard mode

Standard mode

เป็นการตั้งค่า mode ของ Credit ชนิดนึงครับ ในโหมดนี้เราจะเผาจำนวน CPU Credit เพื่อ Brust CPU ให้เกิน baseline ตามที่เขียนไว้ด้านบน

Unlimited mode

เป็นการตั้งค่า mode ของ Credit ชนิดนึงครับ ในโหมดนี้จะ Brust CPU ให้เกิน baseline เป็นระยะเวลาใดก็ได้เมื่อจำเป็น โดยมีเงื่อนไขคือ CPU ที่ใช้งานเฉลี่ย โดยเฉลี่ยตลอด 24 ชั่วโมงล่าสุด หรือหากใช้งานไม่ถึง 24 ชั่วโมงจะ เฉลี่ยตามเวลาที่ instance เปิดใช้งาน ต้องต่ำกว่า baseline ที่กำหนดไว้ ทำให้สามารถ cover การเกิด Spike กับ CPU ได้
หากใช้เปอร์เซ็นการใช้ CPU มากกว่า baseline เป็นจำนวนมากจะมีค่าใช้จ่ายเพิ่มเติมในแต่ละช่วงเวลา vCPU

โดยค่าใช้จ่ายเพิ่มเติมสำหรับ Unlimited mode จะมีราคาอยู่เท่านี้ครับ

สำหรับ T4g * 0.04 USD ต่อ vCPU/ชั่วโมงสำหรับ Linux, RHEL และ SLES

สำหรับ T2 และ T3 * 0.05 USD ต่อ vCPU/ชั่วโมงสำหรับ Linux, RHEL และ SLES * 0.096 USD ต่อ vCPU/ชั่วโมงสำหรับ Windows และ Windows ที่ใช้ SQL Web

อ้างอิง: ราคา EC2 Instance ตามความต้องการ – Amazon Web Services

ประเภทที่ใช้ Standard mode เป็น Default ได้แก่

  • T2

ประเภทที่ใช้ Unlimited mode เป็น Default ได้แก่

  • T4g
  • T3a
  • T3

หากสนใจรายละเอียดเพิ่มเติมสามารถดูได้ที่ Key concepts and definitions for burstable performance instances - Amazon Elastic Compute Cloud

งั้นเรามาลองเปรียบเทียบระหว่าง T3 กับ M5 เพื่อดูว่าใช้ vCPU แบบแยกทีละตัวเท่าไรถึงจะได้ราคาที่ถูกกว่ากันนะครับ (ใช้ Singpore Region ในการตรวจสอบ)

インスタンスタイプ A t3.large t3.xlarge t3.2xlarge
จำนวน vCPU B 2 4 8
ราคาของ T3[USD/ชั่วโมง} C 0.1056 0.2112 0.4224
ราคาของ M5[USD/ชั่วโมง] D 0.12 0.24 0.48
ส่วนต่าง[USD] E = D - C 0.0144 0.0288 0.0576
T3 baseline performance ของแต่ละ vCPU[%] F 30% 40% 40%
ค่าใช้จ่ายเพิ่มเติมต่อ vCPU ที่ใช้งานเกินมา[USD/ชั่วโมง] G 0.05 0.05 0.05
ค่าใช้จ่ายต่อเวลา(นาที)ของ vCPU[USD/นาที] H = G / 60 0.000833 0.000833 0.000833
vCPU ที่สามารถ Brust ได้[นาที] I = E / H 17.29 34.57 69.15
CPU ที่สามารถใช้งานเพิ่มได้[%] J = (I / 60) / B 14.40% 14.40% 14.40%
สรุป CPU ที่สามารถใช้ได้โดยคุ้มทุน[%] K = F + J 44.40% 54.40% 54.40%

หากเป็นกรณีของ .large หากใช้งานไม่ถึง 44.40% จะถือว่าประเภท T3 ใช้งานได้ถูกกว่าครับ

สรุป

ก็จบไปแล้วนะครับกับหัวข้อที่ว่าควรใช้ instance type t รึเปล่า ซึ่งผมก็ขอสรุปกันอีกรอบว่ามีเหตุผลอะไรบ้างที่ต้องคำนึงถึงและทำความเข้าใจ

  • ระบบ CPU Credit
  • ค่าใช้จ่ายเพิ่มเติมของ Unlimited mode
  • มีการใช้ CPU แบบไหน

หากเราทำความเข้าใจกับ instance type t แล้วจริงๆ จะนำไปใช้กับสถาการณ์จริงๆก็ได้หากนั่นเป็นสิ่งที่เข้ากันได้กับ Workload ของท่าน แต่ถ้าเกิดยังรู้สึกไม่แน่ใจ ไม่เข้าใจก็ลองอ่านบทความนี้ใหม่อีกรอบหรืออ่านลิ้งค์ข้อมูลต่างๆด้านล่างนี้ได้ครับ

บทความต้นฉบับ

ちょっと待ってください!あなたが使うべきは本当にT系インスタンスですか!? | DevelopersIO

บทความที่เกี่ยวข้อง

ดูรายละเอียดเพิ่มเติมได้ที่นี่ สอบถามเพิ่มเติมเกี่ยวกับ AWS คลิกที่นี่