Tag Archives: Linux

操作系统的迷思

你说这要一个多么不稳定的操作系统才会整天通知用户注意系统稳定性并且要花钱维稳呢? 百思不得其解…

一个操作系统越是封闭,越是想从最终用户身上压榨捞钱,就会常常的搞出很多消耗系统资源的垃圾软件或是病毒,系统也会变得极其不稳定,慢慢的就会被更加开放的开源操作系统所取代。

且说那个封闭的操作系统,其实也是当年直接从邻国搬来的代码,稍加修改就用上了,不但只能在少数硬件平台跑,还默认就会启动一个图形界面,面子倒是好看,但是效率太差,往往需要更好的硬件支撑,用户苦不堪言;而那个开放的系统,支持多个硬件平台,运行效率还极高,不在乎面子,更有里子。

封闭的操作系统有的时候要进行大规模重构,比如在上世纪六七十年代曾经遇到过惨痛失败;而开放性的操作系统因为基础架构合理,所需要的只是不停的改进就好。

继续说这个封闭的操作系统,一年一度的代码Review大会,今年要修改开发章程,引起关注的一个调整是第七十三条:对危险进程的处理方式:一经发现疑似危险进程,安全软件有权直接Kill掉不再通知父进程。令人遗憾的是,这个调整居然还被大会通过了。

开放的系统设计者的眼里:每个用户是平等的;而在封闭操作系统的设计者口中,当然也是所有用户都平等,只是有些用户比其他用户更加平等。

操作系统是一门复杂的课程,每一行代码都是不解之谜。

EOF

Red Hat 企业版 Linux 的一些改进

Red Hat 正式发布了企业版 Linux 5.5 版本。原以为这个版本发布不会有太多新鲜的内容,读了一下 Release Notes,还是有不少值得关注的地方。

注意其中有一句话,一定要关注一下,每个逻辑 CPU 推荐至少需要 1GB 的内存。为什么?

这一版本对于虚拟化环境中使用 HugePages 有所改进。系统设定使用 HugePages 之后,Libvirt(虚拟化 API) 针对 Virtual Guest Memory 自动使用 HugePages 。需要技术人员考虑这对虚拟化环境中的 DB 有什么影响?

改进了 Completely Fair Queuing (CFQ) I/O 调度器在某些应用场景下的性能。很多 Linux 用户都不太注意默认调度器的问题。性能上其实还是会有很大差异的。知其所以然才好。

关于 SystemTapValgrind 的引入对于系统管理员来说,是个好消息。前者有助于性能调查,后者有助于内存泄漏分析。

阅读 Release Notes 是个很有趣的事情,技术人针对自己感兴趣的领域可以多关注一些类似产品的特性,用其所长,技术选型上应该采取主动一点的态度。

EOF

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

三十学艺与 Linux Networking Cookbook

这本《Linux Networking Cookbook 》(中文版) 是译者冯亮(aka, hutuworm)的赠书。 600 多页的书一个人5个多月搞定,翻译本是一份儿苦差事,没有足够的功力和定力做不下来,而其细致从译者终校可见一斑。

搭建Linux防火墙、使用Linux路由、使用Nagios监控网络、和自动网络安装服务等章节,对于一个系统管理员来说是绕不过去的话题,或许有人觉得我用搜索引擎直接找这些不就成了,不过,恕我直言,现在能搜到的技术信息多半零零散散,缺乏准确性。而其它一些看似生僻的章节也或许什么时候也能遇到,比如搭建 VoIP 服务器这一章就是个绝佳的教程。很多时候,我们最欠缺的是把Linux 用到刀刃上。有这样的一本书放在案头,”手中有粮,心中不慌”,想到的时候就读几页,慢慢的也就啃完了。

经常有人问我类似”我从现在开始学习某技术还来得及麽?” ,其实我哪里知道。我们的确有句俗语叫做”三十不学艺”,可看看这本书的原作者 Carla Schroder 到了37 岁才第一次接触计算机,现在是一名技术顾问。国内也有王江民老师 38 岁自学电脑,进而开发出 KV 系列杀毒软件。可见,学艺并不怕晚,只要有信心,有毅力,终有所成。

贝塔咖啡馆的读书笔记一则。不求读遍架上藏书,但求读一本书有所思,有所得。

EOF