ฉันกำลังติดตั้งเซิร์ฟเวอร์ 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 มีบางอย่างผิดปกติอย่างแน่นอน ...