เหตุใดระบบเครือข่าย Virtualbox จึงใช้ virtio ช้า (bridged และ host-only, Debian)


5

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

ทั้งโฮสต์และไคลเอ็นต์ไม่มี GUI ที่พร้อมใช้งาน

ฉันใช้การทดสอบหลายอย่างโดยใช้ iperf เพื่อให้ได้ความคิดว่ามีอะไรผิดปกติ


Host = โฮสต์ Virtualbox (กำลังเรียกใช้ iperf -s ), Core i7 (4x2 cores @ 1,6 GHz), 16 GiB RAM

  • 192.168.0.13, eth0 (บรอดแบนด์บนเครือข่าย Gigabit), Gigabit Cat.6 ผ่านสวิตช์โซโห
  • 192.168.0.20, eth1 (Broadcom Gigabit ออนบอร์ด), Gigabit Cat.6 ผ่านสวิตช์ SoHo Gigabit
  • 192.168.14.1, vboxnet0, เครือข่ายเฉพาะโฮสต์ VirtualBox
  • ระบบปฏิบัติการ: Debian 7.2.0 amd64 (Wheezy), เคอร์เนล 3.2.0-4-amd64, SMP Debian 3.2.51-1 x86_64
  • VirtualBox: 4.1.18_Debianr78361

ไคลเอ็นต์ = ไคลเอ็นต์ VirtualBox (กำลังทำงาน iperf -s ) 2 คอร์ RAM 2 GiB

  • 192.168.0.14, eth0, เชื่อมต่อกับโฮสต์ eth1 โดยใช้ virtio
  • 192.168.14.100, eth1, vboxnet0, เครือข่ายโฮสต์เสมือนเท่านั้นโดยใช้ virtio
  • lsmod บนเครื่องเสมือนจะแสดงรายการ "virtio_net", "virtio_PCI", "virtio_ring" และ "virtio"
  • ติดตั้ง virtualbox-guest- (dkms | utils | x11) และ virtualbox-ose-guest-x11
  • ระบบปฏิบัติการ: Debian 7.2.0 amd64 (Wheezy), เคอร์เนล 3.2.0-4-amd64, SMP Debian 3.2.51-1 x86_64

เครื่องทางกายภาพอื่น ๆ (ทำงานอยู่ iperf -s )

  • 192.168.0.2, Gigabit Cat.6 ผ่านสวิตช์ SoHo Gigabit
  • ระบบปฏิบัติการ: เซิร์ฟเวอร์ Ubuntu

ทดสอบ 1 : การวนกลับบนเครื่องทางกายภาพทำงานได้อย่างยอดเยี่ยม (& gt; 60 Gbit / s) และได้รับการคอขวดโดย iperf-client ซึ่งอิ่มตัวหนึ่งหลัก

  • สถานการณ์จำลอง: ลูปแบ็คบนเครื่องจริง
  • คำสั่ง: iperf -c 127.0.0.1 -B 127.0.0.1 -i 60 -t 600
  • แบนด์วิดท์ (Mb / s): 62100 61900 61800 61900 61800 61900 61900 61900 61800 61800 - & gt; 61900
  • CPU: โฮสต์ (iperf -s) 70%, โฮสต์ (iperf -c) 100%

ทดสอบ 2 : การเชื่อมต่อแบบดั้งเดิมผ่าน eth0 ทำงานได้ตามที่คาดไว้

  • สถานการณ์จำลอง: โฮสต์ eth0 (Broadcom Gigabit ออนบอร์ด) - & gt; เครื่องออกกำลังกายแบบใช้สายอื่น ๆ ผ่านสวิตช์
  • คำสั่ง: iperf -c 192.168.0.2 -B 192.168.0.13 -i 60 -t 600
  • แบนด์วิดท์ (Mb / s): 942 941 941 941 941 941 941 941 941 - & gt; 941
  • CPU: โฮสต์ (iperf -c) 3.5%

ทดสอบ 3 : การเชื่อมต่อแบบคลาสสิกผ่าน Eth1 ทำงานตามที่คาดไว้:

  • สถานการณ์จำลอง: โฮสต์ eth1 (เซิร์ฟเวอร์ Intel Gigabit 4xNIC PCIe) - & gt; เครื่องออกกำลังกายแบบใช้สายอื่น ๆ ผ่านสวิตช์
  • คำสั่ง: iperf -c 192.168.0.2 -B 192.168.0.20 -i 60 -t 600
  • แบนด์วิดท์ (Mb / s): 942 941 941 941 941 941 941 941 941 - & gt; 941
  • CPU: โฮสต์ (iperf -c) 3.5%

ทดสอบ 4 : Loopback ภายในเครื่องเสมือนเกือบอิ่มตัวทั้งสองแกนเสมือนตามที่คาดไว้ สูงถึง 30% ของความเร็วเจ้าของโฮสต์:

  • สถานการณ์จำลอง: วนกลับภายในเครื่องเสมือนทั้งหมด
  • คำสั่ง: iperf -c 192.168.14.1 -B 192.168.14.100 -i 60 -t 600
  • แบนด์วิดท์ (Mb / s): 19600 19500 19600 19500 19500 19600 19600 19500 19500 - & gt; 19500
  • CPU: โฮสต์ (VBoxHeadless) 200% ไคลเอนต์ (iperf -s) 75% ไคลเอนต์ (iperf -c) 100%

ทดสอบ 5 : ไดรเวอร์บริดจ์ Bridged virtio ไปสู่โลกภายนอกมีประสิทธิภาพ 50% (40 - 70%) และใช้งานโฮสต์ - CPU โดยเฉพาะอย่างยิ่งขณะที่ไคลเอ็นต์ไม่ทำงาน

  • สถานการณ์จำลอง: Virtualbox eth0 virtio เชื่อมโยงกับโฮสต์ eth1 - & gt; เครื่องออกกำลังกายแบบใช้สายอื่น ๆ ผ่านสวิตช์
  • คำสั่ง: iperf -c 192.168.0.2 -B 192.168.0.14 -i 60 -t 600
  • แบนด์วิดท์ (Mb / s): 401 458 480 367 582 720 431 388 696 553 - & gt; 508
  • CPU: โฮสต์ (VBoxHeadless) 30-60% ลูกค้า (iperf -c) 3%

ทดสอบ 6 : โปรแกรมควบคุม Bridged virtio ไปยังโฮสต์ถูกคอขวดโดยไคลเอนต์ CPU เพียง 12% ของความเร็วดั้งเดิมของโฮสต์!

  • สถานการณ์จำลอง: Virtualbox eth0 virtio เชื่อมโยงกับโฮสต์ eth1 - & gt; โฮสต์ของ eth1
  • คำสั่ง: iperf -c 192.168.0.20 -B 192.168.0.14 -i 60 -t 600
  • แบนด์วิดธ์ (Mb / s): 7420 7660 7310 7620 7690 7580 7570 7580 7580 7700 7710 - & gt; 7580
  • CPU: โฮสต์ (VBoxHeadless) 160% โฮสต์ (iperf -s) 11% ลูกค้า (iperf -c) 100%

ทดสอบ 7 : ระบบเครือข่ายเฉพาะโฮสต์ที่ใช้ virtio นั้นมีปัญหาคอขวดโดยไคลเอนต์ CPU เพียง 8% ของความเร็วดั้งเดิมของโฮสต์!

  • สถานการณ์จำลอง: Virtualbox vboxnet0 โฮสต์เฉพาะอย่างเดียว
  • คำสั่ง: iperf -c 192.168.14.1 -B 192.168.14.100 -i 60 -t 600
  • แบนด์วิดธ์ (Mb / s): 4760 4740 4980 5300 4890 4560 5270 4850 5450 5070 - & gt; 4990
  • CPU: โฮสต์ (VBoxHeadless) 170% โฮสต์ (iperf -s) 13% ลูกค้า (iperf -c) 100%

ฉันได้เพิ่มการทดสอบเพิ่มเติมซึ่งทำให้ฉันเกิดความสับสนมากยิ่งขึ้น

ทดสอบ 8 = ทดสอบ 6 โดยใช้ Intel 82545EM ช้ากว่า virtio

  • สถานการณ์จำลอง: Virtualbox eth0 Intel 82545EM เชื่อมโยงกับโฮสต์ eth1 - & gt; โฮสต์ของ eth1
  • คำสั่ง: iperf -c 192.168.0.20 -B 192.168.0.14 -i 60 -t 600
  • แบนด์วิดท์ (Mb / s): 3250 3300 3270 3290 3320 3380 3330 3330 3300 3300 - & gt; 3310
  • CPU: โฮสต์ (VBoxHeadless) 110%, โฮสต์ (iperf -s) 5%, ไคลเอ็นต์ (iperf -c) 100%

ทดสอบ 9 = ทดสอบ 6 โดยใช้ Intel 82543GC ช้ามาก!

  • สถานการณ์จำลอง: Virtualbox eth0 Intel 82543GC เชื่อมโยงกับโฮสต์ eth1 - & gt; โฮสต์ของ eth1
  • คำสั่ง: iperf -c 192.168.0.20 -B 192.168.0.14 -i 60 -t 600
  • แบนด์วิดธ์ (Mb / s): 667 627 717 743 633 653 621 677 701 623 - & gt; 666
  • CPU: โฮสต์ (VBoxHeadless) 35 - 117%, โฮสต์ (iperf -s) 5 - 17%, ไคลเอ็นต์ (iperf -c) 50 - 100%

ทดสอบ 10 = ทดสอบ 5 โดยใช้ Intel 82545EM - & gt; ล้มเหลว เพื่อสร้างการเชื่อมต่อ

  • สถานการณ์จำลอง: Virtualbox eth0 Intel 82545EM เชื่อมโยงกับโฮสต์ eth1 - & gt; เครื่องออกกำลังกายแบบใช้สายอื่น ๆ ผ่านสวิตช์
  • คำสั่ง: iperf -c 192.168.0.2 -B 192.168.0.14 -i 60 -t 600
  • แบนด์วิดท์ (MB / s):
  • CPU: โฮสต์ (VBoxHeadless) 30-60% ลูกค้า (iperf -c) 3%

ทดสอบ 11 = ทดสอบ 5 โดยใช้ Intel 82543GC เริ่มต้นที่ดีจากนั้นลดลงเหลือเพียงเศษเสี้ยว!

  • สถานการณ์จำลอง: Virtualbox eth0 Intel 82543GC เชื่อมโยงกับโฮสต์ eth1 - & gt; เครื่องออกกำลังกายแบบใช้สายอื่น ๆ ผ่านสวิตช์
  • คำสั่ง: iperf -c 192.168.0.2 -B 192.168.0.14 -i 60 -t 600
  • แบนด์วิดท์ (Mb / s): 935 941 909 936 941 940 941 339 219 216 - & gt; 732
  • CPU: โฮสต์ (VBoxHeadless) 100% ลูกค้า (iperf -c) 60%

Q1: ทำไมการทดสอบลูปแบ็ค (4) ภายในเครื่องเสมือนช้ากว่าการทดสอบเดียวกันบนโฮสต์สามครั้ง มันควรจะอยู่ใกล้กับความเร็วพื้นเมืองหรือไม่?

Q2: ทำไมเครือข่ายบริดจ์ทั่วไปที่ใช้ virtio ทำให้โหลดบนโฮสต์มากและไม่ถึง 1 Gbps ทดสอบ (5)

คำถามที่ 3: เหตุใดการทดสอบบริดจ์ (6) ภายในเครื่องเสมือนช้ากว่าการทดสอบลูปแบ็คบนโฮสต์แปดครั้ง (ช้ากว่าการย้อนกลับบนเครื่องเสมือนสามเท่า)

Q4: ทำไมการทดสอบโฮสต์เท่านั้น (7) ภายในเครื่องเสมือนช้ากว่าการทดสอบลูปแบ็คสิบสองเท่าในโฮสต์ (ช้ากว่าการย้อนกลับสี่ครั้งบนเครื่องเสมือน) สี่เท่า

ฉันคาดว่าบางแง่มุมการจำลองเสมือนจะส่งผลกระทบต่อ Q1-Q4 ดูเหมือนว่า virtio จะทำให้เกิด Q2-Q4 - แต่ฉันไม่รู้ว่าจะสืบสวนที่ไหน

สิ่งที่ฟังดูไม่ดีนัก แต่ปัญหาเกิดขึ้นจากการใช้เครือข่ายเฉพาะโฮสต์สำหรับ iSCSI ส่งผลให้การถ่ายโอน HDD ต่ำเพียง 10 MB / s และการใช้ CPU สูง - HDD มีความสามารถ 147 MB ​​/ s มีบางอย่างผิดปกติอย่างแน่นอน ...


3
ทำไมคุณคาดหวังประสิทธิภาพสูง มันคือ VirtualBox หลังจากทั้งหมด ไม่ใช่ว่าคุณจะทำอะไรที่สำคัญกับมัน
Michael Hampton

2
สิ่งที่ @MichaelHampton บอกใบ้คือ VBox คืออะไร เดสก์ทอป โซลูชันการจำลองเสมือนคล้ายกับ VMware Workstation คุณไม่ควรใช้อะไรที่สำคัญกับมัน มีตัวเลือกประสิทธิภาพสูงอื่น ๆ อีกมากมายที่ควรใช้แทน Virtualbox VMware, Hyper-V, XenServer, KVM และอื่น ๆ
EEAA

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