感觉提升有点离谱, 我对照的另一个服务提升微乎其微, 各位帮忙分析一波?
1
aru 2023-05-25 10:11:26 +08:00 3
迁移前和迁移后的硬件环境都没说明
这是毫无意义的对比 |
2
Kinnice 2023-05-25 10:11:48 +08:00 1
按理说你应该再做这两个尝试:
ubuntu22.04 虚拟机迁移到 ubuntu22.04 物理机 fedora38 虚拟机迁移到 fedora38 物理机 另外保证内核参数要一致,tcp 连接数,超时之类的配置 |
3
Nazz OP @Kinnice 连接数一样, 压测参数一样, 相同的 GOMAXPROCS 限制. 差异就是一个是虚拟机一个是物理机, 内核不一样, 对应的内核参数都是默认值
|
6
Nazz OP 编译器是 go1.20
|
7
yyzh 2023-05-25 10:22:17 +08:00 via Android
你这又没有直通又没有 sriov 的测来就完全是没用的数据
|
10
hxndg 2023-05-25 11:13:54 +08:00 2
额。。。。这种研究的唯一意义可能只是满足好奇心,因为从虚拟机到物理机变化的东西太多了。。。IO 层面,上下文层面都不一样。。。
|
11
Nazz OP @hxndg 想要确定具体的原因还很艰难, 两个服务虽然都是基于标准网络库的 websocket server implementation, 但是具体实现差太远了, 两三千行代码
|
13
msg7086 2023-05-25 12:10:21 +08:00
太多变量了,怎么给你分析。另外上面有人提了,你可以 SRIOV 把物理网卡放进去测性能看看。
|
14
Nazz OP @msg7086 127.0.0.1 不涉及物理网卡。回头再测下 Fedora38 虚拟机吧,控制下变量
|
16
dzdh 2023-05-25 12:48:12 +08:00
sysctl.conf ulimits 啥的都 100%完全一样吗
|
17
Nazz OP @msg7086 同一颗 CPU. 装了双系统,一个 Windows10 加 VMware Ubuntu22.04 Server ,一个 Fedora38 Desktop
|
18
Nazz OP @dzdh 没看 sysctl.conf ,没改过系统配置. ulimits 没报错,测试参数是 1000 连接,每连接发 1000 条 1KB 的 websocket 消息
|
21
hefish 2023-05-25 13:03:27 +08:00
怎么。。。这虚机满足不了你了是吗?
|
23
jworg 2023-05-25 13:36:34 +08:00 1
kernel 都不一样,变量太多了,22.04.1 lts 还是 5.15 ,fedora 已经到 6.2 了,中间多了不少有意思的东西
|
24
jworg 2023-05-25 13:39:20 +08:00
除了内核版本,消费级 cpu 还有睿频因素在那,实体机默认能睿频,虚拟机不一定能。
|
25
Nazz OP @jworg Ryzen 4650G 基础频率 3.7GHz, 加速频率 4.2GHz, 0.5GHz 提升应该没那么大, 内核的影响大一些
|
26
mkz 2023-05-25 13:51:23 +08:00
你这个环境主要就是 CPU 和内存
|
29
jworg 2023-05-25 14:01:41 +08:00 1
@Nazz 找了下,在 5.17 的时候确实有一个比较适合压测场景的 tcp 优化 https://www.phoronix.com/news/Linux-5.17-TCP-Optimization 验证的话看下 kernel 版本,在我印象中 ubuntu 22.04.1 是 5.15 ,可以通过 hwe 升级到 5.19 ,具体命令是 sudo apt install --install-recommends linux-generic-hwe-22.04 ,执行前先看下先前的版本,新的 22.04 lts 似乎已经升级到 5.19 了。如果是新的内核那就不是这个原因了。
|
30
Nazz OP @jworg 下班后折腾下看看, 这个解释看起来很靠谱. 前面不小心讲错了, 我的 ubuntu 版本是 20.04 LTS
|
31
Nazz OP |