kafka性能高的影响因素

1.使用操作系统的页缓存
kafka的性能非常依赖于操作系统的页缓存,页缓存提供了比kafka进程内存更好的缓存方式。

2.零拷贝(linux的sendfile函数,对应FileChannel.transferto函数)
正常的从磁盘发送数据到网络要经过一下几个步骤:
a.把数据从磁盘读取到内核的read buffer内存中
b.把内核read buffer内存的数据读取到应用程序的用户内存uer buffer中
c.把用户user buffer内存中的数据写到socket buffer内核内存中
d.dma把socket buffer内存内存的数据写到网卡设备中

而使用了sendfile函数后流程变成了:
a.把数据从磁盘读取到内核的read buffer内存中
b.把read buffer的位置和长度标志成一个fd描述符对象,并把这个描述符放到socket buffer中
c.dma 把socket buffer中的fd指向的read buffer内存内容写到网卡设备中
整个过程少了两个步骤:从read buffer拷贝数据到应用程序内存以及从应用程序内存拷贝数据到socket buffer

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值