Score:1

เหตุใดจึงไม่ได้ตั้งค่าพารามิเตอร์เสียงเรียกเข้าของ NIC ไว้ที่ความสามารถสูงสุดของฮาร์ดแวร์

ธง us

ตรวจสอบบัฟเฟอร์แหวน NIC:

# ethtool -g eth0
พารามิเตอร์เสียงเรียกเข้าสำหรับ eth0:
ค่าสูงสุดที่ตั้งไว้ล่วงหน้า:
RX: 4096
RX มินิ: 0
RX จัมโบ้: 0
เท็กซัส: 4096
การตั้งค่าฮาร์ดแวร์ปัจจุบัน:
RX: 256
RX มินิ: 0
RX จัมโบ้: 0
เท็กซัส: 256

สามารถตั้งค่า "RX/TX" ได้ถึงขีดจำกัดที่แสดงใน "Pre-set maximums" เช่น:

# ethtool -G eth0 rx 4096 rx 4096

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

ewwhite avatar
ng flag
คำถามที่ดี!!
Score:1
ธง cn

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

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

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

ตัวเลขเริ่มต้นที่คุณเห็นเป็นการแลกเปลี่ยนที่สมเหตุสมผลระหว่างทั้งสอง

CrazyRabbit avatar
us flag
ขอบคุณสำหรับคำอธิบายนี้ ฉันใช้แอปพลิเคชันเพื่อให้บริการไฟล์ผ่าน TCP และมี fifo erros ตาม https://serverfault.com/questions/650596/meaning-of-rx-queue-csum-err-and-rx-fifo- ข้อผิดพลาดฉันได้เพิ่มขึ้น มีวิธีอื่นนอกเหนือจากการลองผิดลองถูกหรือไม่ เพื่อเพิ่มค่านี้ให้เป็น "ค่าที่ดี" ระหว่างค่าเริ่มต้น 256 และค่าสูงสุดที่ยอมรับได้ 4096
Peter Zhabin avatar
cn flag
@user1773988 สำหรับเวิร์กโหลดเฉพาะที่ทราบขนาดแพ็คเก็ต เราใช้ `iperf` กับพารามิเตอร์ที่เหมาะสมเพื่อจำลองโหลดและดูประสิทธิภาพและโหลด CPU ของระบบ (ซึ่งได้รับผลกระทบจากการตั้งค่านี้ด้วย) เพื่อหาจุดที่เหมาะสม ครั้งหนึ่งเราต้องตั้งค่าเหล่านี้บนไฟร์วอลล์ Linux จำนวนมากในบทบาทของ BRAS ของคนจนในสภาพแวดล้อมของ ISP และนั่นคือวิธีการลองผิดลองถูกวิธีเดียว..
CrazyRabbit avatar
us flag
ขอบคุณสำหรับการป้อนข้อมูลของคุณ คำถาม บริษัท ย่อย; สามารถลดลงได้ดังต่อไปนี้ 256? สมมติว่าเซิร์ฟเวอร์ Redis, แพ็คเก็ตขนาดเล็ก, NIC เฉพาะ, havig rx และ tx ตั้งค่าเป็น 128
Peter Zhabin avatar
cn flag
@ user1773988 สิ่งนี้สามารถลดลงได้ถึง 48 AFAIR แต่ความน่าจะเป็นของการปล่อยแพ็กเก็ตจะเพิ่มขึ้น esp ในกรณีที่ pps ระเบิดโดยไม่คาดคิด Redis เป็นแอปพลิเคชัน TCP และการลดลงไม่ได้ช่วยอะไรเลย ฉันไม่มีประสบการณ์โดยตรงกับสิ่งที่มีเวลาแฝงต่ำ จากมุมมองของ ISP ดังนั้นเราจึงมักจะเพิ่มค่าเหล่านี้ แต่ถึงจุดหนึ่งตามสถิติการตรวจสอบ 24 ชั่วโมง

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา