pwrliang

pwrliang

V2EX 第 124980 号会员,加入于 2015-06-30 23:44:47 +08:00
[讨论] 为何 epoll_wait 有性能瓶颈?
Linux  •  pwrliang  •  138 天前  •  最后回复来自 pwrliang
16
Kodi+Plex on raspberry pi 遇到问题
问与答  •  pwrliang  •  2020-05-24 09:54:36 AM
大家觉得买下这个 MBP17 值吗?
Apple  •  pwrliang  •  2020-05-01 19:19:47 PM  •  最后回复来自 leon912
30
[求助]一道算法题-多括号匹配
算法  •  pwrliang  •  2020-04-05 21:00:04 PM
有没有一款软件通过网络能够播放私有音乐?
NAS  •  pwrliang  •  2019-12-20 20:36:52 PM  •  最后回复来自 pwrliang
6
工作内容不喜欢怎么办
职场话题  •  pwrliang  •  2019-02-14 13:36:51 PM  •  最后回复来自 RoyL
15
迫于 xx 困难,安利下 OpenConnect
分享发现  •  pwrliang  •  2020-03-09 12:33:29 PM  •  最后回复来自 DopaminePlz
20
如何优化 Samba 在互联网下的性能?
NAS  •  pwrliang  •  2019-01-12 21:46:09 PM  •  最后回复来自 pwrliang
6
分享 Pixel3 与 Pixel3XL 优惠卷
推广  •  pwrliang  •  2018-12-21 22:14:36 PM
记一次真实发生的 - 电信计费错误
全球工单系统  •  pwrliang  •  2018-11-02 15:54:05 PM  •  最后回复来自 pwrliang
23
pwrliang 最近回复了
40 天前
回复了 AA5DE3F034ACCB9E 创建的主题 MacBook Pro MBP14 爆音,怎么解决?
@AA5DE3F034ACCB9E 估计这个 bug 不好 debug ,好几次更新了也没修好
43 天前
回复了 yescola 创建的主题 Apple 这台 MacBook M1 的电池健康度属于什么水平。。
Health Information:
Cycle Count: 56
Condition: Normal
Maximum Capacity: 100%

买了大半年了,一点没掉是怎么回事?
@dongcxcx 我感觉是软件问题吧,我这偶尔系统发出的提示音都能破音,服了。
看起来主要是修复了很多安全问题。正在安装更新,希望能顺道解决扬声器破音问题和 USB audio 卡顿的问题。
89 天前
回复了 iosyyy 创建的主题 程序员 如何评价把 accesid 写在博客里
估计过一阵这个数据人手一份了,身份证号也不需要保密了
130 天前
回复了 iamlier 创建的主题 职场话题 是否要去读博
读啊,我几年也 29 ,硕士毕业工作了 3 年润去美国读了。读博的话有靠谱的导师是很重要的,确保能给你指导,能做出东西来。
138 天前
回复了 pwrliang 创建的主题 Linux [讨论] 为何 epoll_wait 有性能瓶颈?
@zizon 破案了,确实是这个问题,Linux 提供的 benchmark 有问题,只有 1 个 writer 不能够喂饱这么多 reader ,导致 reader 等待,造成频繁的 context switch 。[我改了下 benchmark]( https://github.com/pwrliang/linux/blob/master/tools/perf/bench/epoll-wait.c),现在每个线程都能够达到 60w 的 throughput
```
./perf bench epoll wait -t 14 -r 2 -w 14 -m
# Running 'epoll/wait' benchmark:
Run summary [PID 5905]: 14 threads monitoring on 64 file-descriptors for 2 secs.

[thread 0] fdmap: 0x1aec590 ... 0x1aec68c [ 648960 ops/sec ]
[thread 1] fdmap: 0x1aec920 ... 0x1aeca1c [ 640540 ops/sec ]
[thread 2] fdmap: 0x1aeccb0 ... 0x1aecdac [ 635712 ops/sec ]
[thread 3] fdmap: 0x1aed040 ... 0x1aed13c [ 650944 ops/sec ]
[thread 4] fdmap: 0x1aed3d0 ... 0x1aed4cc [ 638048 ops/sec ]
[thread 5] fdmap: 0x1aed760 ... 0x1aed85c [ 648064 ops/sec ]
[thread 6] fdmap: 0x1aedaf0 ... 0x1aedbec [ 632416 ops/sec ]
[thread 7] fdmap: 0x1aede80 ... 0x1aedf7c [ 647144 ops/sec ]
[thread 8] fdmap: 0x1aee210 ... 0x1aee30c [ 628896 ops/sec ]
[thread 9] fdmap: 0x1aee5a0 ... 0x1aee69c [ 634521 ops/sec ]
[thread 10] fdmap: 0x1aee930 ... 0x1aeea2c [ 640032 ops/sec ]
[thread 11] fdmap: 0x1aeecc0 ... 0x1aeedbc [ 626093 ops/sec ]
[thread 12] fdmap: 0x1aef050 ... 0x1aef14c [ 645843 ops/sec ]
[thread 13] fdmap: 0x1aef3e0 ... 0x1aef4dc [ 643849 ops/sec ]

Averaged 640075 operations/sec (+- 0.33%), total secs = 2
```
138 天前
回复了 pwrliang 创建的主题 Linux [讨论] 为何 epoll_wait 有性能瓶颈?
@wslzy007 您好,现在我不太理解的是为何 epoll 的性能随着线程的增加,每个线程的处理能力在减少。
举个例子,加入 1 个线程每秒能完成 10w 次 epoll ,那么 4 个线程应该能达到 40w (没有超过核数的情况下),但是实际测试不是这样的。给我的感觉是 Linux 的 epoll 实现有个全局锁,导致总体的性能是有极限的。
138 天前
回复了 pwrliang 创建的主题 Linux [讨论] 为何 epoll_wait 有性能瓶颈?
@LeeReamond 感谢回复
1. 看了下,每个核的 sys 时间在 20 左右
2. epoll_create 会创建一个独立的 eventpoll 在内核,这个 benchmark 创建的 epoll 对象是隔离的,线程间不会共享同一个 epfd
3. epfd 和读线程的数量还没有达到核数,软中断应该是每个核都有一个进程叫 ksoftirqd 来处理,所以核数越多,irq 的处理能力应该越高
4. 红黑树是在管理多个 fd 用到的,在 epoll_ctl 才会访问
5. 这个 benchmark 的实现,epoll 监控的是 eventfd ,这个 fd 是内核的一个计数器,所以不会走网络的,不知道您提到的北桥是什么意思呢?
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1941 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 45ms · UTC 02:36 · PVG 10:36 · LAX 19:36 · JFK 22:36
Developed with CodeLauncher
♥ Do have faith in what you're doing.