IO系统调用
1.系统调用
2、进程上下文切换
每次get都会导致进程进入自愿上下文切换,在网络IO密集型的应用里自愿上下文切换要比时间片到了被动切换要多的多!
3、软中断
网卡都会通过软中断的方式来让内核处理数据包
每次get请求收到数据返回的时候,内核必须要支出一次软中断的开销!
总结
看似一次非常简单的redis get操作就会把所有系统态的高开销操作都涉及到了。一次进程上下文切换、一次软中断、若干次系统调用。在经过了前面多篇文章的历练,相信大家对它们的开销有了一个量化的拿捏。其实除了上面这些容易评估到的开销外,还有如L1、L2 cache miss,以及TLB cache miss这些在进程被切换掉都会造成cache命中率下降,也会导致额外开销。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 wshten@gmail.com
文章标题:IO系统调用
本文作者:KevinTen
发布时间:2019-10-21, 00:00:00
最后更新:2019-10-21, 21:21:32
原始链接:http://github.com/kevinten10/2019/10/21/Science/IO-系统调用/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。