IO系统调用

  1. 1.系统调用
  2. 2、进程上下文切换
  3. 3、软中断
  4. 总结

1.系统调用

syscall

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" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏

csdn zhihu github