เหตุใด Virtualbox จึงใช้ CPU 15-20% เมื่อ VM หยุดชั่วคราว


10

ฉันใช้ VirtualBox 3.1 บน Ubuntu ด้วยแขก Win XP ฉันสังเกตเห็นถึงความประหลาดใจของฉันที่เมื่อฉันหยุด VM (หน้าจอเป็นสีเทา) VirtualBox ยังคงใช้ซีพียูของโฮสต์ 15-20%

นี่เป็นพฤติกรรมปกติหรือไม่

มีวิธีหลีกเลี่ยงหรือไม่ (โดยไม่บันทึกสถานะของ VM และออกจาก VirtualBox)

ขอบคุณสำหรับข้อมูลเชิงลึกใด ๆ !

~ lara

คำตอบ:


8

เพื่อลดการใช้งาน CPU VirtualBox ตลอดเวลาให้ใช้วิธีแฮ็กแปลก ๆ นี้

สร้างเครื่องเสมือนใหม่และอย่าติดตั้งระบบปฏิบัติการ บอก VirtualBox ว่ามันจะทำงาน DOS และให้ทรัพยากรขั้นต่ำที่แน่นอน อย่าติดตั้ง O / S เรียกใช้มันปล่อยให้มันผิดพลาดในการบูตและลดมัน

ในขณะที่ใช้งาน O / S ที่แท้จริงของคุณใน VM ที่สองคุณจะเห็นการใช้งาน CPU ของ Virtualbox ที่ไม่ได้ใช้งานลดลงถึง 3-5%

แนวคิดจาก jed4czar: http://ubuntuforums.org/showthread.php?s=58e862a814e65eb96f8fe8389b615366&t=838073&page=2

แก้ไข:เพื่อตอบคำถามของคุณโดยตรง

เหตุใด Virtualbox จึงใช้ CPU 15-20% เมื่อ VM หยุดชั่วคราว

มันเป็นข้อผิดพลาด มันมักจะใช้ CPU มากกว่า 15-20% มากกว่าที่มันต้องการเมื่อมี VM ตัวใดตัวหนึ่งทำงานนอกเสียจากว่ามีการใช้การแฮ็ค

มีวิธีหลีกเลี่ยงหรือไม่

ดูแฮ็คข้างต้น



ooooh แก้ไขให้ฉันด้วย! เยี่ยมมากขอบคุณ สำหรับข้อมูลฉันใช้ windows 8.1, VM เป็น centos และใช้เวลาว่างประมาณ 15% cpu VBox v4.3.12
Sebas

น่าทึ่งนี่คือปัญหา
kmarsh

4

ฉันพยายามแฮ็คที่อธิบายไว้ข้างต้นกับ DOS VM แต่ไม่ประสบความสำเร็จ (ใช้งาน Ubuntu 12.04 กับผู้เข้าพักบน MacBook Pro กับ OS X) ฉันยังลองเปลี่ยนแปลงพารามิเตอร์เคอร์เนลที่กล่าวถึงในเธรด Oracleอีกครั้งไม่มีการเปลี่ยนแปลง ไม่ว่าฉันจะทำอะไรแขกของฉันดูเหมือนจะกินซีพียูประมาณ 15-20% อย่างไรก็ตามฉันสังเกตเห็นว่าแขกคนหนึ่งที่ฉันเกิดขึ้นเพื่อมอบหมาย CPU 2 ตัวไม่ได้เคี้ยว 15-20% - มันทำงานได้อย่างที่คาดไว้

แน่นอนเมื่อฉันเปลี่ยนคนอื่นเป็น 2 CPU ปัญหาก็หายไป จากประสบการณ์ก่อนหน้านี้ฉันรู้ว่าการสลับเป็น 2 CPU ยังเปิดใช้งานตัวเลือก IO APIC ในส่วนเมนบอร์ดดังนั้นฉันสงสัยว่านี่เป็นการเปลี่ยนแปลงที่น่าสนใจอย่างแท้จริง นั่นคืออันนี้:

เปิดใช้งาน IOAPIC

โปรดทราบว่าคุณต้องปิดเครื่องเพื่อเปลี่ยนการตั้งค่านี้มิฉะนั้นจะเป็นสีเทา เมื่อฉันเปิดใช้งานสิ่งนี้กับแขกและรีสตาร์ทมันไม่สำคัญว่าฉันจะมีซีพียูอย่างน้อย 1 ตัวการใช้งานซีพียู 15-20% หายไปดังนั้นฉันคิดว่าฉันจะแบ่งปันวิธีแก้ปัญหาของฉันที่นี่


1

ฉันมีปัญหาเดียวกันในกล่อง Windows 7 Quad ที่ใช้ Oracle 5 ใน VM

ทำตามคำแนะนำของอดัมฉันตรวจสอบตัวเลือกเปิดใช้งาน IO APIC แต่ไม่มีประโยชน์ ดังนั้นฉันจึงตามความคิดของ kmarsh ซึ่งอาจใช้เวลาน้อยกว่าหนึ่งนาทีในการลองและการใช้งานตัวประมวลผลลดลงจาก 15-20% เป็น 4-5%

การตั้งค่าที่ใช้คือชื่อ: หน่วยความจำแฮ็คประเภท: อื่น ๆ รุ่น: DOS ขนาดหน่วยความจำ: 4MB, ฮาร์ดไดรฟ์: อย่าเพิ่มฮาร์ดไดรฟ์เสมือนจริง คลิก [สร้าง] การเริ่มต้น VM ขอดิสก์เริ่มต้นฉันใช้: Host Drive 'D:' คลิก [Start] สถานะเครื่องเสมือน: "FATAL: ไม่สามารถอ่านได้จากสื่อสำหรับบูต! ระบบหยุดทำงาน" ณ จุดนั้นการใช้งาน cpu ลดลงดังนั้นฉันจึงย่อขนาดหน้าต่าง การเริ่มต้น VM ที่สองไม่สร้างความแตกต่าง


ดูเหมือนว่าปัญหานี้ซับซ้อนมากจนไม่มีใครแก้ไขได้
kmarsh

0

ฉันประสบปัญหา VirtualBox นี้บนเครื่อง P4 2-cpu กับ 3gigs ram ที่ใช้โฮสต์ CentOS 5.5

ฉันไม่เคยพบปัญหานี้ในเครื่อง i720 8cpu ที่มี 8 gigs ที่ใช้ 64-bit Win7 ฉันใช้เครื่องเสมือน VMWare 3 เครื่องพร้อมกับ VirtualBox ทั้งหมดมีหน่วยความจำ 2-gigs และไม่มีปัญหา CPU เลย

สิ่งนี้ชี้ให้เห็นว่าการทำงานบนเครื่อง "smallish" หรือบนโฮสต์ Linux เป็นปัญหา

วิธีการแก้ปัญหาของคุณทำงานได้ดีขอบคุณ

ฉันทราบว่าโพสต์ก่อนหน้านี้มีอายุหนึ่งปีและ VirtualBox ของฉันเป็นเวอร์ชัน 4.0.4 ล่าสุดดังนั้น Oracle ยังไม่แก้ไขข้อผิดพลาดนี้


2
ฉันคาดหวังว่าการลงโทษประสิทธิภาพนี้เกี่ยวข้องกับหน้าตาของ CPU รุ่นใหม่ที่มี VT-x และคล้ายกันเพื่ออนุญาตการจำลองเสมือนแบบใช้ฮาร์ดแวร์ช่วยซึ่งหมายความว่าโปรแกรม VirtualBox ไม่ทำงานและทำให้การใช้ CPU ลดลง P4 น่าจะไม่มีเทคโนโลยี VT-x ดังนั้นจะต้องแปลการเรียกของระบบผ่านซอฟต์แวร์และใช้ CPU มากขึ้น
Mokubai

ตอนนี้ต้องได้รับการแก้ไขแล้ว ใช้โฮสต์ Ubuntu และแขก XP ที่ใช้งาน VirtualBox v4.3.6 เมื่อฉันหยุดพักการใช้งาน CPU ลดลง 1%
ผู้สมัคร

0

คำตอบอื่น ๆ ไม่ได้อธิบายหรือแก้ไขข้อผิดพลาดสำหรับฉัน (โฮสต์ Debian แขกของ Ubuntu หยุดชั่วคราว) Oracle มีส่วนสำหรับสิ่งนี้:

แขกของ Linux บางคนอาจทำให้โหลด CPU สูงแม้ว่าระบบของแขกจะไม่ได้ทำงาน สิ่งนี้อาจเกิดจากความถี่ตัวจับเวลาสูงของเคอร์เนลของแขก Linux ดิสทริบิวชันบางตัวเช่น Fedora จัดส่งเคอร์เนล Linux ที่กำหนดค่าไว้สำหรับความถี่ตัวจับเวลา 1000Hz เราขอแนะนำให้คอมไพล์เคอร์เนลของแขกอีกครั้งและเพื่อเลือกความถี่ตัวจับเวลา 100Hz

เคอร์เนลของ Linux ที่จัดส่งมาพร้อมกับ Red Hat Enterprise Linux รวมถึงเคอร์เนลของลีนุกซ์ที่เกี่ยวข้องเช่น CentOS และ Oracle Linux สนับสนุนเคอร์เนลตัวแบ่งพารามิเตอร์ = N ดังนั้นเมล็ดดังกล่าวจึงสนับสนุนความถี่ตัวจับเวลาที่ต่ำกว่าโดยไม่ต้องรวบรวมใหม่ เราขอแนะนำให้คุณเพิ่มตัวแบ่งพารามิเตอร์เคอร์เนล = 10 เพื่อเลือกความถี่ตัวจับเวลาเคอร์เนลแขกที่ 100Hz

ที่มา: แขกของ Linux อาจทำให้โหลด CPU สูง

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