在发现云服务器读取OCS缓存的“黑色0.1秒”是发生在socket读取数据时,而且是发生在读取开始的字节,甚至在socket写数据时(比如写入缓存key)也会出现超过50ms的情况,我们的好奇心被激发到一个新的高度。

  根据我们的实测,在云服务器上创建一个新的TCP连接通常也不过3ms左右。在黑色0.1秒期间,TCP包已经到达网卡,从网卡读到内存中竟然超过100ms,这太不可思议了!后来想想,如果.Net或Windows存在这样的问题,那微软就不是全球第一大软件公司,而是全球第一大忽悠公司,这个可能性真的非常非常小。

  所以,我们觉得“黑色0.1秒”问题最大的怀疑对象依然是阿里云的Xen虚拟机。再加上之前对黑色n秒(n大于1)问题的分析,最大的怀疑对象也是Xen。如果真的是Xen的问题,那就不仅仅是阿里云的问题,这让我们的好奇心更上了一层楼。

  既然“黑色0.1秒”发生在Xen的网络IO层面,那我们还等什么,赶紧去了解Xen的IO虚拟化机制!

  通过Google很快搜索到一篇关于Xen的重要论文——Diagnosing Performance Overheads in the Xen Virtual Machine Environment:

  这篇论文的“3.1 Xen”第2段文字专门讲到了Xen的IO模型:

3.1 Xen

The latest version of the Xen architecture introduces a new I/O model, where special privileged virtual machines called driver domains own specific hardware devices and run their I/O device drivers. All other domains (guest domains in Xen terminology) run a simple device driver that communicates via the device channel mechanism with the driver domain to access the real hardware devices. Driver domains directly access hardware devices that they own; however, interrupts from these devices are first handled by the VMM which then notifies the corresponding driver domain through virtual interrupts delivered over the event mechanism. The guest domain exchanges service requests and responses with the driver domain over an I/O descriptor ring in the device channel. An asynchronous inter-domain event mechanism is used to send notification of queued messages. To support high-performance devices, references to page-sized buffers are transferred over the I/O descriptor ring rather than actual I/O data (the latter would require copying). When data is sent by the guest domain, Xen uses a sharing mechanism where the guest domain permits the driver domain to map the page with the data and pin it for DMA by the device. When data is sent by the driver domain to the guest domain, Xen uses a page-remapping mechanism which maps the page with the data into the guest domain in exchange for an unused page provided by the guest domain.

  虚拟机的世界果然不一样。原来在Xen中,每一个物理设备都有一个专门的特权虚拟机(driver domain)在管理,其他虚拟机(guest domain,云服务器就运行于guest domain)访问物理设备都要通过对应的driver domain。driver domain上运行着直接可以访问物理设备的驱动程序;而guest domain中的驱动程序相当于只是一个中介,它通过设备信道机制(device channel mechanism)与driver domain进行通信,来完成物理设备的访问操作(见下图,来自这个PPT——Diagnosing Performance Overheads in the Xen Virtual Machine Environment)。(关键点1:云服务器中的网络IO操作最终是由driver domain完成的

  而来自物理设备的中断(interrupt)首先由VMM(Virtual Machine Monitor)处理,然后基于事件机制,通过相应的虚拟中断通知相应的driver domain(关键点2:当网卡收到包时,中断首先是由VMM处理的,然后发给Driver Domain)。关于这一点,在该论文中的6.1.1节中也提到了:

For each packet received, the network device raises a physical interrupt which is first handled in Xen, and then the appropriate “event” is delivered to the correct driver domain through a virtual interrupt mechanism.

  当driver domain将来自物理设备的数据(比如网卡接收到的网络包)发给guest domain时,Xen会使用page-remapping(内存页重映射)机制。driver domain会先将数据从物理设备读取到内存中,然后将这部分内存页与guest domain中的未使用内存页进行交换,然后guest domain直接读取这部分内存页,有点偷梁换柱的味道(关键点3:当socket读取数据时,会进行driver domain与guest domain的内存页重映射操作)。关于这一点,在该论文的6.1.2节占也提到到了:

For each page of network data received, the page is remapped into the guest domain and the driver domain acquires a replacement page from the guest.

  再来看看“黑色0.1秒”期间的情况。Wireshark的抓包数据显示,当时来自OCS的TCP包已经到达guest domain:

  这说明了什么呢?先看一张更详细的Xen I/O架构图(图片来自[pdf]Xen I/O Overview):

  我们推断,当时TCP包已经到达上图中的Netfront——guest domain中的网卡。也就是说物理网卡收到了网络包,并发出了中断;中断被VMM处理并发给了driver domain,driver domain已经将网卡中的数据读取到内存中;并且已经完成了与guest domain的page-remapping。socket读取数据时,实际就是在读这块从drvier domain的remap过来的内存页,就在读的过程中发生了“黑色0.1秒”。

  再看一张更详细的图(图片来自Optimizing Network Virtualization in Xen):

  在上图片中,“黑色0.1秒”就发生在guest domain从Hypervisor Page Flipping中读取package data。

  通过这次分析,我们觉得问题可能发生在guest domain从remap过来的内存页中读取数据时。在这个读的过程中,不仅涉及内存,还要涉及CPU——CPU执行的指令情况,CPU的缓存,CPU与内存之间的距离。这是一个更复杂的问题,目前我们没有足够的知识,也没有足够的参考资料进行分析。只能把问题留在这里,期待有经验的朋友提供线索。

转载于:https://www.cnblogs.com/cmt/p/3723551.html

云计算之路-阿里云上:基于Xen的IO模型进一步分析“黑色0.1秒”问题相关推荐

  1. 云计算之路-阿里云上:从ASP.NET线程角度对“黑色30秒”问题的全新分析

    在这篇博文中,我们抛开对阿里云的怀疑,完全从ASP.NET的角度进行分析,看能不能找到针对问题现象的更合理的解释. "黑色30秒"问题现象的主要特征是:排队的请求(Requests ...

  2. 云计算之路-阿里云上:超级奇怪的“黑色10秒钟”

    自从5月24日发布博文(云计算之路-阿里云上:两个重要突破)之后,情况有了明显改善.但是我们不但没有丝毫的放松,反而变得更加艰苦.我们被一个非常非常奇怪的问题所困扰,这段时间我们与阿里云一起在努力与之 ...

  3. 云计算之路-阿里云上-幸福总是很突然:“黑色1秒”问题解决啦

    云计算之路-阿里云上-幸福总是很突然:"黑色1秒"问题解决啦 参考文章: (1)云计算之路-阿里云上-幸福总是很突然:"黑色1秒"问题解决啦 (2)https: ...

  4. 云计算之路-阿里云上:4000IOPS的RDS+16核CPU的负载均衡

    继续向大家汇报,上周在阿里云的帮助下我们重点解决的是以下两个问题: 1. 在专门跑博客站点的负载均衡中,如果单台云服务器处理的并发请求高(比如超过200 Get Requests/s),CPU有时会出 ...

  5. 云计算之路-阿里云上:愚人节被阿里云OCS愚

    2019独角兽企业重金招聘Python工程师标准>>> 今天是愚人节,而我们却被阿里云OCS愚,很多地方的缓存一直不过期,造成很多页面中的数据一直不更新.这篇博文将向您分享我们这两天 ...

  6. 云计算之路-阿里云上:在乌云中坚信蓝天

    继续向大家汇报阿里云上的天气变化情况.今天(5月8日)上午糟糕的天气(8:30~9:50,10:50~11:40)给大家逛园带来了很大的麻烦,请谅解! 早上8:30左右由于阿里云RDS出现突发故障(故 ...

  7. 云计算之路-阿里云上:2013年4月7日14:15~18:35服务器故障经过

    无地自容的道歉之后,向大家汇报一下故障的整个经过.在此再次向大家表示歉意,望大家能谅解! 14:15,有园友在闪存上说博客后台不能发布博文(见下图). 14:17左右,我们看到了这条闪存.立即进入博客 ...

  8. 云计算之路-阿里云上:一场暴风雨的袭击

    2013年6月13日晚10点左右,一场暴风雨(突发的非正常流量)突袭园子,造成满园尽是500. 这次风暴给大家带来了麻烦,恳请大家的谅解!在这篇博文中,我们向大家汇报一下暴风雨的袭击过程. 当发现问题 ...

  9. 云计算之路-阿里云上:数据库连接数过万的真相,从阿里云RDS到微软.NET Core

    在昨天的博文中,我们坚持认为数据库连接数过万是阿里云RDS的问题,但后来阿里云提供了当时的数据库连接情况,让我们动摇了自己的想法. 帐户 连接数 A 4077 B 3995 C 741 D 698 E ...

最新文章

  1. api 创建zookeeper客户端_zookeeper分布式锁原理及实现
  2. 新冠疫苗生产靠AI?看强生、普华永道玩转AI的秘密
  3. 删除web文本框中的内容需要或者文本框失去焦点,点击“Backspace”键时页面回退,屏蔽页面回退键的方法
  4. Linux 之父家断电六天:内核更新延期;华为 EMUI 11 用户突破1亿;美国得州最大电力公司申请破产 | 极客头条...
  5. 简单使用hibernate(idea中使用)
  6. docker privileged作用_docker容器性能监控cAdvisor+influxDB+grafana监控系统安装部署
  7. 苹果手机各种型号图片_iphone全部机型图片
  8. GB28181协议之语音对讲
  9. 如何使用Git SVN工具 -- TortoiseGit(小乌龟)将本地项目上传至GitEE?【超详细教程】
  10. 各种计算机控制系统特点小结
  11. 探索式测试之隐喻(篮球)
  12. 为什么下载eclipse很慢很慢
  13. jQuery 效果 - stop() 方法
  14. 台式电脑一般价钱多少_一般普通台式电脑价格多少为好?
  15. 3分钟教会你解决SVN文件夹没有绿勾和红色感叹号的问题
  16. 软件测试助理利弊,女生做软件测试的利弊都有什么?
  17. 在学习JAVA过程中,你遇到的最大的困难是什么?
  18. 黑马头条登录到个人中心页面
  19. 重生之我是赏金猎人-漏洞挖掘(十一)-某SRC储存XSS多次BypassWAF挖掘
  20. quartus频率计 时钟设置_频率计的使用说明

热门文章

  1. js mztreeview 双击事件_Mac下的Node.js安装教程
  2. linux adb 端口,linux 无法连接adb 设备
  3. mvc 事务层切换数据源_Mvc 与 Flux 与 Redux的一些思考
  4. pat 乙级 1018 锤子剪刀布(C++)
  5. 【渝粤教育】国家开放大学2019年春季 2110行政法与行政诉讼法 参考试题
  6. [渝粤教育] 中国矿业大学 恋爱心理学 参考 资料
  7. 【渝粤教育】广东开放大学 商务英语听说 形成性考核 (37)
  8. 【渝粤题库】国家开放大学2021春2096经济法学题目
  9. SI4432射频芯片方案物联网无线通信模块数传的典型应用
  10. 高低温湿热试验箱使用的注意事项