从 ubuntu22.04 虚拟机迁移到 fedora38 物理机, go tcp server 压测表现提升了 81% !

2023-05-25 10:06:10 +08:00
 Nazz

感觉提升有点离谱, 我对照的另一个服务提升微乎其微, 各位帮忙分析一波?

3032 次点击
所在节点    程序员
31 条回复
aru
2023-05-25 10:11:26 +08:00
迁移前和迁移后的硬件环境都没说明
这是毫无意义的对比
Kinnice
2023-05-25 10:11:48 +08:00
按理说你应该再做这两个尝试:
ubuntu22.04 虚拟机迁移到 ubuntu22.04 物理机
fedora38 虚拟机迁移到 fedora38 物理机
另外保证内核参数要一致,tcp 连接数,超时之类的配置
Nazz
2023-05-25 10:16:08 +08:00
@Kinnice 连接数一样, 压测参数一样, 相同的 GOMAXPROCS 限制. 差异就是一个是虚拟机一个是物理机, 内核不一样, 对应的内核参数都是默认值
Nazz
2023-05-25 10:18:38 +08:00
@aru 硬件环境图上有, 可能看不太清楚 😂

Ryzen R5 4650G, 2 * 8G DDR4 3200MHz
Nazz
2023-05-25 10:19:46 +08:00
@Kinnice 嗯, 再装个 fedora38 虚拟机试试. 物理机就算了, 重装系统麻烦
Nazz
2023-05-25 10:20:45 +08:00
编译器是 go1.20
yyzh
2023-05-25 10:22:17 +08:00
你这又没有直通又没有 sriov 的测来就完全是没用的数据
Nazz
2023-05-25 10:24:17 +08:00
@yyzh 我只是好奇为什么两个程序一个提升巨大一个几乎原地踏步, 都是 go websocket server
Nazz
2023-05-25 10:26:18 +08:00
@Nazz echo server
hxndg
2023-05-25 11:13:54 +08:00
额。。。。这种研究的唯一意义可能只是满足好奇心,因为从虚拟机到物理机变化的东西太多了。。。IO 层面,上下文层面都不一样。。。
Nazz
2023-05-25 11:31:34 +08:00
@hxndg 想要确定具体的原因还很艰难, 两个服务虽然都是基于标准网络库的 websocket server implementation, 但是具体实现差太远了, 两三千行代码
Nazz
2023-05-25 11:45:34 +08:00
@hxndg 如果能找到原因的话, 对性能优化可能会有帮助, 当然好奇心也是驱动力
msg7086
2023-05-25 12:10:21 +08:00
太多变量了,怎么给你分析。另外上面有人提了,你可以 SRIOV 把物理网卡放进去测性能看看。
Nazz
2023-05-25 12:15:05 +08:00
@msg7086 127.0.0.1 不涉及物理网卡。回头再测下 Fedora38 虚拟机吧,控制下变量
msg7086
2023-05-25 12:43:18 +08:00
@Nazz 原来是 localhost 么,那可能要看看 CPU 性能了。
dzdh
2023-05-25 12:48:12 +08:00
sysctl.conf ulimits 啥的都 100%完全一样吗
Nazz
2023-05-25 12:49:23 +08:00
@msg7086 同一颗 CPU. 装了双系统,一个 Windows10 加 VMware Ubuntu22.04 Server ,一个 Fedora38 Desktop
Nazz
2023-05-25 12:52:15 +08:00
@dzdh 没看 sysctl.conf ,没改过系统配置. ulimits 没报错,测试参数是 1000 连接,每连接发 1000 条 1KB 的 websocket 消息
msg7086
2023-05-25 12:52:50 +08:00
@Nazz 我的意思是,物理机 CPU 性能和虚拟化以后的比。
Nazz
2023-05-25 12:59:55 +08:00
@msg7086 纯计算的话不至于差距那么大。可能我的服务刚好契合了什么东西

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/942772

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX