Insufficient Capacity ปัญหาทรัพยากรไม่พอที่ Amazon EC2


เพื่อนคนหนึ่งที่กำลังทำปริญญาเอกที่เดียวกันกับผม เขาทำงานวิจัยเกี่ยวข้องกับการใช้หน่วยประมวลผลกราฟิก (GPU) เพื่อแก้ปัญหาทั่วไป (ไม่ใช่เจาะจงแค่งานด้านกราฟิก) หรือที่เรียกกันว่า General Purpose GPU โดยอาจารย์ที่ปรึกษาของเพื่อนผมคนนี้ได้รับงบจาก Amazon EC2 เพื่อนำไปใช้ในงานวิจัยเป็นเครดิตด้วยวงเงินที่สูงมากๆ (ผมไม่ขอเปิดเผยตัวเลข)  จากนั้น เพื่อนผมคนนี้ก็ได้โอกาสใช้เครดิตส่วนนี้จากอาจารย์ของเขาในการเช่าเซิร์ฟเวอร์ประเภท Cluster GPU Instances ใน Amazon EC2 โดยขณะนี้ เซิร์ฟเวอร์ประเภทนี้มีให้บริการที่ US East (Virginia) และใช้ได้กับ Linux  เท่านั้น สนนราคาค่าเช่าที่ 2.10 เหรียญต่อชั่วโมง

จนมาวันหนึ่ง เพื่อนผมคนนี้ประสบปัญหารันเซิร์ฟเวอร์ GPU ไม่ได้ โดยปัญหาที่เจอปรากฎตามรูปภาพที่แปะไว้ ด้วยการแจ้งข้อความผิดพลาดว่า “Insufficient capacity” หรือแปลได้ว่า “ทรัพยากรไม่พอ” ขยายความก็คือ ทรัพยากรในโซนที่เซิร์ฟเวอร์ตัวนี้ต้องการรันนั้นมีไม่เพียงพอ จึงทำให้เซิร์ฟเวอร์รันไม่ได้ และเรื่องมันไม่อภิรมย์ตรงที่ว่า ก่อนหน้านี้ เซิร์ฟเวอร์ตัวดังกล่าวเคยรันในโซนนั้นได้ตามปกติ ต่อมาเพื่อนผมได้ปิดเซิร์ฟเวอร์นี้เป็นการชั่วคราว แต่พอจะรันอีกครั้งหนึ่ง ก็เจอปัญหานี้เข้าจนได้

หากให้ผมเดาสาเหตุของปัญหาดังกล่าว คงเป็นประมาณว่า เซิร์ฟเวอร์ประเภท Cluster GPU Instances ในโซนที่เพื่อนผมใช้งานอยู่นั้นถูกใช้ไปหมดแล้ว มีเรื่องน่าสนใจอย่างหนึ่งที่ผมทราบมาจากปากของพนักงานฝ่ายขายของ Amazon EC2 คือ การจัดการเซิร์ฟเวอร์เสมือนประเภท Cluster Compute Instances และ Cluster GPU Instances นั้น จะจัดสรรให้ 1 เซิร์ฟเวอร์เสมือนรันอยู่บน 1 เซิร์ฟเวอร์แท้เท่านั้น ดังนั้น ปัญหาของทรัพยากรไม่เพียงพอสำหรับเซิร์ฟเวอร์ GPU จึงเกิดได้สูงมากๆ เพราะเซิร์ฟเวอร์ประเภทนี้มีต้นทุนสูงกว่าเซิร์ฟเวอร์ทั่วๆไป และโดยปกติ ความต้องการของเซิร์ฟเวอร์ประเภทนี้ยังมีไม่มากพอ ส่งผลให้การลงทุนโดย Amazon ในการจัดซื้อเซิร์ฟเวอร์ GPU จึงน่าจะน้อยกว่าเซิร์ฟเวอร์แบบอื่นๆที่ไม่ต้องการ GPU (นี่เป็นการวิเคราะห์ของผมนะ)

สาเหตุของปัญหาก็เกิดจากความต้องการของมนุษย์ที่ขึ้นๆลงๆ และอาจขึ้นๆลงๆแบบเป็นครั้งคราว โดยอาจมีช่วงเวลาที่เซิร์ฟเวอร์ประเภท Cluster GPU Instances เป็นที่ต้องการอย่างมากๆ จนกระทั่งว่า เซิร์ฟเวอร์ทุกเครื่องที่ติดตั้ง GPU ในโซนใดๆถูกใช้งานอย่างเต็มที่ ปัญหาทรัพยากรไม่พอจึงเกิดขึ้นได้ในที่สุด

วิธีการแก้ปัญหาเบื้องต้นเมื่อเจอปัญหานี้ คือ 1. รอไปจนกว่าทรัพยากรจะว่าง (ซึ่งเป็นวิธีที่อันตรายหากงานของเราสำคัญมากๆ) 2. เอาเซิร์ฟเวอร์ดังกล่าวไปรันที่โซนอื่น (ถ้ายังเก็บ image หรือข้อมูลของเซิร์ฟเวอร์อยู่) 3. ขอความช่วยเหลือจากฝ่าย support ของ Amazon และมีอีกเรื่องที่ต้องทำคือ เคลมประกัน อย่างที่ผมเคยกล่าวไปแล้วว่า cloud computing ไม่ใช่เทพ มันมีวันล่มได้ แต่ผู้ให้บริการจะต้องให้การรับประกันแก่ลูกค้าผ่านเอกสารที่เรียกว่า SLA ในกรณีที่ผู้ให้บริการไม่สามารถบริการได้อย่างที่สัญญาไว้ ผู้ให้บริการจะต้องชดเชยเครดิตให้แก่ลูกค้า

สำหรับกรณีเพื่อนของผม เขาไม่ยอมเคลมประกัน เขาบอกว่าเขาได้งบวิจัยจาก Amazon เขาไม่แน่ใจว่าจะเคลมได้หรือเปล่า (ผมก็ไม่ทราบว่า งบวิจัยนี้เคลมได้หรือเปล่า?) เขาเลยแก้ปัญหาโดยการรอให้ทรัพยากรว่าง (หรือมีเซิร์ฟเวอร์ที่มี GPU ว่าง) และในที่สุด วันต่อมา เพื่อนของผมก็รันเซิร์ฟเวอร์ GPU ในโซนเดิมได้ตามปกติ

2 thoughts on “Insufficient Capacity ปัญหาทรัพยากรไม่พอที่ Amazon EC2

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s