我:我们有两台机,都是一样的 xeon E5620 2.4G 的CPU,但是,跑算Pi的程序,5000个迭代,一个机器跑48秒,另一个只需要32秒
coly:CPU核数一样吗?
我:一样的。不一样应该没关系,我这是单进程。
coly:内存速度不一样?
我:就一个算Pi,总共就占8MB内存,还没有CPU的L3 cache大呢
coly:要不这样,你写个死循环加法,我们看看两边的速度是不是一样
(公司的盒饭送来了,晚饭时间)
coly:你先吃,我来写吧....一个死循环我应该还是能写出来的....你要review我的代码哟~
我:....
(coly把代码写出来了
int main(void)
{
int a=0;
while ( a < 0) {
a++;
}
return 0;
}
)
coly:为什么我运行瞬间就结束了?
我:应该是编译器把你的死循环优化掉了,因为a这个变量在整个main函数里都没有被其它地方使用
coly: 喔~~,我改改,在结尾加个printf把a打出来
(程序一运行还是瞬间结束)
陈同学:(看了看代码)是不是加法太快了,看不出来?咱们加几个嵌套循环
coly:好~
(程序还是瞬间结束)
coly:怪了....靠,a的值是0啊,根本进不了循环!
我,陈同学齐声:喔~~~
coly:你们两个!怎么review代码的!
后记:
死循环程序写出来了,两台机器CPU的计算速度确实有差异,原因最后由柯旻同学揭示:
跟华为2285机器的cpu 频率控制有关
CPU不开启cpuspeed就是1.6G的主频,需要
/sbin/modprobe acpi-cpufreq
echo ondemand |sudo tee /sys/devices/system/cpu/cpu13/cpufreq/scaling_governor
后,主频才上到真正的2.4G
这是在公司做简单介绍的PPT,只是推广性的梗概,欲知实现细节的看这里 http://lwn.net/Articles/441343/
Ext4 new feature - bigalloc
View more presentations from donghao.
去年冬天的时候,我去附近的医院看病。医生给开了500多块的药,就为了治一个小小的咳嗽。
上个月又有一点咳嗽。正巧团队活动,出去吃了一顿金钱豹(自助餐)。晚上回到家。
我:我感觉咳嗽好多了
爸:好像是,你进门这么久了,一声也没咳
我:看来吃金钱豹可以治咳嗽咧
老婆:呵呵,200块治一个咳嗽,嗯,比医院还是便宜多了
一年一度的读书回顾时间又到了,今年读书数量创新低,因为我愈发觉得生活中有很多东西比读书重要得多,比如陪家人聊聊天,比如出去走走呼吸呼吸pm2.5的空气,比如看看kernel代码,比如加班查查bug....呵呵,开个玩笑
个人觉得:
最回肠荡气的 —— 《静静的顿河》
整整四本,我三个月才细细看完
草原的哥萨克们,经历了世界大战,经历了内战,终于厌倦了同胞相残的可怕日子,于是扔掉枪扔掉子弹,回到家,认命似的接受了统治。原文”反正谁统治都一样”,“谁统治都比打仗好“。
做为一部前苏联三十年代的热门小说,我真的很奇怪这么一部反战名著,这么一部相对写实(当然,写实性不能跟《古拉格群岛》相比,但比《钢铁是怎样炼成的》要真实多了),这么一部连当时苏联红军抢哥萨克农民粮食都敢写的小说,是怎么在那个高压的年代出版并风行的?还获得了“斯大林文学奖”?
奇迹,只能说是奇迹
最精彩最吸引我的 —— 《三体》系列
第一部很有悬念,但人物塑造偏单薄;第二部人物饱满多了,主角不再是作者以前爱写的那种“高大全”的英雄形象,变得更加真实更加细腻;第三部,以我这点水平,无法再多说,一句话——绝了!
最盛名难符的 —— 《卢比孔河》
梁文道先生推荐汤姆.霍兰的历史小说,于是我就借了这本书看,看完才发觉简直是流水帐,没有任何人物描写和历史分析,只有走马观花和泛泛而谈,既不深入也不精彩,它是怎么在豆瓣上获得8.6分的?与此相比,我在kindle上看的电子书《罗马英雄传--西庇阿》,《汉尼拔的军事生涯》要比它精彩得多
几个月前朱照远同学向我提过一个epoll的疑似bug:
1. 创建一个socket(sfd)并connect到某个server
2. 创建 epoll_create(efd)
3. 将socket的描述符sfd加入efd, 采用ET模式
4. 调用epoll_wait将返回一个EPOLLOUT事件(因为连接成功了)
以上是正常的,但是,此时如果从server来了一个消息, epoll_wait将会返回一个event,这个event包含了EPOLLIN和EPOLLOUT
“照理说”,既然采用了ET模式,EPOLLOUT上次已经出现了,不应该再出现,但是它被EPOLLIN事件给“带出来”了
这看上去似乎像个问题,但似乎也可以理解为epoll的一个特性,所以,保险起见,我发了个邮件给 linux-api 和 linux-netdev 说明了一下这个事儿,希望能得到权威回答。
不久就有两位回邮件了,其中一位是 Eric Dumazet(从git log里看,他提交了很多kernel network方面的patch,应该是很有发言权的),说得很明白:
"Its not true. Same "status" can be delivered several time.
Think about Edge and Level trigger. An event (change of status) is the
trigger.
As soon as on trigger is done, epoll delivers a status.
And your file status is indeed EPOLLOUT | EPOLLIN, since you can read or
write on it.
....
Not a bug, but a misinterpretation of what is an event and what is a
status."
看来正确的理解是:ET模式只保证在边缘条件出现时(上面的例子是从不可读变为可读)从epoll_wait里返回,但不保证fd的event里只有“从不可读变为可读”带来的EPOLLIN。毕竟epoll_wait返回的event是指fd的“状态”,既然这个fd可写可读,那么包含EPOLLIN和EPOLLOUT就不能被认为是有错。
原文:http://kernel.taobao.org/index.php/Documents/kernel_team_internship
淘宝内核组是一只非常年轻的队伍,我们作为开源社区和淘宝的桥梁,一方面基于淘宝的工作负载来改进Linux内核的性能和质量,另一方面也将开源社区的新想法引入到淘宝的操作系统运行环境中。我们在不断改进Linux在淘宝成千上万台服务器上运行的性能和稳定性的同时,也持续努力将我们的工作反馈回开源社区。
关于淘宝内核组的简单情况介绍,可以在这个wiki页面看到:http://kernel.taobao.org
对于我们在内核社区的一些还很初级的工作,在这个wiki页面有一些简单的数字:http://kernel.taobao.org/index.php/Documents/kernel_development_at_taobao
我们和国内、国际的同行一直有紧密的合作,同时我们的工作内容对开源社区也非常开放。在这个小团队工作,可以同我们一起体验如何从线上运行的上万台服务器的实际运行数据中寻找可以改进Linux内核的想法,然后付诸实践并通过实际运行数据来验证自己的工作效果,并最终将代码反馈回内核社区的这个过程。
如果你是在校的学生,对系统软件开发有一些了解,而且有热情投入到Linux内核开发的社区中来,也许你可以考虑加入到淘宝内核组这个小团体中来进行实习工作。我们是非常年轻的团队,但是我们是勤奋、认真和努力的一小撮人。
实习的工作地点在杭州或者北京的办公室,根据大家的意向而定;工作时间要求不短于3个月,每周不少于3天。我们的实习工资很平常,够路费和伙食费。只是希望在这里做过实习工作的同学以后回忆起这段经历会依然感觉很开心。
欢迎有兴趣的同学发邮件到 bosong.ly 在 taobao 点 com ,希望我们能够有缘分在一起度过一段值得回忆的时光。
bosong.ly注:
我们这个团队成立也就不过1年多,很多人都是刚刚起步的新手,我们做的工作,相比行业内的同行来说,从深入、广度和价值上而言,也都非常初级。所以确实是一群小朋友 ^_^
正是因为大家的爱护、支持和鼓励,才让我们工作的更开心,更享受。


























