前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Libpcap PACKET_MMAP内存分配

Libpcap PACKET_MMAP内存分配

作者头像
happy123.me
发布2018-06-04 10:27:43
1.3K0
发布2018-06-04 10:27:43
举报
文章被收录于专栏:乐享123

libpcap为了提高效率,调用setsockopt(handle->fd, SOL_PACKET, PACKET_RX_RING,(void *) &req, sizeof(req))时采用kmalloc分配内存。

可以参考:

https://www.kernel.org/doc/Documentation/networking/packet_mmap.txt

kmalloc底层依赖linux的slab内存分配机制,在2.6.22内核之后,slub取代slab成为默认的内存分配器。空间和时间上都有所提升。值得升级。

另外,centos5.9默认采用的2.6.18内核,编译的时候默认的KMALLOC_MAX_SIZE 设置为size-131072,这对于有很大内存的机器,分配效率是不高的。

最简单的办法就是用rpm包升级到2.6.33.9-rt31.86.el5rt,这个内核编译的时候已经将KMALLOC_MAX_SIZE设置为size-4194304。

这个问题是追踪libpcap的抓包程序,内存分配频繁失败发现的。

只能说,内核升级频繁,很多编译开关影响很大,要想全面发挥linux的性能,只能紧跟潮流啊。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档