同一 USB 千兆网卡,为何在 OSX 下速度只能发挥 70%? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zer
V2EX    macOS

同一 USB 千兆网卡,为何在 OSX 下速度只能发挥 70%?

  •  
  •   zer 2018-03-11 22:42:46 +08:00 7353 次点击
    这是一个创建于 2841 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Bus 001 Device 004: ID 0bda:8153 Realtek Semiconductor Corp. USB 10/100/1000 LAN Serial: 001000001 

    通过 iPerf 测速的结果只有 650~700Mbps,但在另外一台 Win 主机上可以达到 950Mbps 以上,基本达到了千兆的速度。 我尝试排除程序干扰,卸载了 Little Snitch、关闭其他用,重置 PRAM 后,速度依旧如此。 求解

    iperf -u -c 10.0.0.101 -b 1000M -t 10 -i 1 ------------------------------------------------------------ Client connecting to 10.0.0.101, UDP port 5001 Sending 1470 byte datagrams UDP buffer size: 9.00 KByte (default) ------------------------------------------------------------ [ 4] local 10.0.0.24 port 58162 connected with 10.0.0.101 port 5001 [ ID] Interval Transfer Bandwidth [ 4] 0.0- 1.0 sec 79.3 MBytes 665 Mbits/sec [ 4] 1.0- 2.0 sec 79.2 MBytes 664 Mbits/sec [ 4] 2.0- 3.0 sec 78.3 MBytes 657 Mbits/sec [ 4] 3.0- 4.0 sec 78.1 MBytes 655 Mbits/sec [ 4] 4.0- 5.0 sec 78.0 MBytes 654 Mbits/sec [ 4] 5.0- 6.0 sec 78.4 MBytes 657 Mbits/sec [ 4] 6.0- 7.0 sec 78.0 MBytes 654 Mbits/sec [ 4] 7.0- 8.0 sec 78.0 MBytes 655 Mbits/sec [ 4] 8.0- 9.0 sec 78.3 MBytes 657 Mbits/sec [ 4] 9.0-10.0 sec 78.3 MBytes 657 Mbits/sec [ 4] 0.0-10.0 sec 784 MBytes 658 Mbits/sec [ 4] Sent 559112 datagrams [ 4] Server Report: [ 4] 0.0-10.0 sec 782 MBytes 656 Mbits/sec 0.196 ms 952/559111 (0.17%) [ 4] 0.0-10.0 sec 1 datagrams received out-of-order 
    第 1 条附言    2018-03-12 10:20:14 +08:00

    我是这样测试的: 内网Mac Mini Server,ip:10.0.0.101

    运行

    iperf -s -u 

    客户端2台,一台MBP2017,一台PC 将这个Type-C千兆网卡分别连接到这2台电脑,运行

    iperf -u -c 10.0.0.101 -b 1000M -t 10 -i 1 
    第 2 条附言    2018-03-19 00:08:31 +08:00

    2018年03月19日 今天把server、重启后速度恢复正常了,不知道是怎么回事

    Imgur

    在服务端接收到的数据也是正常的

    Imgur

    21 条回复    2018-03-25 08:55:59 +08:00
    mokeyjay
        1
    mokeyjay  
       2018-03-11 22:47:01 +08:00
    驱动问题吧,我的 XPS 装了黑苹果也有类似问题,MacOS 下网卡性能不如 Win 下
    zer
        2
    zer  
    OP
       2018-03-11 22:48:24 +08:00
    @mokeyjay 我尝试安装 Realtek 官方驱动,也没有改善
    cevincheung
        3
    cevincheung  
       2018-03-11 23:12:31 +08:00   1
    网卡是千兆。USB 口不达标吧 2333 typec 试试
    cevincheung
        4
    cevincheung  
       2018-03-11 23:15:06 +08:00
    also24
        5
    also24  
       2018-03-11 23:19:47 +08:00   1
    最近搞了不少 Realtek 和亚信的网卡测试,直观感觉是 Realtek 的普遍不如亚信的,特别是对 Apple 设备的兼容性方面。
    zer
        6
    zer  
    OP
       2018-03-11 23:23:57 +08:00
    @cevincheung 是千兆 Type-C 的,可以看到是 5Gb 的速度
    @cevincheung 我用的就是这款
    cevincheung
        7
    cevincheung  
       2018-03-11 23:29:17 +08:00
    @zer #6 噗呲……本来还想入这款……
    ptyfork
        8
    ptyfork  
       2018-03-11 23:51:01 +08:00
    确定 windows 上也是用的 iperf,而且参数一致?
    jedihy
        9
    jedihy  
       2018-03-12 02:53:17 +08:00   1
    应该是驱动问题,看看 CPU 是不是达到瓶颈了,虽然可能性很小。Win 和 Linux 都有一些 RSC,LSO 的优化不知道 OSX 上驱动支持不支持。
    zer
        10
    zer  
    OP
       2018-03-12 08:06:57 +08:00 via iPhone
    @ptyfork 参数一致的
    fork
        11
    fork  
       2018-03-12 09:27:38 +08:00
    @zer

    我觉得跟驱动关系不大, 我在我的 iMac 27'上测自带的网卡,使用你的参数测试 UDP 速度也只能 680Mb 左右,但是如果使用 TCP 传输的话,能稳定在 930Mb。 为什么测试传输要用 UDP 呢?
    zer
        12
    zer  
    OP
       2018-03-12 09:34:54 +08:00 via iPhone
    @fork UDP 方式可以看到延迟,用 TCP 的话,可能因为 TCP 的重传机制,真实的带宽会不准
    dudesun
        13
    dudesun  
       2018-03-12 10:42:49 +08:00
    realtek 的 macos 上自带驱动,亚信需要安装驱动才能用。
    我用的是
    https://detail.tmall.com/item.htm?spm=a230r.1.14.18.7bde1ff0W54P1O&id=536844809545&ns=1&abbucket=7&skuId=3205234220735
    tailf
        14
    tailf  
       2018-03-12 11:39:08 +08:00   1
    Darwin 内核和 Windows 内核的网络驱动完全不同,可能是 Darwin 对这款芯片 UDP 支持的不到位。
    fork
        15
    fork  
       2018-03-12 12:00:22 +08:00
    @zer

    iperf 里面带宽数据里还会包括 tcp retransmission 的数? 方便指引一下 iperf 文档或者代码的位置吗?


    @tailf 跟硬件驱动应该没什么关系,感觉跟内核的网络层关系更大一些,可以做个实验测试 loopback 的性能

    在我机器上,loopback 都上不了千兆:

    iperf -u -c 127.0.0.1 -b 1000M -t 10 -i 1
    ------------------------------------------------------------
    Client connecting to 127.0.0.1, UDP port 5001
    Sending 1470 byte datagrams
    UDP buffer size: 9.00 KByte (default)
    ------------------------------------------------------------
    [ 4] local 127.0.0.1 port 63929 connected with 127.0.0.1 port 5001
    [ ID] Interval Transfer Bandwidth
    [ 4] 0.0- 1.0 sec 82.8 MBytes 695 Mbits/sec
    [ 4] 1.0- 2.0 sec 81.9 MBytes 687 Mbits/sec
    [ 4] 2.0- 3.0 sec 82.9 MBytes 696 Mbits/sec
    [ 4] 3.0- 4.0 sec 82.2 MBytes 690 Mbits/sec
    [ 4] 4.0- 5.0 sec 83.2 MBytes 698 Mbits/sec
    [ 4] 5.0- 6.0 sec 82.8 MBytes 695 Mbits/sec
    [ 4] 6.0- 7.0 sec 83.1 MBytes 697 Mbits/sec
    [ 4] 7.0- 8.0 sec 82.9 MBytes 696 Mbits/sec
    [ 4] 8.0- 9.0 sec 83.2 MBytes 698 Mbits/sec
    [ 4] 9.0-10.0 sec 82.9 MBytes 695 Mbits/sec
    [ 4] 0.0-10.0 sec 828 MBytes 694 Mbits/sec
    [ 4] Sent 591802 datagrams
    read failed: Connection refused
    [ 4] WARNING: did not receive ack of last datagram after 7 tries.



    tcp 轻松上 40Gb

    iperf -c localhost -i 1
    ------------------------------------------------------------
    Client connecting to localhost, TCP port 5001
    TCP window size: 144 KByte (default)
    ------------------------------------------------------------
    [ 5] local 127.0.0.1 port 56463 connected with 127.0.0.1 port 5001
    [ ID] Interval Transfer Bandwidth
    [ 5] 0.0- 1.0 sec 4.61 GBytes 39.6 Gbits/sec
    [ 5] 1.0- 2.0 sec 4.73 GBytes 40.7 Gbits/sec
    [ 5] 2.0- 3.0 sec 4.74 GBytes 40.7 Gbits/sec
    [ 5] 3.0- 4.0 sec 4.80 GBytes 41.2 Gbits/sec
    [ 5] 4.0- 5.0 sec 4.79 GBytes 41.2 Gbits/sec
    [ 5] 5.0- 6.0 sec 4.78 GBytes 41.0 Gbits/sec
    [ 5] 6.0- 7.0 sec 4.76 GBytes 40.9 Gbits/sec
    [ 5] 7.0- 8.0 sec 4.80 GBytes 41.2 Gbits/sec
    [ 5] 8.0- 9.0 sec 4.77 GBytes 41.0 Gbits/sec
    [ 5] 9.0-10.0 sec 4.78 GBytes 41.0 Gbits/sec
    [ 5] 0.0-10.0 sec 47.6 GBytes 40.9 Gbits/sec
    fork
        16
    fork  
       2018-03-12 12:03:41 +08:00
    刚才又试了一下, 用 iperf3 能快一点:

    iperf3 -c 127.0.0.1 -u -b 3000M
    Connecting to host 127.0.0.1, port 5201
    warning: Block size 16332 > sending socket buffer size 9216
    Increasing socket buffer size to 17356
    [ 5] local 127.0.0.1 port 63066 connected to 127.0.0.1 port 5201
    [ ID] Interval Transfer Bitrate Total Datagrams
    [ 5] 0.00-1.00 sec 357 MBytes 3.00 Gbits/sec 22952
    [ 5] 1.00-2.00 sec 358 MBytes 3.00 Gbits/sec 22958
    [ 5] 2.00-3.00 sec 358 MBytes 3.00 Gbits/sec 22962
    [ 5] 3.00-4.00 sec 358 MBytes 3.00 Gbits/sec 22967
    [ 5] 4.00-5.00 sec 357 MBytes 3.00 Gbits/sec 22947
    [ 5] 5.00-6.00 sec 358 MBytes 3.00 Gbits/sec 22970
    [ 5] 6.00-7.00 sec 358 MBytes 3.00 Gbits/sec 22961
    [ 5] 7.00-8.00 sec 358 MBytes 3.00 Gbits/sec 22967
    [ 5] 8.00-9.00 sec 358 MBytes 3.00 Gbits/sec 22956
    [ 5] 9.00-10.00 sec 357 MBytes 3.00 Gbits/sec 22952
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
    [ 5] 0.00-10.00 sec 3.49 GBytes 3.00 Gbits/sec 0.000 ms 0/229592 (0%) sender
    [ 5] 0.00-10.00 sec 1.57 GBytes 1.35 Gbits/sec 0.019 ms 12536/229592 (55%) receiver
    zer
        17
    zer  
    OP
       2018-03-12 13:52:34 +08:00
    @fork iperf2 可以通过-e 参数看到 tcp retransmit,但 iPerf3 通过-i 参数可以看到
    参考来源:
    https://fasterdata.es.net/performance-testing/network-troubleshooting-tools/iperf/
    zer
        18
    zer  
    OP
       2018-03-14 10:23:41 +08:00
    昨天入了苹果官网销售的 Belkin Type-C 千兆网卡,速度依旧没有改善,这网卡的芯片也是 Realtek 的,但是具体型号和网易这款不一样。
    我在安全模式下试了一次,也几乎没有变化。
    bao3
        19
    bao3  
       2018-03-14 10:42:50 +08:00 via iPhone
    别纠结这个了,同样的 wifi,同样的系统,同样的软件,同一个网卡,用 udp 测试就是慢,大约会是 tcp 的 70%左右,我是 win,经常要测试地铁 pis 无线
    zer
        20
    zer  
    OP
       2018-03-14 14:01:44 +08:00
    @bao3 我是有线千兆,同样测试在 pc 到 mac、mac 到 nas,速度都能达到千兆的速度,即使是 UDP。没理由使用 mac 到 mac 的时候,达不到千兆
    ptyfork
        21
    ptyfork  
       2018-03-25 08:55:59 +08:00
    @zer 上面都告诉你了,是 iperf 的在 mac 上实现有问题,跟硬件没有一毛钱关系,loopback 都达不到速度。换 iperf3。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2467 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VRSION: 3.9.8.5 26ms UTC 05:32 PVG 13:32 LAX 21:32 JFK 00:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86