ดังนั้นจริงๆแล้วค่าโสหุ้ยของเวอร์ชวลไลเซชันคืออะไรและเมื่อไหร่ที่ฉันควรจะกังวล?


16

ฉันกำลังค้นหากฎง่ายๆที่จะเข้าใจเมื่อไม่ต้องจำลองเครื่อง

ตัวอย่างเช่นฉันรู้ว่ากระบวนการที่ผูกกับ CPU อย่างเต็มที่ด้วยการใช้ประโยชน์เกือบ 100% อาจไม่ใช่ความคิดที่ดีในการทำเวอร์ชวลไลเซชัน แต่มีความรู้สึกในการใช้งานบางอย่าง หรือ 50%)

อีกตัวอย่าง: ถ้าฉันจำลองเวอร์ชวลแมชชีน 1,000 เครื่องแม้ว่ามันจะใช้เพียงเล็กน้อยหรือใช้ในระดับปานกลางมันอาจจะไม่ดีที่จะเรียกใช้ทั้งหมดบนโฮสต์ที่มี 4 คอร์เท่านั้น

บางคนสามารถสรุปคำแนะนำเกี่ยวกับการจำลองเสมือนโดยพิจารณาจากปริมาณงานของเครื่องหรือจำนวนเครื่องแขกที่แท้จริงเมื่อเทียบกับทรัพยากรโฮสต์ได้หรือไม่

ฉันมักจะทำเสมือนบนโฮสต์ Windows โดยใช้ VirtualBox หรือ VMWare แต่ฉันคิดว่านี่เป็นคำถามทั่วไป


1
แม้จะมีภาระผูกพันของ CPU บางอย่าง แต่ก็มีจุดหนึ่งที่ทำให้ virtualisation ทำให้ผู้ใช้สามารถส่งงานไปยังกลุ่มได้เนื่องจากอิมเมจ VM ช่วยให้พวกเขาสามารถควบคุมสภาพแวดล้อมของงานที่เรียกใช้งานได้ดีกว่า
เฟล็กโซ

แต่ในบางจุดการจัดตารางเวลาของ "การเรียกใช้ VM" ดูเหมือนจะไม่มีค่าใช้จ่ายที่จำเป็นเมื่อมันยากพอที่จะกำหนดเวลาเธรดภายใน VM เดียวได้ไหม
kvista

คำตอบ:


13

ระบบย่อยของดิสก์ ซึ่งมักจะเป็นทรัพยากรที่ใช้ร่วมกันน้อยที่สุด แน่นอนว่าหน่วยความจำ แต่สิ่งหนึ่งที่เห็นได้ชัด

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

การใช้หน่วยความจำเพียง 512 MB ในแขกจะทำให้แคชดิสก์ทั้งหมดบนโฮสต์ และมันก็ไม่ได้ถูกแบ่งเท่า ๆ กันในหมู่แขก

ไม่ต้องกังวลกับ CPU IO ด้วยวิธีนี้การทำเวอร์ช่วลไลเซชั่นนั้นมีประสิทธิภาพมากมักจะเกี่ยวข้องกับกระบวนการหลายกระบวนการที่ทำงานบนระบบเดียวกันเท่านั้น ฉันไม่ค่อยเห็นระบบ multi-xeon ที่ใช้ CPU 100%

แก้ไข: พิมพ์ผิด


3
ข้อกำหนด I / O ของฮาร์ดดิสก์จำนวนมากจะเป็นเหตุผล # 1 ที่จะไม่ทำให้เป็นเสมือนจริง - เป็นทรัพยากรที่ได้รับผลกระทบหนักที่สุดจากบทลงโทษระบบเสมือนจริงดูcodinghorror.com/blog/2006/10/…
Jeff Atwood

ขอบคุณ - ความคิดเห็นทั้งสองมีประโยชน์ เพียงแค่สงสัยว่าถ้าใครรู้ว่าทำไมการใช้ดิสก์สูงเป็นปัญหาในการจำลองเสมือนจริง ทำไมวิศวกรเวอร์ชวลไลเซชันจะมองข้ามปัญหานั้นไป หรือว่ามันซับซ้อนกว่า CPU virtualization
kvista

หมายเหตุ - @Jeff ฉันกำลังอ่านบล็อกโพสต์ปี 2549 ของคุณและฉันคิดว่าจะอธิบายว่าทำไมดีกว่า (เช่นการจองแกนหมุน) แต่คำถามของฉันต่อผู้ออกแบบ / ผู้ใช้ระบบเสมือนจริงยังคงเหมือนเดิม - นี่เป็นปัญหาพื้นฐานสำหรับการจำลองเสมือน วิธี CPU virtualization ไม่ได้หรือไม่
kvista

3
มีจำนวนมากเท่านั้นที่ฮาร์ดดิสก์สามารถทำได้ สำหรับฮาร์ดดิสก์ 5 มิลลิวินาทีจะมี 200 ครั้งต่อวินาที และโดยทั่วไปเมื่อระบบปฏิบัติการคัดลอกไฟล์หรือสแกนไดเรกทอรีจะใช้ 100% ของดิสก์ io เสมอ ในช่วงเวลานี้คำขอขนาดเล็กทั้งหมดจากดิสก์จะล่าช้าและมีคำขอจำนวนมาก ยังบัฟเฟอร์ระบบไฟล์จะสูญเปล่าเนื่องจากการคัดลอก อาจกล่าวได้ว่าแนวคิดของระบบปฏิบัติการที่ทำงานนั้นต้องอาศัยฮาร์ดไดรฟ์ที่ไม่ได้ใช้งาน
Antti Rytsölä

1
ขอบคุณ ฉันเดาว่าคงจะน่าสนใจหากดูว่า SSD เปลี่ยนสมการนี้หรือไม่ แต่ตอนนี้เรากำลังเข้าสู่โหมดสนทนามากเกินไป ฉันเข้าใจแล้ว - ขอบคุณทุกคน
kvista

15

สิ่งที่ฉันจะไม่ใส่ใน VM:

  • สิ่งใดก็ตามที่ใช้ฮาร์ดแวร์เฉพาะที่ไม่สามารถทำเวอร์ชวลไลเซชันได้: โดยทั่วไปคือกราฟิก, โมดูลรักษาความปลอดภัยฮาร์ดแวร์บางตัว, สิ่งใดก็ตามที่มีไดรเวอร์ที่ปรับแต่งตามความต้องการ (เช่นไดรเวอร์เครือข่ายสำหรับวัตถุประสงค์พิเศษ)

  • ระบบที่มีปัญหาลิขสิทธิ์ ซอฟต์แวร์บางตัวคิดค่าใช้จ่ายต่อ CPU หรือคอร์จริงไม่ว่าคุณจะจัดสรรให้กับ VM เพียงเล็กน้อย คุณจะได้รับความนิยมในการตรวจสอบหากคุณมีซอฟต์แวร์ลิขสิทธิ์สำหรับคอร์เดียวที่ทำงานใน VM บนเซิร์ฟเวอร์ 32-core

สิ่งที่ฉันไม่แนะนำให้ใส่ใน VM:

  • ซอฟต์แวร์ที่พยายามใช้ทรัพยากรทั้งหมดในฮาร์ดแวร์สินค้าโภคภัณฑ์อยู่แล้ว เครื่องจักรที่ทำงานเป็นส่วนหนึ่งของความพยายาม "ข้อมูลขนาดใหญ่" เช่น hadoop มักถูกออกแบบมาให้ทำงานกับโลหะเปลือย

  • สิ่งใดก็ตามที่จะได้รับการปรับอย่างประณีตเพื่อใช้ประโยชน์จากทรัพยากร เมื่อคุณเริ่มปรับฐานข้อมูลจริง ๆ VMs ที่กำลังแย่งชิงทรัพยากรต่าง ๆ กำลังจะส่งผลกระทบต่องานของคุณ

  • สิ่งใดที่มีคอขวดขนาดใหญ่อยู่แล้ว มันไม่เล่นกับตัวเองได้ดีมันจะไม่เล่นกับคนอื่นได้ดี

มีบางสิ่งที่ยอดเยี่ยมมากสำหรับการใส่ใน VMs:

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

  • แอปพลิเคชันที่ไม่ได้ปรับขนาดได้ดี (หรือง่าย) ด้วยตนเอง รหัสดั้งเดิมค่อนข้างบ่อยในหมวดหมู่นี้ หากแอปจะไม่ขยายเพื่อรับเซิร์ฟเวอร์ให้ใช้เซิร์ฟเวอร์เสมือนจำนวนเล็กน้อย

  • โครงการ / แอปพลิเคชันที่เริ่มต้นเล็ก แต่เติบโต มันง่ายกว่ามากในการเพิ่มทรัพยากรลงใน VM (เช่นเดียวกับการย้ายไปสู่ฮาร์ดแวร์ที่ใหม่กว่าและใหญ่กว่า) เมื่อเทียบกับการเริ่มต้นบนโลหะเปลือย

นอกจากนี้ฉันไม่แน่ใจว่าถ้าคุณพูดเกินจริงเกี่ยวกับการใส่ VM จำนวนมากในโฮสต์เดียว แต่ถ้าคุณพยายามอัตราส่วน VM: HW ขนาดใหญ่คุณอาจต้องการพิจารณา ESX, Xen, KVM แทน คุณจะรู้สึกดีกว่าการใช้ VMware หรือ virtualbox บน Windows


1
+1 ความเห็นที่เป็นประโยชน์มากจัด - ขอบคุณ!
kvista

อีกหนึ่งความคิดเห็น - แม้ว่าฉันจะใช้ ESX ฯลฯ ฉันคิดว่าในบางจุดไม่มีความหมายในการวางเครื่อง X ลงในโฮสต์หลัก Y อะไรคือกฎของหัวแม่มือที่ดี? ฉันสมมติว่ามีเอกสารสีขาว virtualization บางแห่งต้องแก้ไขปัญหานี้ แต่น่าเศร้าที่ฉันไม่สามารถค้นหาได้อย่างง่ายดาย
kvista

1
สำหรับ VMware คุณสามารถเริ่มต้นที่นี่: vmware.com/technology/whyvmware/calculator
Cakemox

สำหรับการอ้างอิง: ต่อลิงก์ VMWare ด้านบนคุณสามารถกำหนดค่าได้ถึง 30 VMs ต่อ CPU ค่าเริ่มต้นคือ 6 VMs ต่อ CPU
Alex Yursha

4

ประสิทธิภาพการทำงานแบบเสมือนมีสองจุด

  • คอขวดที่ใช้ร่วมกัน
  • การแข่งขัน

บนคอขวดที่ใช้ร่วมกันใครอยู่ในกลุ่มเดียวกัน? หากคุณอยู่ในสภาพแวดล้อมแบบเวอร์ชวลไลเซชันคุณขึ้นอยู่กับพันธมิตรโฮสติ้งที่ซื่อสัตย์กับคุณ

ฉันคิดว่าคำถามหลักสำหรับประสิทธิภาพแบบดิบ (โดยเฉพาะการตอบโต้) ที่ถามคือส่วนใดของระบบจำลองเสมือน สิ่งนี้จะแตกต่างกันไปตามการตั้งค่า ดิสก์และเครือข่ายเป็นตัวเลือกทั่วไป ตามกฎของหัวแม่มือการจำลองจะเพิ่มประสิทธิภาพ "ต้นทุน" ของการดำเนินการเป็นสองเท่าดังนั้นเวลาในการตอบสนองของฮาร์ดแวร์ใด ๆ ควรถูกนับเป็นสองเท่าและจำนวน thruput ใด ๆ ควรลดลงครึ่งหนึ่ง


1
ตัวเลขที่ผมเห็นเป็น CPU ที่ 96-97% ซึ่งเป็นเครือข่ายที่ 70-90% และดิสก์ที่ 40-70% (จากโลหะเปลือย)
เจฟฟ์แอด

1
+1 กฎของความคิดเห็นเกี่ยวกับนิ้วหัวแม่มือมีประโยชน์
kvista

2

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

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

OTOH หากคุณต้องการรวมเครื่องจำนวนมากที่ไม่ได้ใช้งานตลอดเวลาการจำลองเสมือนเป็นหนทางข้างหน้า


1

คำตอบที่ดีจาก anttiR

นอกจากนี้ระบบเวลาที่สำคัญ ฉันเพิ่งคิดว่า Hyper-V ค่าเล็กน้อยเน่า (vm ช้าลงระบบปฏิบัติการที่ทันสมัยใน vm ทำอย่างนั้นได้รับการ resynced บ่อยครั้ง) ไม่ได้เล่นให้ดีกับแอปพลิเคชันที่สำคัญที่ฉันกำลังพัฒนา นอกจากนี้ฉันจะใช้ซีพียูจำนวนมากที่นั่นและวางแผนที่จะซื้อเครื่อง 12 คอร์เพื่อใช้ในการผลิต


เครื่องหมายดอกจันเป็นหนึ่งในแอปพลิเคชันดังกล่าว คุณได้รับสิ่งที่ขี้ขลาดมากระหว่างการประชุมทางโทรศัพท์
Ryaner

ฉันมีปัญหากับความเสถียรของนาฬิกาสำหรับการบันทึกข้อมูล) ขอบคุณสวรรค์ฉันได้รับการประทับเวลาที่เชื่อถือได้จากฟีดข้อมูล แต่พบว่ามีปัญหาเครือข่ายยากเมื่อนาฬิการะบบไม่เสถียร
TomTom
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.