sendfile zero-copy

算法踏风鹤
• 阅读 1223

传统read/write进行网络文件传输过程当中,文件数据实际上经过四次copy操作:

硬盘 —> 内核buf —> 用户buf —> socket相关缓冲区 —> 协议引擎

而sendfile系统调用减少以上多次copy,提升文件传输性能:

硬盘 —> 内核buf —> 用户buf —> socket相关缓冲区 —> 协议引擎

1、sendfile系统调用,文件数据被copy至内核缓冲区  
2、再从内核缓冲区copy至内核中socket相关的缓冲区  
3、最后再socket相关的缓冲区copy到协议引擎

减少了 内核bufuser buf ,再从 user bufsocket相关缓冲区 的文件copy

---[2016-12-15]---

点赞
收藏
评论区
推荐文章
美凌格栋栋酱 美凌格栋栋酱
10个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
待兔 待兔
4年前
Dart基础>Dart语法(上)
Dart基础系列:Dart简介(https://www.jianshu.com/p/c749f40828a5)Dart语法(上)(https://www.jianshu.com/p/6b5689342e24)<基础Dart语法(下)(https://www.jianshu.com/p/7c3eba46e679)说明:
Stella981 Stella981
4年前
ASMSupport教程4.7 生成关系运算符
<p在java中,关系运算符是很常用的,分别是&gt;,,&lt;,&gt;,&lt;,!这六种,我们按照惯例看看我们需要生成的代码:</p<divid"scid:9D7513F9C04C4721824A2B34F0212519:dfec0f1ca2ec4ebabc9b91c161fbfa47"class"wlWri
Stella981 Stella981
4年前
Linux下CPU占用率高分析方法
<divclass"htmledit\_views"id"content\_views"<p一、可能有线程一直占用CPU资源</p<p1.先通过ps查看进程状态,找出进程的PID(8209)。</p<p2.jstackl8209&gt;/usr/local/work/tomcat/8209.stack导出PID
Wesley13 Wesley13
4年前
MongoDB 聚合函数
概念聚合函数是对一组值执行计算并返回单一的值主要的聚合函数countdistinctGroupMapReduce1、countdb.users.count()db.users.count({"uname":"hxf1"})db.users.count({"salary":{"$gt":15000}
Wesley13 Wesley13
4年前
MongoDB 范围查询
查询价格在2009000  $gt 大于   $lt  小于//查询价格2009000范围的数据db.prodgory.find({"price":{$gt:"200",$lt:"9000"}})查询给定范围数据  $in//给定范围查询db.product1.find({"categor
Stella981 Stella981
4年前
Python 为什么只需一条语句“a,b=b,a”,就能直接交换两个变量?
从接触Python时起,我就觉得Python的元组解包(unpacking)挺有意思,非常简洁好用。最显而易见的例子就是多重赋值,即在一条语句中同时给多个变量赋值:&gt;&gt;&gt;x,y1,2&gt;&gt;&gt;print(x,y)结果:12在此例中,赋值操作符“”号的右
Wesley13 Wesley13
4年前
.NET中的本地缓存(数据分拆+lock锁)
本章将和大家分享.NET中的本地缓存。本章将和大家分享如何使用数据分拆lock锁的方式来实现本地缓存。系统性能优化的第一步,就是使用缓存。缓存包括:客户端缓存CDN缓存反向代理缓存本地缓存。!(https://static.oschina.net/uploads/img/202009/27220009_a8gt.png)
Stella981 Stella981
4年前
Shell脚本应用(if语句的结构)
1、测试:检测表达式是否成立,成立则返回值为0,否则为非0方法:1)test 表达式2)【表达式】2、文件测试:\d:是否为目录\f:是否为文件\e:是否存在\r:是否有读取权限\w:是否有写入权限\x:是否有执行权限3、整数值比较:\eq:等于\ne:不等于\gt:大于\
小万哥 小万哥
1年前
资源描述框架的用途及实际应用解析
RDF(资源描述框架)是一种用于机器理解网络资源的框架,使用XML编写。它通过URI标识资源,用属性描述资源,便于计算机应用程序处理信息。RDF在语义网上促进信息的确切含义和自动处理,使得网络信息可被整合。RDF语句由资源、属性和属性值组成。RDF文档包括&lt;rdf:RDF&gt;根元素和&lt;rdf:Description&gt;元素,后者用about属性标识资源。RDF还支持容器(如&lt;Bag&gt;、&lt;Seq&gt;和&lt;Alt&gt;)来描述集合。RDFS是RDF的扩展,提供描述类和属性的框架,而达布林核心是一组预定义属性,用于描述文档。
小万哥 小万哥
1年前
RSS 解析:全球内容分发的利器及使用技巧
RSS(ReallySimpleSyndication)是一种XML格式,用于网站内容的聚合和分发,让用户能快速浏览和跟踪更新。RSS文档结构包括&lt;channel&gt;和&lt;item&gt;元素,允许内容创作者分享标题、链接和描述。通过RSS,用户可以定制新闻源,过滤不相关信息,提高效率。RSS支持不同版本,如RSS0.91和RSS2.0,其中RSS2.0语法简单且广泛使用。RSS提高网站流量,适用于新闻、博客、日历等频繁更新的站点。RSS的历史始于1997年,至今仍无官方标准,但已成为内容共享的重要工具。