กลับ

ข้อพิจารณาเกี่ยวกับ CPU และหน่วยความจำ

ประเภทของ CPU

การตั้งค่าประเภท CPU ช่วยให้คุณสามารถเลือกได้ตามรุ่นและคุณสมบัติของ CPU เพื่อให้มั่นใจถึงการทำงานที่สม่ำเสมอ แม้ว่าโครงสร้างพื้นฐานคลาวด์ส่วนตัวจะใช้ CPU ที่แตกต่างกัน อย่างไรก็ตาม การย้ายแบบสด (live migration) ระหว่าง CPU ของ Intel และ AMD ไม่ได้รับการรับประกัน

การเลือก “host” ที่ด้านล่างของเมนูแบบเลื่อนลงจะใช้ CPU เดียวกันกับโฮสต์จริง ซึ่งช่วยเพิ่มประสิทธิภาพสูงสุด อย่างไรก็ตาม สิ่งนี้จะป้องกันการย้ายแบบสดระหว่างโฮสต์ที่มีรุ่นต่างกัน ซึ่งอาจก่อให้เกิดปัญหาหากมีการเพิ่มหน่วย HRPC ใหม่เข้าไปในศูนย์ข้อมูลเสมือนในอนาคต

ระบบปฏิบัติการสมัยใหม่ส่วนใหญ่ทำงานได้ดีกับ x86-64-v2 ซึ่งรองรับชุดคำสั่ง เช่น SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT และ CMPXCHG16B ตัวเลือก x86-64-v2-aes รวมถึงคำสั่งการเข้ารหัส AES ซึ่งช่วยให้ซอฟต์แวร์เข้ารหัสทำงานได้เร็วขึ้น

การเลือก x86-64-v3 ช่วยให้สามารถใช้คำสั่ง AVX และ AVX2 ได้ ในขณะที่ x86-64-v4 เพิ่มการรองรับคำสั่ง AVX-512

โมเดลคลาวด์ส่วนตัว HRPC ทั้งหมดตั้งแต่รุ่น 6Gt เป็นต้นไปรองรับ x86-64-v4

ตารางต่อไปนี้สรุปข้อมูลนี้:

โปรเซสเซอร์ x86-64-v1 x86-64-v2 x86-64-v2-aes x86-64-v3 x86-64-v4
ชุดคำสั่งที่รองรับ ชุดคำสั่งพื้นฐาน x86-64 SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CMPXCHG16B x86-64-v2 + AES AVX, AVX2, BMI1, BMI2, FMA, MOVBE ตระกูล AVX-512 (AVX-512F, AVX-512CD, AVX-512DQ, AVX-512BW, AVX-512VL ฯลฯ)
Intel Xeon Intel Xeon 3000/5000/7000 ซีรีส์ (รุ่นที่ 1) Intel Xeon 5500 ซีรีส์ (Nehalem) และใหม่กว่า Intel Xeon 5600 ซีรีส์ (Westmere) และใหม่กว่า Intel Xeon E3 v3 (Haswell) และใหม่กว่า, Intel Xeon E5/E7 v3 (Haswell-EP/EX) และใหม่กว่า, Intel Xeon Scalable Processors รุ่นที่ 1 (Skylake-SP) และใหม่กว่า Intel Xeon Scalable Processors รุ่นที่ 2 (Cascade Lake-SP) และใหม่กว่า, Intel Xeon Scalable Processors รุ่นที่ 3 (Ice Lake-SP)
AMD Opteron AMD Opteron 100/200/800 ซีรีส์ (SledgeHammer) AMD Opteron 4200/6200 ซีรีส์ (Bulldozer) และใหม่กว่า AMD Opteron 4300/6300 ซีรีส์ (Piledriver) และใหม่กว่า ไม่เกี่ยวข้อง ไม่เกี่ยวข้อง
AMD EPYC ไม่เกี่ยวข้อง AMD EPYC รุ่นที่ 1 (Naples) AMD EPYC รุ่นที่ 1 (Naples) AMD EPYC 7002 ซีรีส์ (Rome) และใหม่กว่า AMD EPYC 7003 ซีรีส์ (Milan) และใหม่กว่า

การจัดการหน่วยความจำ KVM และไดรเวอร์ Ballooning

กล่าวโดยย่อ ไดรเวอร์ Ballooning ไม่จำเป็นในโครงสร้างพื้นฐาน HRPC และแนะนำให้ปิดใช้งาน

ใน KVM การตั้งค่า “หน่วยความจำขั้นต่ำ” เท่ากับค่า “หน่วยความจำ” ดูเหมือนจะสร้างการจัดสรรหน่วยความจำแบบคงที่ อย่างไรก็ตาม เนื่องจากลักษณะการจัดการหน่วยความจำของ Linux การจัดสรรหน่วยความจำและการใช้งานจริงจะแตกต่างกัน ระบบจะสำรองหน่วยความจำเมื่อเริ่มต้น แต่จะถูกใช้งานจริงเมื่อมีการเขียนข้อมูลลงไปเท่านั้น ทำให้การใช้หน่วยความจำเป็นแบบไดนามิก

สามารถสังเกตได้ในส่วน “การใช้หน่วยความจำ” ของสรุปโฮสต์หรือเครื่องเสมือน ตัวอย่างเช่น เครื่องเสมือนที่กำหนดหน่วยความจำ 32GiB อาจใช้จริงเพียง 13.56GiB

สรุป CPU

ในระบบ Proxmox VE ทั่วไป สามารถสร้างเครื่องเสมือนได้ตราบใดที่ยังมีหน่วยความจำว่าง อย่างไรก็ตาม หาก “การใช้หน่วยความจำ” ที่แสดงอยู่นั้นต่ำ ผู้ดูแลระบบอาจจัดสรรหน่วยความจำมากกว่าที่มีอยู่จริง ซึ่งนำไปสู่การจัดสรรหน่วยความจำเกิน (memory overcommitment) เมื่อเครื่องเสมือนต้องการหน่วยความจำเพิ่มขึ้นอย่างกะทันหัน อาจทำให้เกิดความไม่เสถียร และอาจกระตุ้นให้ Out-Of-Memory Killer ในระบบปฏิบัติการโฮสต์ทำงาน ซึ่งอาจยุติกระบวนการสำคัญของระบบแบบสุ่ม

HRPC 6Gf ถูกออกแบบมาสำหรับการใช้งานในองค์กรโดยเน้นที่การแยกส่วน เพื่อให้มั่นใจว่าไม่สามารถสร้างเครื่องเสมือนเกินความจุหน่วยความจำที่มีอยู่

หากเครื่องโฮสต์หน่วยความจำหมดและเปิดใช้งานอุปกรณ์ Ballooning ไดรเวอร์ Ballooning จะบังคับให้ระบบปฏิบัติการเกสต์ปล่อยหน่วยความจำที่ไม่จำเป็น (เช่น แคชดิสก์, หน้า dirty) คืนให้กับระบบปฏิบัติการโฮสต์ กระบวนการนี้เพิ่มภาระให้ CPU และการดำเนินการ I/O ซึ่งนำไปสู่ความล่าช้าและความไม่เสถียร โดยเฉพาะในระบบที่มีความพร้อมใช้งานสูง (HA) ซึ่งไวต่อความหน่วง

ดังที่กล่าวไว้ก่อนหน้านี้ ไฮเปอร์ไวเซอร์ที่กำหนดเองใน HRPC 6Gf ป้องกันการสร้างเครื่องเสมือนที่ไม่จำเป็น ทำให้อุปกรณ์ Ballooning ไม่ค่อยมีความสำคัญในสภาพแวดล้อมนี้