作者文章: Fenng

NUMA 架构与数据库性能

在这次的 Oracle Open World 上,Hammerora 的作者 Steve Shaw 做了一个关于 Linux 平台 Oracle 调优的演讲,其中重点提到了 NUMA 架构对于 Intel Nehalem CPU 上跑 Oracle 的性能影响。

对于传统 SMP 来说,CPU 增多未必系统性能就好,因为共享系统总线的限制了 CPU 数量,CPU 越多内部通信量越大共享总线越容易达到瓶颈。而 NUMA 架构则多少缓解了这个扩展问题,其大致机理是通过给每个核提供单独的本地内存,进而提高可扩展性。而每个核访问本地内存和其它核上的内存时间是不一样的,所以,应用程度对于内存的访问是有比较大的讲究的。从硬件到操作系统再到应用程序,都要支持 NUMA 才会发挥真正的处理能力。

在这里倒是可以插入介绍一下阿姆达尔定律(Amdahl’s Law),这个定律指出并行处理器环境中的速度受制于程序串行的部分,也即暗示说多核未必性能就那么好。

Intel Nehalem microarchitecture

Image via Wikipedia

对一个 DBA 来说,Intel 的 Nehalem CPU (右图为结构示意图)最值得关注的特性当属 NUMA (Non-Uniform Memory Access) 架构方面的改进。

从 Oracle 数据库 8i 开始支持 NUMA 特性,NUMA 在10.2.0.4 与 11.1 上是默认启用的,不过在之前的版本以及 11.2 之后默认是关闭该特性的。在 Intel 平台上,Oracle Validated RPM 包安装后将激活 NUMA。安装的时候,当 Oracle 检测到硬件与操作系统支持 NUMA 的时候,会自动启用 NUMA 支持,Linux 在内核 2.6.9-67 以后自动支持 NUMA 。至于硬件上的开关是通过 BIOS ,如果硬件支持,则 BIOS 默认是激活(enable)该特性的。操作系统层面的开启可以通过核心参数添加 numa=off 的方式来达到。

可以通过操作系统命令查看相关的状态:

# numactl --show

NUMA 这个常看到的术语,似乎一直以来没有得到 DBA 们足够的重视。需要注意的是,硬件、操作系统、应用软件(Oracle) 三者都要支持 NUMA ,才能充分利用这一特性。对于支持 NUMA 的 DB 环境,理论上来说内存请求的利用应该会更有效一些。至于具体的性能数据还要看实测结果,暂时恐怕难以给出,留待以后补充吧。必须要说的是,作为DBA,在启用某个特性的时候,一定要明白这个特性的来龙去脉,以及潜在的影响。

延伸阅读资料

EOF

对于一些不能充分利用多核的软件,比如某些 Web 服务器或者 Proxy,或者需要考虑一下如何利用 NUMA 特性了。而类似跑数据统计的应用,”CPU的并行”得到利用之后或许应该考虑如何更充分利用 NUMA 特性了。

4130467396_b00ea856b8.jpg

Google 使用 Linux 的情况

Google, Inc.

Image via Wikipedia

技术爱好者大多都知道 Google 是使用 Linux 的大户,但是一直以来对于他们如何使用 Linux 却知之甚少,甚至内核开发社区对 Google 内部使用的情况也了解不多。LWN 上的这篇 How Google uses Linux 给我们带来了不少信息。

Google 使用 Linux 肯定有很多令人震惊的地方,第一个令人”惊讶”的是他们使用的代码管理工具:Perforce 。代码维护方式看起来也比较落后,当前维护的代码版本远远落后于开源社区内核版本,因为 Google 自己要维护大量的内部特性,每一个大版本发布周期是大约 18 个月,而内部特性的回归也要折腾6个月。因为版本滞后,所以有不少向后移植(Backporting)的工作要做,这个比例大约是 25%,还是不小的。

Google 内部大约有 30 个内核开发人员,而之所以外界很少看到 Google 对 Linux 的 Patch 代码,主要的原因居然是–担心代码不够优雅。我想这应该说的是大实话。我也遇到过很好的开发者对开源软件做了改进之后不愿意把代码贴出来,原因就是担心代码不好看,怕被笑话。

因为应用程序类型之故,对于 Google 来说,完全公平调度器(Completely Fair Scheduler)并不适合,采用了 O(1) 调度器,一般 16-32 核的机器要跑 5000 个线程左右。

Google 倒是喜欢用 Out-of-memory (OOM) killer 特性,这倒是出乎我的意料。Google 对于内存管理方面的改进或许是不小的突破: 通过伪 NUMA 模式来保证不同类型应用对内存的使用。除此之外,有大量的代码用于系统的监控,针对磁盘、网络等子系统或者是针对应用程序性能。

对于计划中的将实现的新特性,在一堆列表中看到了在 I/O 层对于高速 Flash 盘的支持计划。在文末,另一个有趣的技巧是,Google 喜欢把文件系统的元数据 Pin 到内存里以便提高读取响应时间。

或许将来能看到 Google 为 Linux 内核贡献更多代码,那会是一件很有意义的事情。

EOF

腾讯凶猛?

本月20号去哈尔滨的飞机上,反复把《中国企业家》杂志的这篇封面文章《腾讯:鲜为人知的”水”凶猛》看了几遍。其中不少细节还是比较有趣的。

关于腾讯的创新点

文章中提及,”QQ邮箱在2008年的400多个创新点中,有近300项是由马化腾本人发现和提出”,也就是说腾讯的创新研究团队加起来也就是100项左右的创新点? 是否可以这样理解:产品部门和 CDC 乃至什么数据挖掘的团队其实也就是算给老板收集材料的,信息归集到马本人这里然后自顶向下发动所谓的创新 ? 在近年来标榜创新的腾讯,这不是什么值得夸耀的成绩。

用户体验,快速迭代

这是马化腾做产品的的金科玉律。一般而言,跟随者或是模仿者如果节奏赶不上领先者,谈超越只能是妄想。而腾讯在产品的研发上,节奏的确是不错。其它分析腾讯的人往往容易忽略这一点。很多人诟病初期发展阶段的模仿策略,现在已非吴下阿蒙。

能够快速迭代的一个前提是产品初期必须简单,腾讯邮件产品的发展恰恰是这样。以大而全的功能为目标反而解决不了用户的核心需求,技术上也没办法做到快节奏的改进。

如果对比马化腾以前的关于产品的讲座笔记,事实上会发现他并没有什么神奇的手段,但是神奇的是他能把这些原则坚持下去,而这是所有竞争对手都做不到的地方。《倚天屠龙记》里面张三丰当着一众武林高手的面教张无忌太极剑,也是这样的道理。学到神似,不得精髓是没有用的。

数据挖掘是重武器?

胡说八道。这是把一些常识神化的结果。目前没有哪家把数据挖掘做到那么神通,更多时候不过是用数据来验证某些想法而已,但这不能用以证明很多正确的决策是数据挖掘触发的,数据挖掘起到的作用仅仅是佐证而已。事实上,从报道中,我们没看到数据挖掘到底给腾讯什么样的神奇之力。另外,从文章的报道上来看,受访人是把腾讯几个团队干的活都放到一个”数据挖掘”上了。

很多时候,记者希望找到一个公司更为神秘的地方,所谓的”重武器”,以显得报道更加有料,这篇报道多少有点这样的意思。

当然,文章怎么写是一回事,腾讯技术储备上比较可怕,那是真的。

EOF

旧金山见闻:”欢迎”奥巴马

书接前文,观光巴士到站之后,发现联合广场周边情况不对劲,圣法兰西酒店(WESTIN ST FRANCIS) 门口站了不少警察,而街对面也就是广场边上则聚集着不少举着牌子的示威者。莫非有什么大人物要来?

VictoriaSEcret.jpg

我和同事开玩笑,施瓦辛格应该都走了,看这阵势不是欢迎什么电影明星的,不会是奥巴马要来吧? 不知道到底这是”迎接”谁,走到酒店旁边的十字路口,从围观的一位老者口中得知,还真是奥巴马。当时,我俩就有点激动了,准备好好看看热闹。一个过激的抗议者被捕,我过去拍了一张照片,冲这个哥们竖起大拇指。

protestor.jpg

还有医生现身抗议,穿着白大褂吸引了采访的电视台的注意:

protestor_Doctor.jpg
也有这样来填堵的人:
protestor_Happy.jpg

在周围的商店逛了一会儿,发现抗议者越来越多,少数交警在维持交通秩序,话说美国也不说整几个城管啥的出来清清场什么的,而且总统出行,也不说搞点交通管制啥的? 要在我们这块儿,即使是个省长驾到也早封路了。

protestor_5.jpg

电影看多了,好奇抬头开始找周围几个高建筑的制高点,看看有没有什么狙击手,一无所获,倍感失望。

protestor_4.jpg

叮当车、自行车、行人各走各的,路过的不明真相群众尽管探头探脑比较好奇,但也不停下来围观。几个警察开始搭建建议围栏,避免抗议者冲到大街上。

protestor_6.jpg

和一个记者聊了几句,发现美国人也是习以为常,”谁当总统都会被抗议”,以前小布什的时候估计主题是”反战”,这次抗议主要是针对奥巴马的医疗改革政策,也有少数是针对 911 和其它话题。医疗保险在美国是个大事儿,哪怕对 1% 的人不利那也是一种灾难,但哪有十全十美的方案呢? 这时,记者接到到一个电话,说 15 分钟后就来了,于是我们满怀期待。可是等了 15 分钟又 15 分钟,也不见奥巴马踪影。

从这位女士的眼神里看到的只是对奥巴马的期待,这可能也是现场多数人的内心体现:

waiting.jpg

站着还真是累,考虑到还要买点东西,就先撤了。更多的人还在那边喊口号,或是举着牌子,或是看热闹。到了晚上,附近的几条街开始封锁,防爆车什么的也出动了,当然也不是不让你过,只是要等一会儿才放行一下。多少算是有点不便,民众倒也基本表示理解,没有无理取闹的。尽管封锁街道也有点扰民,不过相比某些政府的做法来说,也算不错的了。对我个人的影响是乘坐的出租车多绕了两条街,多花了 3 美元。

protestor_7.jpg

事后获悉奥巴马旧金山一行是为了筹款,当个美国总统不容易。

EOF