แก้ไขปัญหาด้านประสิทธิภาพของ ดองเกิล USB to 2.5GbE ที่ใช้ Realtek RTL8156B ใน Ubuntu

ฉันเคยได้รีวิวอะแดปเตอร์อีเทอร์เน็ต USB 3.0 to 2.5 Gbps ที่ใช้ชิป Realtek RTL8156B ใน Ubuntu 20.04 เมื่อฉันตรวจสอบ ฉันไม่ประทับใจกับความน่าเชื่อถือและประสิทธิภาพของอแดปเตอร์มากนัก ฉันได้รับคำแนะนำว่า ให้เปลี่ยนเปลี่ยนสายเคเบิล ขนาด MTU ฯลฯ…

แต่การเปลี่ยนสายเคเบิลไม่ได้ผล แต่มีความคิดเห็นหนึ่งพูดถึงอาจมีปัญหาจาก cdc_ncm driver ตามด้วยอีกคนหนึ่งบอกว่าการอัปเดตเป็น Linux kernel 5.14 ควรติดตั้งไดรเวอร์ r8152 ที่ถูกต้อง … ดังนั้นฉันจึงทำทำเช่นนี้:


Linux 5.13 ที่อัปเกรดแล้ว (รวมอยู่ใน Ubuntu 20.04 + HWE) เป็น Linux 5.14 แต่ก็ยังไม่ได้เพราะระบบยังคงใช้ cdc_ncm driver พร้อมลิงก์ half-duplex:


จากนั้นฉันคิดว่าอาจจำเป็นต้องใช้กฎ udev เพื่อป้องกันการโหลดไดรเวอร์ cdc_ncm และมี 50-usb-realtek-net.rulesในไดรเวอร์ r8152 ใเพื่อช่วยในเรื่องนี้ ดังนั้นฉันจึงคัดลอกไฟล์ไปยังโฟลเดอร์/etc/udev/rules.d/ เนื่องจากฉันไม่ต้องการรีบูต ฉันจึงถอนการติดตั้งโมดูลที่ไม่ต้องการและรีสตาร์ท udev เพื่อทดลองใช้:


มาดูกันว่าผลลัพธ์จะเป็นอย่างไร…


ดีมาก! ตอนนี้ใช้งานได้กับ r8152 และเรามีการเชื่อมต่อแบบ full-duplex

ลองปรียบเทียบผลทดสอบทั้งหมดของเราอีกครั้ง

iperf2

อัพโหลด


ดาวน์โหลด:


หลังจากทำเช่นนี้ ความเร็วในการดาวน์โหลดก็ดีขึ้นเล็กน้อย (ก่อนที่จะใช้ไดรเวอร์ cdc_ncm คือ 600 Mbps) แต่ยังไม่ถึง 2.3 Gbps

ลองใช้ full-duplex :


ที่จริงไม่เลวร้ายเกินไป

iperf3

อัพโหลด:


ดาวน์โหลด:


ใกล้เคียงกับ iperf2 อันที่จริงแล้ว iperf3 ไม่รับการรองรับสำหรับ full-duplex มาหลายปีแล้ว แต่พวกเขาได้แนะนำฟีเจอร์นี้อีกครั้งในเวอร์ชัน 3.7 ในครั้งนี้ มาลองดูกัน:


อ๊ะ! เกิดอะไรขึ้น? ดูเหมือนว่าจะมีข้อความแสดงข้อผิดพลาดบางอย่างในบันทึกของเคอร์เนลด้วย

จริง ๆ แล้วฉันไม่ใช่คนเดียวที่มีปัญหานี้ ดังนั้นทั้งหมดที่ฉันพูดได้ก็คือมันเป็นปัญหาเปิดใน ไดรเวอร์ r8156 Github repo นี่คือคำตอบของนักพัฒนาเพื่อเป็นข้อมูลอ้างอิง:

ฉันสงสัยว่าจะมี ปัญหากับ อะแดปเตอร์อีเทอร์เน็ตเนื่องจากมีรายงานหลายฉบับว่าการ์ดนี้ใช้งานได้กับDS918 เช่นการออกแบบสายไฟ ความร้อนสูงเกินไป เป็นต้น คุณสามารถคลิกลิงก์ด้านล่างเพื่อดูรายละเอียด:
https://github.com/bb-qq/r8152/wiki/Compatibility

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

ณ จุดนี้ อีเธอร์เน็ตไม่ทำงานเลย ฉันต้องถอดปลั๊กและเสียบอะแดปเตอร์ USB ใหม่ คราวนี้ก็ “ได้ผล” สำเร็จในที่สุด


ยังมีการส่งสัญญาณซ้ำที่ด้าน Rx ซึ่งสามารถช่วยอธิบายว่าทำไมความเร็วจึงต่ำมาก

SAMBA

ฉันเชื่อมต่อโน้ตบุ๊กที่มีดองเกิล RTL8156B และ SATA SSD มีพอร์ตที่มี 2.5GbE และมินิพีซี UP Xtreme i11 พร้อม SSD ขนาด 480GB และฐานเชื่อมต่อ MINIX USB-C

SAMBA r8152 driver laptop to mini PC

ความเร็วในการโอนของไดรเวอร์ r8152 อยู่ที่ประมาณ 930 Mbps และความเร็วในการโอนของไดรเวอร์ cdc_ncm อยู่ที่ประมาณ 750 Mbps

ตอนนี้ฉันถ่ายโอนข้อมูลจากมินิพีซีไปยังโน้ตบุ๊ก การถ่ายโอนนี้เรียกว่า “ดาวน์โหลด” …..

SAMBA r8152 driver mini PC to laptop

ไม่น่าแปลกใจเลยที่ความเร็วช้าลงที่ 837 Mbps แต่ก็ยังดีกว่าตอนที่ฉันใช้ไดรเวอร์ cdc_ncm ซึ่งน้อยกว่า 500 Mbps

scp

โน้ตบุ๊กไปยังมินิพีซี:


มินิพีซีกับโน้ตบุ๊ก:


แปลกที่ความเร็วในการดาวน์โหลดและอัพโหลดเกือบจะเท่ากันเมื่อใช้ scp ปัญหาคอขวดที่นี่น่าจะเป็นเพราะ SATA SSD ของฉัน:


จะเห็นได้ว่าความเร็วในการอ่านถูกจำกัดไว้ที่ประมาณ 145 MB/s และความเร็วในการเขียนถูกจำกัดไว้ที่ประมาณ 140 MB/s

ในการเปรียบเทียบ SSD ที่ใช้ใน MINIX NEO Storage Plus USB-C Dock นั้นเร็วกว่า ครั้งล่าสุดที่ฉันทดสอบ 379MB/s ครั้งล่าสุดที่ฉันทดสอบ ความเร็วในการอ่านตามลำดับคือ 379MB/s และความเร็วในการเขียนตามลำดับคือ 240+ MB/s

ตอนนี้ มาใส่ข้อมูลบน /dev/null และดูว่าตอนนี้ความเร็วเป็นเท่าใด

ดาวน์โหลดไปยังโน้ตบุ๊ก:


อัปโหลดจากโน้ตบุ๊ก:

ดังที่เห็นได้จากด้านบน อย่างน้อยสำหรับการอัปโหลด ความเร็วก็ถือว่าใช้ได้ ฉันคิดว่ายังมีปัญหากับความเร็วในการดาวน์โหลดอยู่บ้าง แต่หลังจากใช้ไดรเวอร์ r8152 แล้ว ประสิทธิภาพของมันก็ดีขึ้นอย่างมากจริงๆ
cdc ncm vs r8152 drivers ubuntu

การทดสอบด้วย NanoPi R4S

แม้ว่าผลการทดสอบข้างต้นจะดีกว่าผลก่อนหน้านี้มาก แต่ก็ยังไม่เหมาะสม เนื่องจากฉันมีเราเตอร์ NanoPi R4S ที่มีพอร์ต USB 3.0 2 พอร์ต อันดับแรกฉันจึงลองใช้กับอิมเมจ OpenWrt (FriendlyWrt) 21.02 และ Linux 5.15 ล่าสุด:


มันน่าเกลียดมากจริงๆ มีการส่งสัญญาณซ้ำหลายครั้งทั้งสองด้าน

เมื่อดูที่บันทึกเคอร์เนล อะแดปเตอร์ RTL8156B USB dongle ของเราใช้ไดรเวอร์ CDC NCM นั้นอีกครั้ง เช่นเดียวกับใน Ubuntu…ยังมีไดรเวอร์ r8152 อีกด้วย แต่ไม่ว่าฉันจะลบโมดูลใดใน /etc/modules.d ไม่ว่าจะเป็น CDC NCM is load หรือการโหลดอินเทอร์เฟซ eth2 ไม่ปรากฏขึ้นเลย ดังนั้นฉันจึงเปลี่ยนไปใช้ FriendlyCore OS ที่ใช้ Ubuntu 20.04 ซึ่งเป็น Linux 5.15 ด้วย ซึ่งจะใกล้เคียงกับการตั้งค่าบนโน้ตบุ๊กของฉันมากกว่า

อย่างที่คาดไว้ อะแดปเตอร์ RTL8156B ใช้ไดรเวอร์ CDC NCM เป็นค่าเริ่มต้นใน Ubuntu:


eth1 ไม่แสดงพร้อมกับ ifconfig ดังนั้นฉันจึงดำเนินการเปลี่ยนกฎ udev เพื่อใช้ไดรเวอร์ r8152…


การทดสอบนี้น่าหงุดหงิดมากขึ้นเรื่อยๆ มาอัปเดตระบบกันก่อน


แม้ว่าฉันจะทำตามขั้นตอนทั้งหมดแล้ว เนื่องจากอิมเมจ FriendlyCore นั้นอาศัยเซิร์ฟเวอร์ในประเทศจีน มันช้ามากเมื่อเทียบกับของฉัน (เพียงแค่เรียกใช้ apt update อาจใช้เวลา 15 นาที) ดังนั้นแม้ว่าการอัปเดตจะเร็วในทางทฤษฎี แต่ก็ยังต้องใช้เวลาหลายชั่วโมง! (ดูรายละเอียดที่ การเปลี่ยน Ubuntu Apt Mirror จาก Command Line )

การอัปเดตระบบไม่ได้ช่วยแก้ปัญหาเฟิร์มแวร์ ดังนั้นฉันจึงค้นหาไฟล์rtl_nic /rtl8156b-2.fw ควรอยู่ใน แพ็คเกจ firmware-realtek Debian หรือแพ็คเกจ เฟิร์มแวร์ linux Ubuntu Impish

ฉันดาวน์โหลดอันหลัง แตกไฟล์ rtl8156b-2.fw และคัดลอกไปที่ /etc/firmware/rtl_nic ในที่สุดก็ใช้งานได้สำเร็จดังนี้:


ด้วยเหตุผลบางอย่าง อินเทอร์เฟซของมันยังไม่ทำงาน ฉันต้องเพิ่มลงใน /etc/network/interfaces.d ด้วยตนเอง แต่ดูเหมือนว่าจะใช้งานไม่ได้

กลับไปที่โน้ตบุ๊ก Ubuntu ด้วยเฟิร์มแวร์ rtl8156b-2.fw

ฉันจึงกลับไปที่แล็ปท็อปและคัดลอกไฟล์เฟิร์มแวร์ไปยังไดเร็กทอรี/lib/firmware/rtl_nic ผลลัพธ์จะเหมือนกับใน NanoPi R4S ดังที่แสดงด้านล่าง::


ลองอัปโหลด iperf3:


เหมือนเดิม ยังไม่กลับคืนสู่สภาพเดิม ตอนนี้ฉันใช้ iperf3 เพื่อทดสอบการดาวน์โหลด:


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

Realtek ส่ง RTL8156BG USB 3.0 to 2.5GbE dongle ตัวใหม่มาให้

Realtek ส่งอะแดปเตอร์ USB 3.0 to 2.5GbE ใหม่ให้ฉันและไม่มีปัญหาด้านประสิทธิภาพ

แปลจากบทความภาษาอังกฤษ : Fixing performance issues with Realtek RTL8156B 2.5GbE USB dongle in Ubuntu
FacebookTwitterLineEmailShare

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

โฆษณา
โฆษณา