V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  HarrisIce  ›  全部回复第 1 页 / 共 2 页
回复总数  36
1  2  
结合我另外一篇帖子中一个大佬的回复,测网卡的问题已经解决,在这里把数据共享给大家做参考。

**测试环境**

一台机器,同时装了 Intel X520-DA2 ( 10G 双口)、Mellanox MCX512A ( 25G 双口)两张网卡,32G 内存( 8G hugepage )。设置了 Linux 启动时禁止调度到 2-7 号核心,2-7 专门留给 VPP 、Pktgen 用(并且 worker 核心不重叠),保证测试数据准确。

CPU 如下。

```
Intel(R) Core(TM) i3-10105 CPU @ 3.70GHz
analyzing CPU 6:(所有核心统一设置)
driver: intel_pstate
CPUs which run at the same hardware frequency: 6
CPUs which need to have their frequency coordinated by software: 6
maximum transition latency: 4294.55 ms.
hardware limits: 800 MHz - 4.40 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 3.20 GHz and 4.40 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 4.20 GHz.

# lscpu -e
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE MAXMHZ MINMHZ MHZ
0 0 0 0 0:0:0:0 yes 4400.0000 800.0000 4199.541
1 0 0 1 1:1:1:0 yes 4400.0000 800.0000 3700.000
2 0 0 2 2:2:2:0 yes 4400.0000 800.0000 3700.000
3 0 0 3 3:3:3:0 yes 4400.0000 800.0000 4199.999
4 0 0 0 0:0:0:0 yes 4400.0000 800.0000 4200.001
5 0 0 1 1:1:1:0 yes 4400.0000 800.0000 4200.000
6 0 0 2 2:2:2:0 yes 4400.0000 800.0000 4199.999
7 0 0 3 3:3:3:0 yes 4400.0000 800.0000 4200.000
```

系统和测试平台如下。

```
Operating System: Ubuntu 22.04.4 LTS
Kernel: Linux 5.15.0-105-generic
Architecture: x86-64
Hardware Vendor: HP
Hardware Model: HP EliteDesk 880 G6 Tower PC
```

**打流路径**

Pktgen 打流 -> Mellanox 1 号口 -> Intel 1 号口 -> VPP 用户态转发 -> Intel 2 号口 -> Mellanox 2 号口 -> Pktgen 接收统计

**测试数据**

pktgen 测试数据如下

```
\ Ports 0-1 of 2 <Main Page> Copyright(c) <2010-2023>, Intel Corporation
Port:Flags : 0:P------ Single 1:P------ Single
Link State : <UP-10000-FD> <UP-10000-FD> ---Total Rate---
Pkts/s Rx : 0 9,091,196 9,091,196
Tx : 14,911,104 0 14,911,104
MBits/s Rx/Tx : 0/9,543 5,818/0 5,818/9,543
Pkts/s Rx Max : 0 9,408,878 9,408,878
Tx Max : 15,058,304 0 15,058,304
Broadcast : 0 0
Multicast : 0 0
Sizes 64 : 0 575,707,178,176
65-127 : 0 0
128-255 : 0 0
256-511 : 0 0
512-1023 : 0 0
1024-1518 : 0 0
Runts/Jumbos : 0/0 0/0
ARP/ICMP Pkts : 0/0 0/0
Errors Rx/Tx : 0/0 0/0
Total Rx Pkts : 0 8,993,964,327
Tx Pkts : 14,541,116,160 0
Rx/Tx MBs : 0/9,306,314 5,756,137/0
TCP Flags : .A.... .A....
TCP Seq/Ack : 74616/74640 74616/74640
Pattern Type : abcd... abcd...
Tx Count/% Rate : Forever /100% Forever /100%
Pkt Size/Rx:Tx Burst: 64 / 64: 64 64 / 64: 64
TTL/Port Src/Dest : 64/ 1234/ 5678 64/ 1234/ 5678
Pkt Type:VLAN ID : IPv4 / UDP:0001 IPv4 / TCP:0001
802.1p CoS/DSCP/IPP : 0/ 0/ 0 0/ 0/ 0
VxLAN Flg/Grp/vid : 0000/ 0/ 0 0000/ 0/ 0
IP Destination : 1.1.1.1 192.168.0.1
Source : 192.168.1.2/24 192.168.2.2/24
MAC Destination : 94:94:26:00:00:01 ab:cd:ef:aa:bb:52
Source : ab:cd:ef:aa:bb:52 ab:cd:ef:aa:bb:53
NUMA/Vend:ID/PCI :-1/15b3:1017/0000:01:0-1/15b3:1017/0000:01:00.1
-- Pktgen 24.03.1 (DPDK 24.03.0) Powered by DPDK (pid:1690) -----------------
```

VPP 性能数据如下

```
Thread 1 vpp_wk_0 (lcore 3)
Time 4312.5, 10 sec internal node vector rate 0.00 loops/sec 6899106.25
vector rates in 8.2346e3, out 0.0000e0, drop 8.2346e3, punt 0.0000e0
Name State Calls Vectors Suspends Clocks Vectors/Call
abf-input-ip4 active 138720 35511313 0 1.24e2 255.99
dpdk-input polling 30192345449 35511318 0 2.86e5 0.00
drop active 138725 35511318 0 1.52e1 255.98
error-drop active 138725 35511318 0 6.71e0 255.98
ethernet-input active 138725 35511318 0 3.62e1 255.98
ip4-drop active 138720 35511313 0 6.85e0 255.99
ip4-input-no-checksum active 138720 35511313 0 4.15e1 255.99
ip4-lookup active 138720 35511313 0 3.07e1 255.99
ip6-input active 5 5 0 5.31e3 1.00
ip6-not-enabled active 5 5 0 1.99e3 1.00
unix-epoll-input polling 29455958 0 0 1.77e3 0.00
---------------
Thread 2 vpp_wk_1 (lcore 4)
Time 4312.5, 10 sec internal node vector rate 256.00 loops/sec 45554.75
vector rates in 9.6155e6, out 6.5761e6, drop 3.8843e5, punt 0.0000e0
Name State Calls Vectors Suspends Clocks Vectors/Call
TenGigabitEthernet3/0/1-output active 155558090 39791416116 0 4.95e0 255.79
TenGigabitEthernet3/0/1-tx active 155558090 28359013714 0 8.19e1 182.30
abf-input-ip4 active 176833510 41466399484 0 8.90e1 234.49
dpdk-input polling 13167973917 41466399488 0 9.99e1 3.15
drop active 21398772 1675106720 0 1.15e1 78.28
error-drop active 21398772 1675106720 0 7.87e0 78.28
ethernet-input active 176833513 41466399488 0 3.49e1 234.49
ip4-arp active 3708505 949377021 0 2.51e2 255.99
ip4-drop active 21398768 1675106716 0 5.87e0 78.28
ip4-input-no-checksum active 176833510 41466399484 0 2.48e1 234.49
ip4-load-balance active 159143247 40740669789 0 1.19e1 255.99
ip4-rewrite active 155434742 39791292768 0 2.10e1 255.99
ip6-input active 4 4 0 7.03e3 1.00
ip6-not-enabled active 4 4 0 1.95e3 1.00
unix-epoll-input polling 12846814 0 0 9.99e2 0.00
```

**测试内容**

没有拿上边的场景去做同等配置,只是做了几个简单配置了解一下转发率。
VPP 使用 DPDK 输入,配置了 6 条路由,3 条 ACL 规则,1 条 ABF (等同于 PBR 规则),此时发送打满了 10G 的线速,接收到了接近 6G 的速度,注意这是 64 字节的小包,大包没有太多参考意义。

**对比**

对比 CCR2004-16G-2S+的 8260.6kpps 转发率( routing fast path )(即 8.2Mpps )(数据来自官方),VPP 做到了 9Mpps 的转发率,这还是纯软件处理、只靠 2 个 CPU 核心、受到 hyperthreading 没关影响的数据,完全调整后应该还能再高一些(懒得弄了)。这台机器我手边随便拿的,正常买的话应该 1000 多块钱,加上全新的 X520-DA2 在 300 多块钱,你可以拥有比 CCR2004 更高的性能(仅限 L3 )。

**结论**

人生苦短,钱包不够,我选 RB5009 。
@faicker 多谢大佬,感谢!之前折腾了一天,多亏大佬一句话,找到问题了,就是 -m "0.0,1.1" 这个参数的问题。

我这台机器有 8 个逻辑核,一开始我把参数改成了 -m "6.0,7.1" ,启动就会得到下边的错误。

``
pktgen -l 6,7 -m 2048 -a 0000:01:00.0 -a 0000:01:00.1 -- -P -T -m "6.0,7.1"

*** Copyright(c) <2010-2023>, Intel Corporation. All rights reserved.
*** Pktgen created by: Keith Wiles -- >>> Powered by DPDK <<<

EAL: Detected CPU lcores: 8
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'VA'
EAL: VFIO support initialized
EAL: Probe PCI driver: mlx5_pci (15b3:1017) device: 0000:01:00.0 (socket -1)
EAL: Probe PCI driver: mlx5_pci (15b3:1017) device: 0000:01:00.1 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
*** Error can not use initial lcore for a port
The initial lcore is 6
```

问了 GPT4 ,告诉我说要留一个核心 reserved for management ,然后我把命令改成了`pktgen -l 5-7 -m 2048 -a 0000:01:00.0 -a 0000:01:00.1 -- -P -T -m "6.0,7.1"`,再启动就能正常打流了。
@faicker 晚点我再试试,多谢大佬
@yanpj1992 驱动确认装了,meson 的时候看到 mlx5 已经 enabled 了
应用层的比网络层的优先,系统代理始终会更早一步。

举几个例子,如果你开了系统代理,代理服务器 IP 是你的 VPN 内网里的某个 IP ,用到代理的时候,浏览器会发起代理连接,这个连接的数据包会路由到你的 VPN 里,最后发到你内网里处理,这个过程里它先走了系统代理然后会走路由甚至还走了你 VPN 的路由。如果你浏览器打开你 VPN 内网的 IP ,这个 IP 如果不在浏览器设置的代理排除列表,就会走代理服务器,如果刚好你的代理服务器是本地( 127.0.0.1 )的 xxx 软件,刚好你本地的代理服务器代理发起连接时认为这不是个需要加速的 IP ,它代理出来的流量仍然会走你的 VPN (因为它发起了连接 IP 是你内网的 IP ,就路由到你的 VPN 虚拟网卡了),你就可以访问内网成功,但是如果被认为是个需要加速的 IP ,就加密发到 xxx 软件的服务器去了,最后你这个访问内网就不通了。

详细的说,这两个概念不同。系统代理是个应用层的玩意,就一个实现 SOCK5 、HTTP 之类的前置代理协议的服务而已,VPN 用的那个路由表是个网络层( L3 )的概念,两个东西不一样。

[系统代理] 需要你的浏览器等软件支持代理协议,你才可以走这个代理。在你浏览器配置了系统代理时,会填写一个代理服务器地址(例如 127.0.0.1:1080 ,或者 PAC 文件,但是最后还是解析出代理服务器地址)。当你打开网页的时候,浏览器就会连接这个代理服务器,传输代理协议头和你网页的请求,这个连接过程就会创建一个 TCP 连接,会查路由表发到代理服务器(如果代理服务器是 127.0.0.1 ,就路由到本地,如果是外部 IP ,就路由出去),代理服务器收到之后再自己再代理请求。

[VPN] VPN 客户端在你系统上路由表上安装了控制端下发的几条路由,把你的 IP 数据包直接路由到它的虚拟网卡里,软件中能接到虚拟网卡来的包,软件处理把你的 IP 数据包打封装发到 VPN 服务器,然后 VPN 服务器解封装,就在它的网络里发走了。
@Dzsss 主要是没有相似场景参考单流实际转发速度能到多少,想保底选 VPP 的方案,但是 DPDK 测 Mellanox CX5 网卡的时候一直有问题,不想折腾了。想问问大佬,你那个配置,RB5009 单流(就是单核处理,不是多流同时的总和速度)能到 1Gbps 吗?能到我就冲了,不纠结了
以及这里补充一下,手边正好有一台 i226 网卡的工控,装完 CHR v7 版本的,开机直接内核 fault ,console 只打出来了最后十几行,看不到前边的 stack trace 信息,暂时也不知道是哪里的问题,看起来 x86 装 ROS 这条路确实不太好走,兼容性和稳定性不太好确定。
@FlintyLemming 了解,多谢大佬
@kenneth104 我这里 BGP 条目很少,也就几百条,ROS 的 BGP 我之前参加 MUM 的时候有人说了,就是前缀多的时候接起来特别慢。

x86 确实容易超过 5009 ,我找了 fd.io VPP 的 performance tuning ,发现 x520 的网卡+1 个 cpu 核心,三层转发就可以到 10Mpps 以上,四层 abr 也能有 6Mpps 多,确实直接秒 5009 。手边正好有几台空的机架服务器和几张 mellanox 、intel 的网卡,在考虑要不要自己做网关了。
@Ipsum 大概跑到多少速度来的?以及有 pps 参考不
@dann73580 是,我看到有人说 ROS 的 i226 拉不满,但是 Linux 发行版系统就可以,可能还是有一些问题。
@Dzsss 我不开 fast track 是因为,做 pbr 之后并且还要再迂回(在 pbr 网关做了一次 masquerade 的)到同一台 ROS v7 机器后,pbr 会有问题(忘了之前测的是不通还是失效了),但是 ROS v6 的没有这个问题,无非是 rp_filter 改到 loose 就行。不过多谢大佬,原来这玩意坑还有这么多,后边我也避免这样用。

这玩意保值是保值,但是下架的机器有人收吗(笑哭

另外想问问大佬,你这 5009 跑这么多东西,规则全开的情况下,单流极限(也就是不 offloading ,靠 CPU 软转单核)能有多少来的?
@jmxct520 贵啊
@yyzh 他这个应该用 dpdk+vpp 做,pbr 这个确实不好 offloading 。不过我今天看到 architechs 的一个 presentation ,x86 的 8 核 RouterOS CHR 也就跑到了 900 多 kpps ,CCR 硬件可以直接 3Mpps ,差远了
49 天前
回复了 HarrisIce 创建的主题 Apple mac 里的存储空间统计是不是不准?
1 楼和 2 楼的结果,看起来统计确实不准。。。不知道是苹果的 bug 还是啥,数值能差这么多。。。
49 天前
回复了 HarrisIce 创建的主题 Apple mac 里的存储空间统计是不是不准?
@moyaya 多谢,下了一个看了一下,mac mini 实际存储使用量 237G 。
49 天前
回复了 fengymi 创建的主题 程序员 新人家用摄像头求推荐
很久之前买过一个小米的,github 有刷机教程,印象里记得要焊 ttl 线,然后进去刷固件,就可以打开外录功能,之前把它接到了群晖的监控上,能用。如果楼主喜欢折腾,可以考虑考虑
多谢大家的回复。我的诉求就一个,能 100%稳定撑够 1 年,等到第二年春节我回来换,所以基本坚持一年的办法就不考虑。本身是做软件的哈哈这些坑真不知道了,经验不多,看了 datasheet 是 LDO 我以为 LDO 都是低功耗的,看来对于 iot 硬件来说这个低功耗还是不够低,既然能直接两串两并 3V ,放电截止电压 1.8V 左右也够用,我试试直接两串两并好了。
没想到晚上来看竟然这么多大佬回复,多谢各位。

评论中蛮多说没搞明白原子性什么意思,我没表达清,其实就是想说单纯说 mysql 的事务 2333 ,还没有用到 redis ,单纯希望在围绕 mysql 的业务流中,业务流和你使用的 atomic 包一样都是原子的不可再切分的。

另外多谢 @BeautifulSoap @heww @thevita @qloog @lxdlam @EchoGroot @nobject 的详细解释,看起来确实还是放在 ctx 里主流一些,容我研究研究。
67 天前
回复了 HarrisIce 创建的主题 Apple macbook wifi 周期性高延迟,体感十分明显
对比测试了一下,AirDrop 始终开启,频点 36 频宽 160MHz 时,ping 会看到明显的周期性高延迟,从 mac 上复制一个图片,手机端打开淘宝之类触发 airdrop 传输时,立即断网一秒,随后还会持续高延迟几秒,非常明显。频点改为 149 频宽 80MHz 时,ping 非常稳定,不论怎么复制图片触发 airdrop ,延迟没有明显变化,非常稳定。

所以最后找到了确定的解决办法,路由器 Wi-Fi 5g 频点改 149 ,如果你是公司网,建议用有线(但是实际上我觉得高延迟的那一下,如果你不是打游戏其实也还好)。
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1162 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 24ms · UTC 23:06 · PVG 07:06 · LAX 16:06 · JFK 19:06
Developed with CodeLauncher
♥ Do have faith in what you're doing.