关于setsockopt的SO_SNDLOWAT低潮发送

               先从sendfile说起吧,sendfile其实就是大家口中说的“零拷贝”,在服务器传输大文件方面具有卓越的性能,究其无非主要原因两点: 

           1.  减少CPU的使用

           2.  减少系统调用和数据拷贝的次数

           这方面的资料很多,大家网上可以自行搜索。在测试sendfile的小IO问题的时候,意外需要设置setsockopt的SO_SNDLOWAT字段,SO_SNDLOWAT是一个发送低潮字段,根据网上的解释,设置该字段可以当缓冲区有多少剩余空间的时候才被触发调用。那样岂不是很爽,那调用sendfile的时候磁盘的性能可以大大的提高,不会在产生小IO了。 经过本人测试(发送低潮设置512k),并没有啥卵用。测试结果如下:

            


            谷歌百度都没有搜出来,然后默默打开linux-3.18-rc6内核源码看到了一句话,卧槽,内核原来没有实现SO_SNDLOWAT的代码,只有SO_RCVLOWAT字段(接收低潮)代码,可惜这个字段对于我目前还用不到的。网上的那么多解释也不过人云亦云。下面这句话意思是:我们实现的SO_SNDLOWAT不可使用

       

            

           

           这样的话,《linux高性能服务器编程》就存在问题了,这本书不过还是挺好的,毕竟我的入门书



             所以呢,对于网上的资料我们应该持有半信半疑的态度,什么都自己搞搞,就清楚怎么回事了,对于一些原因,一定要深究到底,不然会被叼死,如果知其然,也只其所以然,那样就不会被怼到死。


           如果有什么问题,欢迎指针!

           

 


 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值