内核oom过程简单分析

以内核3.10.79为例。这里分析一下内核对于cgroup.memory进程组oom的过程,以及混部环境下需要什么样的oom策略。

触发时机

内核对于每个memory cgroup维护一个计数器,统计当前cgroup内已经使用了的内存。每当cgroup内进程创建页面时,页面大小所占用的内存就会通过res_counter_charge_locked()函数计入计数器里。而当内存占用超过memory.limit_in_bytes所设置的阈值时,charge失败,返回ENOMEN错误。

int res_counter_charge_locked(
struct res_counter *counter, unsigned long val, bool force)
{
        int ret = 0;
        if (counter->usage + val > counter->limit) {
                counter->failcnt++;
                ret = -ENOMEM;
                if (!force)
                        return ret;
        }
        counter->usage += val;
        if (counter->usage > counter->max_usage)
                counter->max_usage = counter->usage;
        return ret;
}

另外有一个问题需要注意的是,内存这个子系统是拓扑型控制的,不是平级控制的。下一级子系统的所有limit_in_bytes之和不能超过父亲的limit_in_bytes值,否则会设置失败。

所以内存计数的时候:

  1. 进程新创建的页面,会被反向递归计入到所有的父cgroup下面。
  2. memory子系统的根的计数一定是当前内核所有进程的内存使用之和。(注意,由于cgroup.memory对内存的统计和proc文件系统的统计方法不一致,所以这两个系统对于内存使用的值并不是完全对等的)

子cgroup也许内存配额有冗余,但父cgroup不一定会有冗余,所以在反向递归计数的时候,谁内存超过阈值了,就oom谁(选择这个cgroup下的某个进程kill掉,所以这里是有可能某个cgroup明明内存没有被超限但也会被莫名的干掉了)。


libprocess 并发编程

libprocess是mesos中非常重要的一个基础库,提供一些很方便的helper函数以及并发编程所需要的基本原语,例如下面我将重点讲的future/promise。

为了更好的解释future/promise是什么,我抽取了一段mesos中的代码作为例子:

Future<Socket> PollSocketImpl::accept()
{
  return io::poll(get(), io::READ)
    .then(lambda::bind(&internal::accept, get()));
}

这个函数的基本作用是:使用io::poll()注册io::READ事件,并且当事件ready的时候,调用internal::accept()。

显然,这是一个异步的accept()方法。


Borg: google 集群管理操作系统

1. Introduction

google服务器集群的管理系统,类似于百度的Matrix,阿里的fuxi,腾讯的台风平台等等,还有开源的mesos

Borg provides three main benefits: it

  1. hides the details of resource management and failure handling so its users can focus on application development instead;
  2. operates with very high reliability and availability, and supports applications that do the same; and
  3. lets us run workloads across tens of thousands of machines effectively.

大规模分布式系统的设计和部署实践

论文 http://mvdirona.com/jrh/talksAndPapers/JamesRH_Lisa.pdf

这篇论文主要从面向运维友好的角度,思考了大规模分布式系统的设计和部署相关的一些原则和最佳实践。

总体设计原则

We have long believed that 80% of operations issues originate in design and development, so this section on overall service design is the largest and most important.

When systems fail, there is a natural tendency to look first to operations since that is where the problem actually took place. Most operations issues, however, either have their genesis in design and development or are best solved there.

对服务整体设计影响最大的一些运维友好的基本原则如下:

  1. Keep things simple and robust
  2. Design for failure

外遇

昨天,为了准备见习的事,来到了北亭

因为听说北亭有个小学,所以来看看,结果发现是有个牌坊写着北亭小学,但实际上已经拆了

随便走走,看到有个北亭公园,好奇地走了进去。那是一个不大的院子,载了几棵树,各类的草类植物。在一棵古树旁,一个小女孩在拔着树的须经,然后放进红色的塑料袋里,很是认真。

我颇有兴致地走过去,问一下北亭小学的情况,她告诉我,没有北亭小学,她是在穗石小学读的。我还问了她一些问题,她回答得不是很流利,可能面对陌生人还是有点不适应吧。但我很喜欢她,一个朴实的可爱的农村小女孩,言语动作中透露出异样的气质。


放牛班的春天

他的生命,不只是音乐,还是教学,就像他说的“我没有孩子,又或者可以说我有60个孩子”,孩子们给了他事业的阳光,他却给了孩子们人生的天堂

你的生命中会不会出现这样一位老师,他看起来很呆,但他十分睿智

他内心畏惧过,但他似乎毫无畏惧

他对孩子们很好,但它并不是平易近人的感觉

他冷冷的,就连他的幽默也是冷冷的,他从未开怀大笑过,不论是孩子们的进步还是他自己的成功,这也许归咎于他曾经的失败

就这样,即使他不帅,即使他秃头又有啤酒肚,他依然有着无人能比的魅力,这不只存在于孩子们的心中


我们的爱情

漫漫大学时光,匆忙中已不知不觉走了半程,在这个城市的任何一个角落,环顾四周,随处可见那些相互依偎的身影。

但是你或许注意不到这样一群人,他们会一个人忙碌在自身的事情上,他们只是偶尔和朋友相约,他们比你更依赖电脑和电话,他们会突然微笑或者独处忧伤。他们一个人,却过着完整的生活。

如果你们在一个班,你们可以一起自习,一起上下课,一起记笔记,分开一秒也无所谓,因为还有下一秒在等着你们。

如果你们在一个学校,你们可以一起去图书馆,一起去食堂,一起看看星星、赏赏月亮,一天不见至少还有明天,甚至可以一起毕业。


撞车

这是一部多元探究人类的心里与情绪反映的细腻之作。

故事透过地方检察官一家,经营商店的波斯商人,墨西哥锁匠,两个劫车混混,一个菜鸟警官与中年韩籍夫妇……

等等这样的角色,在短短36个小时间

经由间接,直接,甚至是不经意的互动,呈现出人们在不同时间与场景之中的情绪反映,以及这些情绪反映的联动关系对人们的命运、态度与观点所产生的影响


土豆的体重

体重一直是土豆的心头之痛,好不容易才忘记这个疙瘩,但前晚与蚊子一起跑内环,闲聊中听到蚊仔爱死不死的提到体重这东西,又勾起了土豆的伤心回忆!

照理说,这样的海拔配这样的重量也还在医学专家所说的“正常范围”内,应该是没什么大问题的。可仔细想想,体重这东西困扰我那么久了,还是值得探讨一下下!

自打小学起,我的座位就很少离开过前三排,其中坐第一排的次数还不少,也因此为自己如此短小精悍的身材而沾沾自喜了好长一段时间!

随着年龄的增长,体重亦在一点点的缓慢增加着,甚谓艰难!直至上高中,一次常规体检之后,看见自己体重一栏赫然写着“49.5Kg”。医师的草书颇有龙飞凤舞的气势,却仍然逃不过我的火眼金睛!这个数字着实让我欣喜了一把,自此掰着手指头过日子,满脑子认为“破百”指日可待!来年再测,48Kg,立时打回原形!伤心之余不禁疑惑,当年那个草书医师何以能凭着那堆烂铁测出一个“49.5”的数据来?

高考前的身体检查着实又让我郁闷了好一阵子!


回家

这些天,包车回家的信息和电话不断涌来,买车票回家成了同学们谈论的热门话题,到处被炒得沸沸扬扬。我的心微微地颤动,恰如秋风秋雨愁煞人,在游子的心中留下深深的一触。

自从住校以来,便与父母分隔两地,我在这一头,父母在那一头。从此以后,小小的车票牵扯着两地离人的心,凝结着浓浓的思念。

每逢放假,心情是复杂的。正如一句俗话所说“近乡情更怯”,一方面,我会为即将见到熟悉的亲人的脸庞而欢喜;另一方面,心里莫名地生出怯意,道不明这种情愫。每次回家的前几天,睡觉时便辗转难眠,心情无法平伏,一如春风缭乱了恬静的松林,银银的雨丝拨动平静的湖面。