virtualization x86 / x64 มีค่าใช้จ่ายเท่าไร


24

virtualization x86 / x64 มีค่าใช้จ่ายเท่าไหร่ (ฉันอาจใช้ VirtualBox, มี VMWare, ไม่ใช่ parav virtualization) สำหรับการดำเนินการแต่ละรายการดังต่อไปนี้โฮสต์ Win64 และ Linux64 guest โดยใช้การจำลองเสมือนฮาร์ดแวร์ของ Intel?

  • ใช้โหมด 64 บิตรหัส CPU-bound ล้วนๆ

  • โหมด 32 บิตสำหรับผู้ใช้ที่เชื่อมโยงกับ CPU อย่างหมดจด

  • ไฟล์ I / O ไปยังฮาร์ดไดรฟ์ (ส่วนใหญ่ฉันสนใจเรื่องปริมาณงานไม่ใช่ความล่าช้า)

  • เครือข่าย I / O

  • การซิงโครไนซ์เธรดพื้นฐาน (mutexes, semaphores, ตัวแปรเงื่อนไข)

  • สวิตช์บริบทเธรด

  • การทำงานของอะตอม (ใช้ส่วนlockนำหน้าสิ่งต่าง ๆ เช่นการเปรียบเทียบและการสลับ)

ฉันสนใจกรณีฮาร์ดแวร์ช่วย x64 (ทั้ง Intel และ AMD) แต่ฉันไม่รังเกียจที่จะได้ยินเกี่ยวกับการแปลไบนารีที่ไม่มีใครช่วยเหลือและ x86 (เช่นโฮสต์และแขก 32 บิต) เช่นกัน ฉันไม่สนใจ paravirtualization


(1) "x86" หมายถึง 32 บิต คุณจะไม่สามารถเรียกใช้รหัส 64 บิต การจำลองเสมือน AMD64 (หรือที่เรียกว่า x64) มีข้อ จำกัด ที่แตกต่างกันเนื่องจากต้องใช้ส่วนขยายฮาร์ดแวร์ (2) คุณหมายถึง x86 virtualization โดยการแปลไบนารี่ (x86 เท่านั้น) หรือการจำลองเสมือนด้วยฮาร์ดแวร์ช่วย (VT)
Skyhawk

@Miles: ฉันได้ชี้แจงคำถาม
dsimcha

คำตอบ:


26

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

มันซับซ้อนมากขึ้นเมื่อพยายามค้นหาความสัมพันธ์ระหว่างการทดสอบเกณฑ์มาตรฐานต่างๆ วิธีแก้ปัญหาที่ฉันทดสอบไม่มีประสิทธิภาพที่ดีในการทดสอบการใช้งานไมโคร ตัวอย่างเช่น: ภายใน VM หนึ่งการเรียกครั้งเดียวเพื่อ "gettimeofday ()" ใช้เวลาโดยเฉลี่ยแล้ววงจรนาฬิกา 11.5 เท่าจะเสร็จสมบูรณ์มากกว่าบนฮาร์ดแวร์ ไฮเปอร์ไวเซอร์นั้นได้รับการปรับให้เหมาะกับการใช้งานจริงและทำงานได้ไม่ดีในการใช้งานไมโคร นี่อาจไม่ใช่ปัญหาสำหรับแอปพลิเคชันของคุณที่อาจเหมาะสมกับแอปพลิเคชันโลกแห่งความจริง ฉันหมายถึงโดยการใช้ไมโครแอปพลิเคชันใด ๆ ที่ใช้เวลาน้อยกว่า 1,000 รอบนาฬิกาให้เสร็จ (สำหรับซีพียู 2.6 GHz, 1,000 รอบนาฬิกาจะถูกใช้ใน 385 นาโนวินาทีหรือ 3.85e-7 วินาที)

ฉันทำการทดสอบเกณฑ์มาตรฐานอย่างกว้างขวางเกี่ยวกับสี่โซลูชั่นหลักสำหรับการรวมศูนย์ข้อมูลสำหรับการเก็บถาวร x86 ฉันทำการทดสอบเกือบ 3000 ครั้งเปรียบเทียบประสิทธิภาพภายใน VMs กับประสิทธิภาพของฮาร์ดแวร์ ฉันเรียกว่า 'โอเวอร์เฮด' ความแตกต่างของประสิทธิภาพสูงสุดที่วัดได้ภายใน VM และประสิทธิภาพสูงสุดที่วัดได้บนฮาร์ดแวร์

การแก้ปัญหา:

  • VMWare ESXi 5
  • Microsoft Hyper-V Windows 2008 R2 SP1
  • Citrix XenServer 6
  • การจำลองเสมือนของ Red Hat Enterprise 2.2

ระบบปฏิบัติการแขก:

  • Microsoft Windows 2008 R2 64 บิต
  • Red Hat Enterprise Linux 6.1 64 บิต

ข้อมูลการทดสอบ:

  • เซิร์ฟเวอร์: 2X Sun Fire X4150 แต่ละตัวพร้อม RAM 8GB, ซีพียู Intel Xeon E5440 2X, และพอร์ตอีเธอร์เน็ตกิกะบิตสี่พอร์ต
  • ดิสก์: 6X 136GB SAS ดิสก์ผ่าน iSCSI ผ่านกิกะบิตอีเธอร์เน็ต

ซอฟต์แวร์มาตรฐาน:

  • CPU และหน่วยความจำ: มาตรฐาน Linpackสำหรับทั้ง 32 และ 64 บิต นี่คือ CPU และหน่วยความจำมาก

  • Disk I / O และ Latency: Bonnie ++

  • เครือข่าย I / O: Netperf: TCP_STREAM, TCP_RR, TCP_CRR, UDP_RR และ UDP_STREAM

  • การทำงานแบบไมโคร: rdtscbench : การเรียกระบบการสื่อสารระหว่างกระบวนการไพพ์

ค่าเฉลี่ยจะคำนวณด้วยพารามิเตอร์:

  • CPU และหน่วยความจำ: AVERAGE (HPL32, HPL64)

  • ดิสก์ I / O: AVERAGE (put_block, เขียนใหม่, get_block)

  • เครือข่าย I / O: AVERAGE (tcp_crr, tcp_rr, tcp_stream, udp_rr, udp_stream)

  • การดำเนินการแบบไมโคร AVERAGE (getpid (), sysconf (), gettimeofday (), malloc [1M], malloc [1G], 2pipes [], simplemath [])

สำหรับสถานการณ์การทดสอบของฉันโดยใช้การวัดของฉันค่าเฉลี่ยของผลลัพธ์ของโซลูชันการจำลองเสมือนสี่แบบคือ:

VM layer overhead แขก Linux:

  • CPU และหน่วยความจำ: 14.36%

  • เครือข่าย I / O: 24.46%

  • ดิสก์ I / O: 8.84%

  • เวลาแฝงของดิสก์สำหรับการอ่าน: 2.41 ครั้งช้าลง

  • เวลาดำเนินการแบบไมโคร: ช้าลง 10.84 ครั้ง

เลเยอร์ค่าโสหุ้ย VM แขกของ Windows:

  • CPU และหน่วยความจำเฉลี่ยสำหรับทั้ง 32 และ 64 บิต: 13.06%

  • เครือข่าย I / O: 35.27%

  • ดิสก์ I / O: 15.20%

โปรดทราบว่าค่าเหล่านั้นเป็นค่าทั่วไปและไม่สะท้อนสถานการณ์กรณีเฉพาะ

โปรดดูบทความเต็ม: http://petersenna.com/en/projects/81-performance-overhead-and-comparative-performance-of-4-virtualization-solutions


2
บทความนี้ล้าสมัย
dyasny

1
For a 2.6 GHz CPU, 1,000 clock cycles are spent in 23 millisecondsนั่นไม่ควรเป็นหน่วยอย่างง่าย ๆ 1,000 ถึง 2,600,000 เพื่อให้ได้จำนวนวินาทีที่ 1,000 รอบนาฬิกา (ซึ่งไม่ใช่ 23 มิลลิวินาที)
dvdvorle

2
@นาย. มีความสุขคุณพูดถูก ฉันได้รับ 385 นาโนวินาทีโดย: 1,000 / 2600000000 = 0.000000385 = 385 นาโนวินาที คุณเห็นด้วยกับสิ่งนี้หรือไม่? ขอบคุณที่ชี้นำสิ่งนี้
Peter Senna

@dyasny ฉันกำลังมองหาฮาร์ดแวร์เพื่อทำการทดสอบซ้ำกับรุ่นที่อัปเดตแล้ว ความคิดใดที่ฉันสามารถพบมันได้?
Peter Senna

ฮาร์ดแวร์สามารถพบได้ง่ายในร้านค้า
dyasny

4

คำถามของคุณมีตัวแปรมากเกินไป แต่ฉันก็พยายาม จำกัด ให้แคบลง สมมติว่าคุณไปกับ VMware ESX คุณทำได้ทุกอย่างถูกต้อง - CPU ล่าสุดที่รองรับ virtualaization, เครื่องมือ VMware พร้อมที่เก็บข้อมูลเสมือนจริงและไดรเวอร์เครือข่าย, หน่วยความจำมากมาย ทีนี้สมมติว่าคุณรันเครื่องเสมือนเครื่องเดียวในการตั้งค่านี้ จากประสบการณ์ของฉันคุณควรมีความเร็ว CPU ประมาณ 90% สำหรับปริมาณงานที่ถูกผูกไว้กับ CPU ฉันไม่สามารถบอกคุณได้มากเกี่ยวกับความเร็วเครือข่ายเนื่องจากเราใช้ลิงค์ 1Gbps และฉันสามารถอิ่มตัวได้โดยไม่มีปัญหามันอาจแตกต่างกับลิงค์ 10Gbps แต่เราไม่มีอะไรเลย ปริมาณข้อมูลในการจัดเก็บข้อมูลขึ้นอยู่กับประเภทของการจัดเก็บด้วยฉันสามารถรับปริมาณการจัดเก็บข้อมูลได้ประมาณ 80% ด้วยการจัดเก็บในตัวเครื่อง แต่สำหรับ 1Gbps NFS มันใกล้เคียง 100% เนื่องจากเครือข่ายเป็นคอขวดที่นี่ ไม่สามารถบอกเกี่ยวกับการวัดอื่น ๆ ได้

ตัวเลขเหล่านี้เป็นค่าประมาณมากและขึ้นอยู่กับประเภทโหลดฮาร์ดแวร์เครือข่ายของคุณ มันจะยิ่งแย่ลงเมื่อคุณเรียกใช้เวิร์กโหลดจำนวนมากบนเซิร์ฟเวอร์ แต่สิ่งที่ฉันอยากพูดที่นี่คือภายใต้สภาวะที่เหมาะสมคุณควรจะได้ใกล้เคียงกับ 90% ของการแสดงพื้นเมือง

จากประสบการณ์ของฉันปัญหาที่ยิ่งใหญ่กว่าสำหรับแอปพลิเคชันที่มีประสิทธิภาพสูงคือความล่าช้า เรามีเอ็นจิ้นการคำนวณที่ได้รับการร้องขอจากลูกค้ากว่า 30 รายทำการคำนวณสั้น ๆ และส่งคืนผลลัพธ์ บนโลหะเปลือยมันมักจะผลักดัน CPU ถึง 100% แต่เซิร์ฟเวอร์เดียวกันบน VMware สามารถโหลด CPU ไปที่ 60-80% เท่านั้นและนี่เป็นสาเหตุหลักเนื่องจากความล่าช้าในการจัดการคำขอ / ตอบกลับ


ฉันสามารถพูดจากประสบการณ์ที่อิ่มตัวลิงค์ 10GbE กับ VM เดียวยากมาก เราใช้ VMWare FT ซึ่งสามารถทำให้ลิงค์ 1Gbps อิ่มตัวด้วยตนเองมากกว่า 10Gbe และมันไม่ได้ใกล้เคียงกับการอิ่มตัว
Mark Henderson

0

ฉันไม่ได้ขุดลงไปถึงประสิทธิภาพการทำงานพื้นฐานแบบดั้งเดิมเช่นการสลับบริบทและการปฏิบัติการปรมาณู แต่นี่คือผลลัพธ์ของการทดสอบกำลังดุร้ายที่ฉันดำเนินการเมื่อเร็ว ๆ นี้โดยใช้ไฮเปอร์ไวเซอร์ที่แตกต่างกัน ควรบ่งบอกถึงสิ่งที่คุณคาดหวังหากคุณเป็นส่วนใหญ่ CPU และ RAM แบนด์วิดท์ จำกัด

http://www.altechnative.net/2012/08/04/virtual-performance-part-1-vmware/


2
เยี่ยมมากที่คุณได้รับข้อมูลบางอย่างสำหรับ Xen และ KVM ... แต่ไฮเปอร์ไวเซอร์สองคนที่ได้รับความนิยมมากที่สุด! พวกเขากำลังหายไปอย่างสมบูรณ์ และคุณได้รวม Hypervisors หลายประเภทไว้ด้วยแล้ว SysAdmin ที่ไม่มีสติจะใช้มันเพื่อการผลิต
คริส S

โหวตลง ลิงค์เสียชีวิต
Tim Duncklee
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.