- 论坛徽章:
- 1
|
回复 12# fly6
我之前用netlink,感觉真正通信的时候,其实效率是很低的,主要体现在:
kernel和user space (advttyp)交互
(1)
user space 调用read
proc: 调用proc的read函数
netlink:
a. user space发送一个消息给内核,告诉内核它可以发送数据,并告诉内核此次发送的数据的大小
b. 内核调用netlink相关函数发送数据,与此同时user space异步接收到数据
缺点:
user space每read一次,需要来回两次数据传递,影响netlink带宽
(2)
user space 调用 write
proc:调用proc的write函数
netlink:
a.user space先发送一个消息请求到内核
b.然后内核回送给user space此次能够接收的数据的长度
c.然后user space才能启动发送,并且只能发送指定的长度
user space每write一次,需要来回三次数据传递,严重影响netlink带宽,事实上,这也是netlink的方案被抛弃的根本原因
现在考虑用setsock/getsock,但不知道性能会咋样? |
|