云计算之路-阿里云上:Linux内核bug引起的“黑色10秒钟”

转载 2015年07月09日 14:49:45

http://www.cnblogs.com/cmt/archive/2013/06/02/3113762.html

一图胜千言,先看下图中Linux 3.2.0-39.62的Changelog:

截图来自:https://launchpad.net/ubuntu/+source/linux/3.2.0-39.62

Linux 3.2.0-39.62发布时间:2013年2月27日(我们是3月9日迁入阿里云的)

我们遭遇的“黑色10秒钟”问题详见:云计算之路-阿里云上:超级奇怪的“黑色10秒钟”

本来准备硬啃内核代码证明是Xen的问题引起的“黑色10秒钟”,现在不用了。这是Linux内核中Xen paravirtualization spinlock实现的一个bug,Linux 3.2.0-39.62已经修复了这个bug。

我们是在一篇一篇阅读这个帖子(Kernel lockup running 3.0.0 and 3.2.0 on multiple EC2 instance types)的回复时找到答案的。

这个帖子中描述的问题现象与我们遇到的惊人的相似(连回复中提到的虚拟机跳时钟的问题我们也遇到过)。帖子是Amazon的工程师在2012年6月11日发现并提交的,通过Amazon工程师与Canonical工程师在回帖中的对话,可以看到老外对待问题的态度。正是他们对问题的执着才最终让Linux的这个bug得到了修复。

有些朋友质疑我们不务正业,浪费时间研究阿里云的东西。

我们的想法是:

首先,阿里云用的是Linux+Xen,这是开源社区的东西,不是阿里云的东西;

其次,我们团队只有一个人投入精力在阿里云的事情上,没有影响正业;

最重要的是,阿里云上有很多很多用户,我们遇到了这样的问题如果不去找出真正的原因,其他用户可能也会经历和我们一样的非常痛苦的折腾。这种折磨人的感觉真是刻骨铭心,我们不想让任何人再经历一次了。这就是我们坚守的最重要的原因!

关于这个bug的关键内容摘录

1. #65楼:From my tests it seems that the problem in the Xen paravirt spinlock implementation is the fact that they re-enable interrupts (xen upcall event channel for that vcpu) during the hypercall to poll for the spinlock irq.

2. 当时对spinlock.c中的xen_spin_lock_slow()部分的代码修改解决了问题:https://launchpadlibrarian.net/124276305/0001-xen-pv-spinlock-Never-enable-interrupts-in-xen_spin_.patch

3. #79楼:After finally having a breakthrough in understanding the source of the lockup and further discussions upstream, the proper turns out to be to change the way waiters are woken when a spinlock gets freed.

4. #86楼:There is currently a Precise kernel in proposed that will contain the first approach on fixing this (which is not to enable interrupts during the hv call). This should get replaced by the upstream fix (which is to wake up all spinners and not only the first found).

bug发生过程分析

来自Patchwork [25/58] xen: Send spinlock IPI to all waiters:

1. CPU n tries to schedule task x away and goes into a slow wait for the runq lock of CPU n-# (must be one with a lower number).

2. CPU n-#, while processing softirqs, tries to balance domains and goes into a slow wait for its own runq lock (for updating some records). Since this is a spin_lock_irqsave in softirq context, interrupts will be re-enabled for the duration of the poll_irq hypercall used by Xen.

3. Before the runq lock of CPU n-# is unlocked, CPU n-1 receives an interrupt (e.g. endio) and when processing the interrupt, tries to wake up task x. But that is in schedule and still on_cpu, so try_to_wake_up goes into a tight loop.

4. The runq lock of CPU n-# gets unlocked, but the message only gets sent to the first waiter, which is CPU n-# and that is busily stuck.

5. CPU n-# never returns from the nested interruption to take and release the lock because the scheduler uses a busy wait. And CPU n never finishes the task migration because the unlock notification only went to CPU n-#.

相关链接

Strange PVM spinlock case revisited


云计算之路-阿里云上

云计算之路-阿里云上:“黑色30秒”走了,“黑色1秒”来了,真相也许大白了 云上真是无奇不有,这两天我们什么也没动,“黑色30秒”招呼不打一声就走了,而来了一位不速之客——“黑色1秒”;就...
  • uo860
  • uo860
  • 2014年05月08日 17:14
  • 108

阿里云云计算助理工程师认证

阿里云云计算助理工程师认证(ACA) 
Alibaba Cloud Certified Associate - Cloud Computing 阿里云基础认证(ACA - Alibaba Clo...
  • lsj960922
  • lsj960922
  • 2017年11月29日 14:17
  • 340

Linux内核bug分析

ps:非常好的文章,学习分析方法 Linux Kernel BUG:soft lockup CPU#1 stuck分析 1.线上内核bug日志 kernel: Deltaway to...
  • laoqiuge
  • laoqiuge
  • 2017年09月29日 10:15
  • 427

云计算之路-阿里云上:对“黑色n秒”问题的最终猜想——CPU C-states引起的

如果说2013年云计算之路的主题是“踩坑”,那么2014年我们希望云计算之路的主题变成“填坑”——当然填坑是阿里云来完成的,我们只是见证曾经的坑坑洼洼...
  • u013634862
  • u013634862
  • 2014年05月24日 09:01
  • 962

【Cherry云计算】ACF - 阿里云认证考试

为了督促自己好好学习云计算相关知识,也为了有一个大纲能够系统梳理,我决定参加一个云计算相关的认证考试。这领域的权威认证无外乎亚马逊和阿里云两家,经过多方对比,我认为阿里云认证性价比更高,各种论坛资源更...
  • liulisishui
  • liulisishui
  • 2016年09月26日 14:59
  • 2676

你应该知道的云计算行业最专业的教材

一方面是工科毕业生的人数居世界第一,另一方面人才缺口仍然很大。这一鸿沟正在由产业界和教育界联手弥补。 6月9日,中国高等教育学会与阿里云联合表示,为响应教育部“新工科”建设号召,云计算-大数据-云安...
  • qq_36510261
  • qq_36510261
  • 2017年09月21日 14:51
  • 1333

阿里云大学考试认证

阿里云针对不同产品类别、用户行业、用户成长阶段,精心打造不同的认证考试。更有丰富的阿里云专业课程辅导您进行认证。 权威专业的认证职场发展的机遇技术能力的证明认证专享的特权...
  • lsj960922
  • lsj960922
  • 2017年11月28日 14:43
  • 183

云计算时代,大数据存储与备份势在必行

随着互联网信息技术的发展,如今的社会和人际圈已然成为一个信息化的圈子,而基于这些信息和技术所建立起来的信息系统正改变着人们的工作和生活方式,至今,大数据已经逐渐开始形成。 一、大数据存储备份 ...
  • qq_36510261
  • qq_36510261
  • 2018年01月22日 15:37
  • 61

Android线上bug热修复分析

针对app线上修复技术,目前有好几种解决方案,开源界往往一个方案会有好几种实现。重复的实现会有造轮子之嫌,但分析解决方案在技术上的探索和衍变,这轮子还是值得去推动的 关于Hot Fix技术Hot Fi...
  • u012963909
  • u012963909
  • 2016年04月20日 21:50
  • 1762

阿里云 2016 实习生一、二面

前两周分别接到了阿里云两轮电话面试,总结记录一下。一面接到电话,第一件事一般都是介绍一下自己。我一般都会说,熟悉常用的 Linux 编程 API,熟悉 TPC/IP 协议,有一定python web...
  • u012675539
  • u012675539
  • 2016年03月21日 21:07
  • 783
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:云计算之路-阿里云上:Linux内核bug引起的“黑色10秒钟”
举报原因:
原因补充:

(最多只允许输入30个字)