VMXNET3 ได้รับขนาดบัฟเฟอร์และการใช้หน่วยความจำ


12

พื้นหลัง

เรามีเหตุการณ์ที่คลัสเตอร์ Windows failover ขัดข้อง ชันสูตรศพพบว่าโหนดถูก "ลบออก" ตามที่อธิบายไว้ในบทความนี้

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

บทความ VMware KB ที่เกี่ยวข้องเกี่ยวกับการพูดคุยนี้เกี่ยวกับการเพิ่มSmall Rx BuffersและการRx Ring #1ตั้งค่า แต่เตือนว่าการเพิ่มมากเกินไปเหล่านี้สามารถเพิ่มโอเวอร์เฮดของหน่วยความจำบนโฮสต์ได้อย่างมาก

หลังจากการตรวจสอบNetwork Interface\Packets Received Discardedเคาน์เตอร์วัดประสิทธิภาพสำหรับ Windows VM ของเรา ~ 150, 22 vNICs จากแขก 16 คนมีแพ็คเก็ตที่ถูกทิ้ง

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

คำถาม

  1. ความสัมพันธ์ระหว่างจำนวนของบัฟเฟอร์และขนาดแหวนคืออะไร?
  2. เราคำนวณจำนวนหน่วยความจำที่ใช้สำหรับค่าที่กำหนดของการตั้งค่าเหล่านี้ได้อย่างไร
  3. เนื่องจากการตั้งค่าเหล่านี้อยู่บน NIC ภายในระบบปฏิบัติการ guest ฉันคิดว่าเป็นการตั้งค่าไดรเวอร์ นี่ทำให้ฉันคิดว่า RAM ที่ใช้อาจเป็นเพจที่มีการทำเพจหรือไม่จพู
    1. ถูกต้องหรือไม่
    2. ถ้าเป็นเช่นนั้นฉันควรจะกังวลเกี่ยวกับเรื่องนี้?
  4. มีข้อกังวลที่ฉันไม่ได้คำนึงถึงที่นี่หรือไม่?

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

คำถามเหล่านี้บางส่วน (อาจทั้งหมด) อาจไม่เจาะจงกับ VMware หรือการจำลองเสมือน


ฉันเห็นสิ่งที่ไม่สม่ำเสมอจริง ๆ เมื่อเอ็นจิ้น TCP offload ของ NIC ทางกายภาพทำงานผิดปกติและ VMs แสดงพฤติกรรมแปลก ๆ อาจเป็นผู้นำที่คุณสามารถติดตามได้
SpacemanSpiff

@SpacemanSpiff เป็นการตรวจสอบที่คุ้มค่า แต่มีเพียง 16 VMs จาก 150+ ที่แสดงพฤติกรรมดังกล่าว 16 เหล่านั้นถูกกระจายไปทั่วทั้ง 12 โหนดคลัสเตอร์และพวกมันทั้งหมดได้รับปริมาณการใช้งานสูงเป็นครั้งคราวซึ่งน่าจะเป็นสิ่งที่ทำให้เกิดอาการที่อธิบายไว้ในบทความ KB บางส่วนเป็นกลุ่ม Windows ดังนั้นพวกเขาจึงไม่ย้ายด้วย DRS มิฉะนั้นฉันอาจพิจารณาว่าแขกที่ได้รับผลกระทบทั้งหมดแสดงแพ็กเก็ตที่ถูกทิ้งขณะที่อยู่ในโฮสต์ที่เฉพาะเจาะจงก่อนที่จะปิด vMotion ฉันจะตรวจสอบอีกครั้งและดูว่าฉันสามารถค้นหาความสัมพันธ์ใด ๆ ขอบคุณ
ต้มตุ๋น

Microbursting บางทีนี่คือฮาร์ดแวร์อะไร?
SpacemanSpiff

@SpacemanSpiff เซิร์ฟเวอร์ IBM รุ่นที่แตกต่างกันสองสามและการแก้ไขยังไม่แน่ใจว่า NICs ฉันสามารถตรวจสอบเฉพาะในวันพรุ่งนี้
ต้มตุ๋น

คำตอบ:


5

ความสัมพันธ์ระหว่างจำนวนของบัฟเฟอร์และขนาดแหวนคืออะไร?

พวกมันเกี่ยวข้องกัน แต่เป็นอิสระ rx "ring" หมายถึงชุดบัฟเฟอร์ในหน่วยความจำที่ใช้เป็นคิวเพื่อส่งแพ็กเก็ตเครือข่ายขาเข้าจากโฮสต์ (ไฮเปอร์ไวเซอร์) ไปยัง guest (Windows VM) หน่วยความจำเครือข่ายได้รับการสงวนไว้ในเกสต์และได้รับการแมปลงในหน่วยความจำโฮสต์

เมื่อแพ็กเก็ตเครือข่ายใหม่เข้ามาในโฮสต์พวกเขาจะติดตั้งบัฟเฟอร์ที่มีอยู่ถัดไปในวงแหวน จากนั้นโฮสต์จะเรียกใช้ IRQ ในแขกซึ่งไดรเวอร์ของผู้เข้าร่วมตอบกลับโดยการแพ็คเก็ตเขาปิดวงแหวนและส่งไปยังสแต็กเครือข่ายของ guest OS ซึ่งสันนิษฐานว่าส่งไปยังแอปพลิเคชันผู้เยี่ยมชม สมมติว่าแพ็กเก็ตมาช้าพอและไดร์เวอร์เกสต์กำลังประมวลผลมันเร็วพอควรมีสล็อตว่างในวงแหวนเสมอ อย่างไรก็ตามหากแพ็กเก็ตมาเร็วเกินไปหรือแขกกำลังประมวลผลช้าเกินไปแหวนอาจเต็มและแพ็คเก็ตอาจถูกทิ้ง (ตามที่คุณเห็นในสถานการณ์ของคุณ)

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

บัฟเฟอร์ Rx Ring # 1 / Small Rx ใช้สำหรับเฟรมที่ไม่ใช่จัมโบ้ หากคุณมีการกำหนดค่า NIC เริ่มต้นนั่นเป็นเสียงกริ่งเดียวที่จะใช้

เราคำนวณจำนวนหน่วยความจำที่ใช้สำหรับค่าที่กำหนดของการตั้งค่าเหล่านี้ได้อย่างไร

สมมติว่าคุณกำลังพูดถึงเฟรมที่ไม่ใช่จัมโบ้บัฟเฟอร์แต่ละตัวต้องมีขนาดใหญ่พอที่จะเก็บแพ็คเก็ตเครือข่ายทั้งหมดได้ประมาณ 1.5kb ดังนั้นถ้าคุณมีบัฟเฟอร์ 8192 ตัวก็จะใช้ 12MB วงแหวนขนาดใหญ่จะใช้หน่วยความจำเพิ่มขึ้น แต่ตัวอธิบายมีขนาดเล็ก (ไบต์) ดังนั้นจึงเป็นบัฟเฟอร์ที่คุณต้องกังวล

เนื่องจากการตั้งค่าเหล่านี้อยู่บน NIC ภายในระบบปฏิบัติการ guest ฉันคิดว่าเป็นการตั้งค่าไดรเวอร์ นี่ทำให้ฉันคิดว่า RAM ที่ใช้อาจเป็นเพจที่มีการทำเพจหรือไม่จพู

ใช่มันเป็นพูลแบบไม่มีเพจ หากบัฟเฟอร์แหวนถูกจั่วหน้ามันอาจส่งผลให้เกิดแพ็คเก็ตที่ถูกทิ้งในขณะที่บัฟเฟอร์ถูกจั่วกลับเข้าไป

มีข้อกังวลที่ฉันไม่ได้คำนึงถึงที่นี่หรือไม่?

ฉันไม่แน่ใจว่าสิ่งนี้เกี่ยวข้องกับสถานการณ์ของคุณ แต่อาจเป็นเรื่องน่าสังเกตว่าเสียงกริ่งขนาดใหญ่จะเพิ่มการปล่อยแคชของเส้นทางเครือข่าย rx ใน microbenchmarks คุณจะเห็นว่าวงแหวนขนาดใหญ่มักจะเจ็บประสิทธิภาพ ที่กล่าวไว้ในแอปพลิเคชันในชีวิตจริงหากแพ็กเก็ตถูกทิ้งซึ่งมักจะเป็นข้อตกลงที่ใหญ่กว่าประสิทธิภาพที่เพิ่มขึ้นเล็กน้อยเมื่อเกิดการระเบิดความเร็ว

ที่มา: ฉันทำงานที่ VMware


1
ขอบคุณ Roger คำตอบแรกที่ยอดเยี่ยม ฉันไม่ได้อยู่ที่ บริษัท นี้มาระยะหนึ่งแล้วปัญหานี้ได้หมดไปจากเรดาร์ของฉัน แต่เพื่อความสมบูรณ์มีความกังวลเกี่ยวกับการใช้หน่วยความจำในการตั้งค่าเหล่านั้นให้มากที่สุดหรือไม่? บทความ KB ทำให้ดูเหมือนว่าคุณสามารถใช้หน่วยความจำได้มากมายด้วยวิธีนี้ แต่ดูเหมือนว่าปริมาณจะน้อยมาก ฉันถามสิ่งนี้เพราะมันยังไม่ชัดเจนว่าจะปรับขนาดค่าเหล่านี้นอกเหนือจากการทดลองและข้อผิดพลาดได้อย่างไรดังนั้นอาจตั้งค่าให้สูงสุดได้ง่ายที่สุดหากไม่มีข้อเสียเล็กน้อย
ต้มตุ๋น

1
Re: การใช้งานหน่วยความจำสองสิ่งที่ฉันจะทราบ: 1) หากคุณไม่ได้ใช้เฟรมจัมโบ้ฉันยอมรับปริมาณหน่วยความจำที่การตั้งค่าสูงสุดยังคงค่อนข้างเล็ก หากคุณใช้เฟรมขนาดใหญ่ขนาดบัฟเฟอร์จะอยู่ที่ประมาณ 9kb ดังนั้นคุณจึงใช้หน่วยความจำมากขึ้น 2) จำนวนหน่วยความจำที่มีอยู่ในพูลที่ไม่ใช่เพจมีขนาดเล็กกว่าจำนวนหน่วยความจำทั้งหมดบนโฮสต์ ฉันไม่ใช่ผู้เชี่ยวชาญที่นี่ แต่ลิงค์นี้มีบทสรุปที่ครอบคลุมเกี่ยวกับวิธีการคำนวณหน่วยความจำที่มีอยู่: blogs.technet.microsoft.com/markrussinovich/2009/03/10//
Roger Jacobson

ขอบคุณมาก ฉันหวังว่าคำตอบนี้จะช่วยให้ใครบางคนในอนาคต (บางทีมันอาจจะเป็นฉันถ้าฉันพบอีกครั้งนี้!)
ต้มตุ๋น

0

ฉันไม่มีคำตอบสำหรับจุด 1-2-3 แต่คุณสามารถตรวจสอบกับ enginner เสมือนของคุณเกี่ยวกับการกำหนดค่าโฮสต์ Vmware ถ้าเขาเป็น VCP เขาจะเข้าใจเนื้อหา :)

คุณต้องตรวจสอบโฮสต์ของคุณเพราะปัญหา windows อาจอยู่ในโฮสต์ไม่ใช่แขก

มีคุณสมบัติฮาร์ดแวร์มากมายที่สามารถอธิบายปัญหาของคุณ directpath io, rss, vcpu, รูปแบบการจัดการพลังงาน ...

ฉันสามารถให้ลิงค์กับคุณเพื่อช่วยทีมเสมือนของคุณหรือคุณ :)

ลิงค์นี้เกี่ยวกับการปรับโฮสต์ http://buildvirtual.net/tuning-esxi-host-networking-configuration/

และไฟล์ PDF ไขมันนี้:

http://www.vmware.com/pdf/Perf_Best_Practices_vSphere5.0.pdf

และอันนี้เกี่ยวกับ RSS:

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2008925


ขอบคุณสำหรับการตอบกลับ แต่ฉันเป็น VCP นี่ไม่ได้เกี่ยวกับการกำหนดค่าโฮสต์เลย บทความ Microsoft ที่ฉันเชื่อมโยงเพื่ออธิบายว่าตัวนับประสิทธิภาพที่เป็นปัญหาไม่ควรสูงกว่า 0 และอยู่บน VM หลายเครื่อง ฉันพยายามทำความเข้าใจเกี่ยวกับการตั้งค่า vNIC นอกเหนือจากที่อธิบายไว้ในบทความ VMware KB
นักเทศน์

-1

ฉันไม่ได้อยู่ในตำแหน่งที่จะค้นหาและชี้ให้คุณไปยังหน้าที่ถูกต้อง: ดังนั้นฉันขอให้คุณค้นหารายละเอียดด้วยตัวคุณเอง ... (ขออภัย)

ใน Fail over Cluster มีการตั้งค่า 4 แบบซึ่งสามารถ tweeked ได้ และพวกเขาจะไม่ส่งผลกระทบต่อบัฟเฟอร์หรือเพจหรือไม่เพจ ... มันเปลี่ยนวิธีการล้มเหลวมากกว่าคลัสเตอร์ทำให้การตัดสินใจที่จะพิจารณาโหนด "ลบ" การตั้งค่าเหล่านี้คือ:

SameSubnetDelay SameSubnetThreshold CrossSubnetDelay CrossSubnetThreshold

พวกเขาอาจไม่แก้ปัญหาของคุณ แต่การปรับเปลี่ยนสิ่งเหล่านี้อาจทำให้คุณไม่มีปัญหาในขณะนี้ ...

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

HTH, Edwin


PS: คุณสามารถแจ้งให้เราทราบรุ่นของ Windows ที่คุณใช้อยู่ได้หรือไม่
Edwin van Mierlo

นี่คือ Windows 2008 ฉันได้รับการตอบกลับจาก VMware (หลังจากทุกเดือนเหล่านี้) แต่ฉันไม่ได้อยู่ที่ บริษัท ที่ฉันเคยทำเมื่อสิ่งนี้เกิดขึ้น คำตอบนั้นไม่ตรงไปตรงมาและฉันตั้งใจจะอ่านคำตอบและโพสต์บางอย่าง แต่ฉันไม่มีเวลา ฉันขอขอบคุณเคล็ดลับเกี่ยวกับคลัสเตอร์ แต่ฉันไม่สามารถลองได้ในขณะนี้
ต้มตุ๋น

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