ฉันพบว่าไม่มีคำตอบที่ง่ายและแน่นอนสำหรับคำถามเช่นคุณ โซลูชันเวอร์ช่วลไลเซชั่นแต่ละตัวจะทำงานแตกต่างกันไปตามการทดสอบประสิทธิภาพเฉพาะ นอกจากนี้การทดสอบเช่นปริมาณข้อมูลในดิสก์ 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:
โปรดทราบว่าค่าเหล่านั้นเป็นค่าทั่วไปและไม่สะท้อนสถานการณ์กรณีเฉพาะ
โปรดดูบทความเต็ม: http://petersenna.com/en/projects/81-performance-overhead-and-comparative-performance-of-4-virtualization-solutions