เหตุใดฉันจึงเห็นปริมาณการถ่ายโอนข้อมูลของ SMB ต่ำเช่นนี้


10

ตกลงมีเรื่องราวต่ออีกเล็กน้อยกว่าชื่อที่แสดงถึง

ความเป็นมาและสิ่งแวดล้อม : ฉันกำลังคัดลอก TB หลายตัวจากเซิร์ฟเวอร์ Ubuntu รุ่นเก่าไปยังเซิร์ฟเวอร์ Windows 2012 ที่ใหม่กว่าผ่าน SMB (ในทางเทคนิคแล้วมันเป็นฮาร์ดแวร์สำหรับสินค้าโภคภัณฑ์ แต่เป็นเซิร์ฟเวอร์ที่อยู่ที่นี่) ทุกคนอยู่ในระบบกิกะบิต LAN และกล่อง Ubuntu รุ่นเก่ามีส่วนต่อประสานที่ถูกผูกมัด ฉันเชื่อว่าเซิร์ฟเวอร์ Ubuntu มีการ์ด PCI-e 1x อีเธอร์เน็ต Rosewill สองใบและเซิร์ฟเวอร์ Windows มีการ์ด PCI Intel อีเธอร์เน็ตที่ดีพอสมควร

คอมพิวเตอร์ปลายทาง (เซิร์ฟเวอร์ Windows) กำลังเรียกใช้ Storage Pool ที่มีพาริตี้มากกว่า 4x2TB ไดรฟ์ กำลังเรียกใช้ ReFS ใหม่ของ Microsoft คอมพิวเตอร์ต้นทาง (เซิร์ฟเวอร์ Ubuntu) กำลังเรียกใช้ Mirror RAID ของซอฟต์แวร์ มันใช้งานได้ดี ol 'EXT4

เซิร์ฟเวอร์สองเครื่องทำงานผ่านสวิตช์กิกะบิตเดียว ฉันได้ทดลองกับการทำลายการเชื่อมต่อบนคอมพิวเตอร์ต้นทาง (Ubuntu) โดยไม่มีการปรับปรุงใด ๆ

ปัญหา : ฉันไม่มีปัญหาในการถ่ายโอนด้วยความเร็วที่เหมาะสมจากคอมพิวเตอร์เครื่องอื่นไปยังเซิร์ฟเวอร์ Windows คอมพิวเตอร์อื่น ๆ สามารถถือ 50-80MB / s ได้โดยไม่ยาก แต่การถ่ายโอนจากเซิร์ฟเวอร์ Ubuntu นั้นมีจำนวนไม่เกิน 20MB / s 4 + TB ที่ 20MB / s ใช้เวลานาน (บางอย่างเช่น 2.3 วัน) และฉันสงสัยว่าฉันจะทำยังไงเพื่อหาว่าคอขวดอยู่ตรงไหน

อาการ : CPU ในคอมพิวเตอร์ทั้งสองเครื่องนั้นค่อนข้างน้อยและไม่ยุ่งอย่างแน่นอน ฮาร์ดไดรฟ์ในคอมพิวเตอร์ทั้งสองเครื่องนั้นทำงาน แต่ไม่ล้นมือและ CPU IOwait นั้นเกือบ 0% เป็นอย่างน้อยในเซิร์ฟเวอร์ Ubuntu

ฉันติดตาม Wireshark เป็นเวลา 35 วินาที (น่าจะนานพอที่จะทำให้แน่ใจว่า ACK ทั้งหมดนั้นเป็นแพ็กเก็ตใหม่) และสังเกตว่ามีบางสิ่งที่ฉันไม่คาดคิด (1) ไม่มี checksums สำหรับ ACKs (และ SOME SMB packets) จาก Windows ไปยัง Ubuntu อย่างไรก็ตาม Wireshark อ้างว่าสิ่งนี้อาจเกิดจาก "การตรวจสอบการถ่ายโอนข้อมูล IP" ตกลงฉันมีการ์ดสวยดีในนั้น ฉันคิดว่ามันเป็นไปได้ว่าการ์ดเครือข่ายสามารถคำนวณการตรวจสอบ ละเอียด. ย้ายที่ ... (2) "กลุ่มที่มองไม่เห็น TCP ACKed" อันนี้ฉันมีปัญหากับ หมายเลข ACK อยู่ในช่วงที่ยอมรับได้จากสิ่งที่ฉันสามารถบอกได้และมักจะมีกลุ่มข้อความขนาดใหญ่ บางที Wireshark ช้าเกินไปเหรอ?

สรุป : ความเร็วในการโอนข้อมูล (20MB / s ผ่านกิกะบิตอีเธอร์เน็ต) และฉันไม่รู้ว่าทำไม Wireshark อ้างว่า Windows กำลังทำสิ่งที่ไม่เคยส่งมาจาก Ubuntu

เดา : เดาเริ่มต้นของฉันคือบัตร Rosewill ราคาถูกลงล้นมือ การคาดเดาครั้งที่สองของฉันคือสิ่งที่คล้ายกับซอฟต์แวร์ RAID ที่ปลายด้านหนึ่ง


2
ความเร็วในการคัดลอกจากเซิร์ฟเวอร์ Ubuntu ไปยังเดสก์ท็อปเครื่องใดเครื่องหนึ่ง (ไม่ใช่เซิร์ฟเวอร์ 2012) บางที WinXP หรือ Win7 ฉันมีปัญหาใหญ่กับการลงนามแพ็กเก็ตและการเข้ารหัสกับ SMB กับ Server 2008 ขึ้นไป
Dom

อัปเดต:ฉันลงเอยด้วยการรีบูตเครื่อง (ต้องขอบคุณเคอร์เนลที่ทำให้ตกใจ) น่าเสียดายที่ตอนนี้ระบบมีเคอร์เนลที่น่าตกใจในการบู๊ตทุกครั้ง ฉันเปิด Knoppix ที่ไว้ใจได้ของฉันและติดตั้งไดรฟ์และตอนนี้ทุกอย่างเรียบร้อยดี ตอนนี้ฉันกำลังคัดลอก SSH และฉันก็ยังไม่รู้ว่าคอขวดอยู่ที่ไหน sshdกิน 60% ของโปรเซสเซอร์หนึ่งตัวที่ฝั่ง Knoppix ไม่ว่าในกรณีใดการโอนของฉันใกล้จะเสร็จสมบูรณ์ @Dom: ตอนนี้ที่คุณพูดถึงมันฉันไม่จำได้ว่าวางข้อมูลทั้งหมดในนั้นเร็วกว่า 30MBps มากในตอนแรก
Andy

2
@LorenzoVonMatterhorn โปรดหลีกเลี่ยงการใช้ตัวย่อ URL
Cristian Ciupitu

คุณแน่ใจหรือไม่ว่าไม่มีปัญหากับดิสก์ของคุณ?
MariusMatutiae

2
Windows ใช้โพรโทคอล SMB รุ่นที่รวดเร็วมาก (SMB 2) ในช่วง 4-5 ปีที่ผ่านมาซึ่งน้อยกว่าช่างพูดและมีประสิทธิภาพมากขึ้น ฉันไม่รู้ว่าเมื่อไรที่การเปลี่ยนแปลงเหล่านั้นเปลี่ยนเป็น Samba แต่ดูเหมือนว่า Ubuntu รุ่นเก่าจะมี Samba ที่เก่ากว่าและบางที Knoppix อาจมีรุ่นที่ใหม่กว่า
uSlackr

คำตอบ:


1

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

ฉันเคยเห็นสิ่งนี้บ่อยครั้งกับเครื่อง Linux และ Mac หวังว่ามันจะไม่เป็นเช่นนั้น

มีอาร์กิวเมนต์ตัวเลือกซ็อกเก็ตในไฟล์กำหนดค่าของ samba ซึ่งคุณสามารถตั้งค่าขนาดบัฟเฟอร์การอ่านและเขียนซ็อกเก็ตได้ ขอแนะนำให้คุณตั้งค่าทั้งสองเป็น 8192 ไบต์ (8 KiB) 4 หรือ 8 KB มักจะคล้ายกัน แต่ฉันไม่ได้ทดสอบในลิงค์กิกะบิต

นอกจากนี้อย่าคาดหวังว่าการเชื่อมต่อ TCP เดียวจะได้รับประโยชน์จากการเชื่อมโยงที่ถูกผูกมัดการรับส่งข้อมูลมักจะผ่านหนึ่งในลิงก์ ไม่เช่นนั้นคุณจะได้พบกับแพ็คเก็ตที่ล้าสมัยจำนวนมากเพื่อจัดการกับ ดังนั้นคาดว่าจะเป็นประโยชน์สมดุลภาระเมื่อให้บริการลูกค้าหลายราย ถึงอย่างนั้นคุณควรค้นหาโหมดการเชื่อมที่ต่างกันและรู้ว่าอย่างน้อย "โหมด 4" (IEEE 802.3ad) การเชื่อมมีโหมดการส่งแฮชสองโหมดซึ่งจะกำหนดว่าจะใช้อินเตอร์เฟสทาสแบบใด มีการแฮชชั้นที่ 2 (ค่าเริ่มต้น) และการแฮชชั้นที่ 3 หากการส่งข้อมูลจำนวนมากของคุณผ่านเกตเวย์แฮชเลเยอร์ 2 จะไม่กระจายกันเนื่องจากที่อยู่ MAC ของเกตเวย์จะเหมือนกัน พิจารณาใช้ layer-3 แทน


0

ฉันเคยมีการ์ดอีเทอร์เน็ตสองใบในคอมพิวเตอร์ Ubuntu เครื่องหนึ่งและด้วยเหตุผลบางอย่างมันไม่ทำงานอย่างถูกต้อง - พวกเขาทั้งคู่ต่างก็แย่งชิงกันกับแพ็กเก็ตแบบเดียวกันดังนั้นบางครั้งฉันก็จะได้รับคำตอบในบางครั้งฉันจะไม่ขึ้น บรรจุ มันแปลกมาก ฉันต้องมีการกำหนดค่าผิดพลาดอย่างใด แต่ฉันจะคิดว่ามันจะได้ผล การ์ดมีที่อยู่ IP ที่ไม่ซ้ำกันแน่นอน

อย่างไรก็ตามมันจะง่ายสำหรับคุณที่จะลองใช้เพียงการ์ดอีเทอร์เน็ตหนึ่งตัวในเครื่องที่เชื่อมต่อกับเครือข่ายเพื่อแยกแยะออก

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