水木社区手机版
首页
|版面-编程技术(Programming)|
新版wap站已上线
返回
首页
|
上页
|
2/2
|
转到
主题:udp socket收包程序怎么写cpu利用率最低
10楼
|
pht398
|
2021-11-30 19:08:59
|
只看此ID
嗯 你说的很严谨
【 在 eggcar 的大作中提到: 】
: 改成“使用率”吧,“利用率”低的含义完全是反的
:
: 轮询是对的,再进一步要在内核pass掉nic的中断和协议栈,dpdk就是这么实现的,但是不知道你的embedded环境是否支持dpdk
来自 V2072A
--
FROM 49.65.246.*
11楼
|
smthxes
|
2021-11-30 19:14:53
|
只看此ID
哦
【 在 pht398 的大作中提到: 】
: usleep也是系统调用啊
: 来自 V2072A
--
FROM 119.191.211.*
12楼
|
pht398
|
2021-11-30 19:18:12
|
只看此ID
所以调用usleep的时候时间不能设太短 否则cpu使用率会上升不少哦
【 在 smthxes 的大作中提到: 】
: 哦
来自 V2072A
--
FROM 49.65.246.*
13楼
|
smthxes
|
2021-11-30 20:05:31
|
只看此ID
你这么自信,我就不多嘴了
【 在 pht398 的大作中提到: 】
: 所以调用usleep的时候时间不能设太短 否则cpu使用率会上升不少哦
: 来自 V2072A
--
修改:smthxes FROM 119.191.211.*
FROM 119.191.211.*
14楼
|
pht398
|
2021-11-30 20:34:52
|
只看此ID
多交流互通有无 共同进步啊
【 在 smthxes 的大作中提到: 】
: 你这么自信,我就不用多嘴了
来自 V2072A
--
FROM 222.94.236.*
15楼
|
Chear
|
2021-11-30 21:53:18
|
只看此ID
你的数据不要求qos?
【 在 pht398 的大作中提到: 】
: 有个问题想请教一下大家 现在有个linux上的应用程序需要用socket从一个fd持续收大量udp包 速率大概维持在800Mb pps大约70k 因为是嵌入式设备资源有限 所以这个程序对cpu利用率非常敏感 希望能越低越好 而且不能开多线程来运行
: 我理解这种场景缓冲区几乎一直是满的 用循环+recvfrom是不是已经是cpu利用率最低的方案 有没有什么其他好的方法呢 请大家不吝赐教啊
:
: ...................
--
FROM 221.218.139.*
16楼
|
pht398
|
2021-11-30 22:44:47
|
只看此ID
什么意思?
【 在 Chear 的大作中提到: 】
: 你的数据不要求qos?
来自 V2072A
--
FROM 114.221.4.*
17楼
|
lambdai
|
2021-12-01 06:35:53
|
只看此ID
看了你的回复我才发现blockingrecv默认会等vlen条。
你要么试试poll+nonnlock,要么看看waitforone会不会返回多条?如果你的thread只关注这一个fd,后者应该适合你。
我要是设计者的话,我肯定会让waitforone返回的时候返回尽可能多的message的
【 在 pht398 的大作中提到: 】
: 嗯 我也想到了这个 recvmmsg我设置的flag是MSG_WAITFORONE 也就是只阻塞收一条 我理想的结果是一次recvmmsg可以把缓冲区的消息全部收到 但实际情况是调一次recvmmsg总是收到固定vlen条消息 是不是说明收的速度已经跟不上缓冲区写入的速度了呢
: 【 在 lambdai 的大作中提到: 】
: : 先试试把recvfrom改成recvmmsg吧。应该能省不少syscall
: ....................
- 来自「最水木 for iPhone12,8」
--
FROM 104.133.8.*
首页
|
上页
|
2/2
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版