前天晚上在维护公司的服务器的时候,phpmyadmin突然提示无法链接到mysql,然后提示没有剩余空间。我赶忙登录服务器,df一看,发现不对啊,才用了67%。接着再看df -i,发现inode全部用完了。这台服务器是爬虫服务器,用来抓取网页,所以有无数的细小的文件,所以inode很快用完了。然而,ext3的inode数量是无法调整的,如果要调整,必须重新格式化分区(mkfs -N nn),这点非常令人头疼,所以如果是我来配置服务器,我会选择reiserfs或者xfs,因为这2者可以自动扩展inode的数量,而且磁盘空间的利用率也较ext3好。当然ext3确实是一个非常稳定的文件系统,但对于有超大文件,或者无数小文件的特殊情况,还不是非常合适。不知道这些问题在ext4中有没有得到的解决。
听说上海环球金融中心,也就是传说中的“军刀塔”——现在已经是“开瓶器”,上周六落成了。 网上除了关于军刀塔原本的设计有碍民族感情之外,有高人指出该建筑有风水问题,会影响到中国的经济。我不知道它到底风水有啥问题,不过确实这楼不是很太平,烂尾1 、火灾、脚手架事故,到落成后被查处。 我在07年3月左右到07年10月,是住在浦东世纪大道地铁张附近的,远远地就能看到正在施工的“开瓶器”,那时还尚未封顶。 话说那个时候正是中国股市、房市最火爆的时候,我当时预测,这个“开瓶器”估计是在奥运前后结束,而那个时候必然是股市、房市回调的时候,虽然不知道他是否有碍风水,不过应该正好赶上这个点——还真是巧啊,“开瓶器”封顶了,中国经济出问题了,因果关系?巧合?。 有个不算很细的细节,有一次路过,我看到“开瓶器”的底部(大家可能把很多注意力放在了顶部,加上底部不容易看清),用得类似于大理石或者砖块材质,非常类似于日本古代城堡建筑底座的风格。 97年亚洲金融危机和2000年911事件导致项目暂停,也有人认为是风水问题 [↩]
当我在Infoq上看到了“技术债务”这个新名词的时候,加上正好前一段时间也和做市场和销售的朋友谈了一些东西,我受到非常大的启发。 市场人员、销售人员(以下简称营销人员)和技术人员的想法完全不同——我朋友说他还有他的朋友们有很多想法,就是没人去实现(没技术),其实只要手上有个产品,哪怕不够好,只有60分,也能够卖出去。这朋友正在创业,网站还没上线,广告投放就已经谈妥了——这对于我这种搞技术的人是完全不敢想象的,手头没有实实在在的产品,我都不敢出去和人说。 似乎他们很有道理,在当今这种“不管黑猫白猫,抓到老鼠就是好猫”的思想熏陶下,他们这种无论产品好坏,能卖出去赚到钱就好,也是“正当”的,更是“高手”。然而这种想法是一种浮躁的心态,其实就是渴望暴富,最终还是会害了自己。 朋友因为在创业,没有合适的技术伙伴,为了能降低成本,技术团队方面他们仅仅雇佣了一个普通的PHP程序员(没有任何架构的概念、不会配置服务器、不了解数据库建模),一个前端工程师和一个实习生。而几个创业合伙人都是兼职,不能全心全意。又为了能迅速完成既定目标,直接购买了所谓的国内某知名CMS——大家也能猜到,这个CMS的代码写得非常混乱,虽然功能经过定制,看上去能部分满足朋友的需求,但是我一看就知道,将来维护会很成问题,极有可能将来会将这个代码全部重写,而迁移的过程可能是非常痛苦的——这就是所谓的技术债务,是迟早要还的。 不少公司老总都希望事情能够“多快好省”,但世界上哪可能有这么好的事情呢?回报总是和付出成正比的,否则就是欠了债。公司的发展就像生物的成长,首先内部各个器官必须齐全,其次外部的条件合适。我人对于公司成长的不同阶段,根据公司的情况,应该制定合适的目标。如果公司没有技术能力,则应该出钱构建符合目标要求的技术团队,如果连钱都没有,创始人就不应该一下提很多需求——就低价招3个技术小白就妄图做一个门户网站? 当然我可以理解他们希望通过快速弄出一个原型,然后可以吸引到投资,然后再去建立团队,再重新完善不规范的地方,即,企图通过一个不完善的小产品作为杠杆来撬动一个大事业。然而杠杆原理不是这么用的,杠杆原理中,同样的一根杆子,要撬动同样重的东西,无论支点放在那里,省力的必然费距离,费力的才可以省距离,总体消耗的能量总是不变的。如果想翘起特定目标的事业,如果付出少(人力、物力、财力),那么需要的时间就多,如果要快,就要付出更多。当公司的事业没有达到一定的条件的时候,就去忽悠投资,鼓吹公司将来能如何地盈利,那么当投资进入之后,情况就不能完全由创始人决定,他们会受到更多的压力,无法再静下心来回头慢慢搞规范,只能更加浮躁地去考虑如何赚钱。这时候,如果技术方面的债务得不到很好的清偿,会出现很多问题,诸如依托技术提供的服务达不到要求等(我只关注技术方面,其实还要关注运营、财务、市场等其他方面),导致被吹出来的目标无法达到。诸如此类的案例当然不必多说,比如CSDN的BLOG的稳定性。当目标无法达到,要么投入更多的人力、物力、财力来弥补这个错误,要么忽悠落空,投资撤出,公司也就不能继续了。 出来混,迟早要还的。
原文:http://groups.google.com/group/erlang-questions/browse_thread/thread/7827f5e32681ca8e by.Kenneth Erlang/OTP team, Ericsson 译:ShiningRay 以下是一些Erlang SMP实现的细节和与性能与伸缩性相关一些简单介绍。 几周之内还有有一个关于多核如何运作以及未来如何发展的更详细的介绍。我打算将一些内容放在我的报告中,将于9月27日的ICFP2008,Erlang Workshop在Victoria BC展示给大家。 没有SMP支持的Erlang VM只有1个运行在主处理线程中的调度器。该调度器从运行队列(run-queue)中取出可以运行的Erlang进程以及IO任务,而且因为只有一个线程访问他们所以无须锁定任何数据。 而带有SMP支持的Erlang VM可以有一个或多个调度器,每个运行在一个线程中。调度器从同一个公共运行队列中取出可运行的Erlang进程和IO任务。在SMP VM中所有的共享数据结构都会由锁进行保护,运行队列就是这样一个由锁保护的数据结构。 从OTP R12B开始,如果操作系统报告有多于1个的CPU(或者核心)VM的SMP版本会自动启动,并且根据CPU或者核心的数量启动同样数量的调度器。 你可以从“erl”命令打印出来的第一行看到它选择了哪些参数。例如: Erlang (BEAM) emulator version 5.6.4 [source] [smp:4] [asynch-threads:0] ….. 其中“[smp:4]”表示SMP VM运行了4个调度器。 默认值可以用“-smp [enable|disable|auto]”来替换,auto是默认的。如果smp被启用了(-smp enable),要设置调度器的数量可以使用“+S Number”其中Number是调度器的数量(1到1024) 注意1:运行多于CPU或核心总数的调度器不会有任何提升。 注意2:在某些操作系统中一个进程可使用的CPU或者核心的数量可以被限制。例如,在Linux中,命令“taskset”就可以实现这个功能。Erlang VM目前还只能探测CPU或者核心的总数,不会考虑“taskset”所设置的掩码。正因如此,例如可能会出现(已经出现过了)即使Erlang VM运行了4个调度器,也只使用了2个核心。OS会进行限制因为它要考虑“taskset”所设置的掩码。 每个Erlang VM的调度器都运行于一个OS线程上,是OS来决定线程是否执行在不同的核心上。一般来说OS会很好地处理这个问题并且会保证线程在执行期间运行于同一个核心上。 Erlang进程会被不同的调度器运行,因为他们是从一个公共运行队列中被取出,由首先可用的调度器运行。 性能和伸缩性 只有一个调度器的SMP VM要比非SMP的VM稍微慢那么一点点。SMP VM内部需要用到各种锁,不过只要不存在锁的争用,那么由锁引起的开销不会非常大(就是锁争用上面需要花时间)。这也解释了为何在某些情况下,运行多个只有一个调度器的SMP VM要比包含多个调度器的单一SMP VM更加高效。当然运行多个VM要求应用可以按照多个并行任务的方式运行并且之间没有或者几乎不通讯。 一个程序是否能在多核上的SMP VM中良好地进行提升很大程度上取决于程序的性质,某些程序可以保持线性提升至8核甚至16核,同时其他某些程序基本不能提升,连2核都不行。实际应用中很多程序都能在主流市场的核心数上得到提升,见下文。 若并行的持续“通话”由每个核心一个或多个Erlang进程来表示,实际的支持大量通话的电信产品已经先现出在双核和四核处理器上不俗的伸缩性。注意,这些产品是在SMP VM和多核处理器出现很久以前按照普通的Erlang风格来写的,他们也能无须任何修改甚至不需重新编译代码就能从Erlang SMP VM中获益。 SMP性能得到持续改进 SMP实现正被不断改进以便能得到更好的性能和伸缩性。在每个服务发布版R12B-1,2,3,4,5…,R13B等等中,你都能发现新的优化。 [...]
听说今天早晨CERN的LHC上线准备运转了,很好。人类就应该为了追寻真理而不懈努力,去探求这个世界的本源,否则,人类就无法知道自己的未来在哪里。就算LHC毁了地球,我觉得也比战争要好。即便没有LHC,人类对环境的污染、核技术、生物技术,都可以把自己给毁了。 突然还想起来,巴西预言家说9月13号有海啸,9月14号是中秋节,都撞一起了。 PS:我觉得该设备的横截面很像八卦图
最近在公司重新开始使用Windows,虽然开启了ClearType12 ,却总是觉得字体发虚,尤其当我将写代码的字体设置为Bitstream Vera Sans Mono之后这种情况特别明显。于是翻了很多资料,发现这个微软官方的工具ClearType Tuner。这个工具可以帮助选择次像素顺序,调整微调的力度(Linux上也有这样的配置工具)。如果你在浏览这个页面的时候,感觉该页面上右边的ClearType的范例图比你的机器上的渲染效果要好,那么你就需要使用这个工具了。这个工具是基于IE插件的,也可以下载ClearType Tuner PowerToy 进行调整。只要跟着提示走就行了。 调整了字体之后,看着舒服多了,有助于保护视力。难怪很多人觉得英文版XP的字体效果比中文版好,估计是因为中文主要使用点阵的宋体,所以系统默认更改了微调的原因。不过我还是觉得ClearType无法和Freetype的渲染效果相比,据说Mac OS X的更好。然而,这也要看个人喜好,有些朋友就非常偏好一些没有抗锯齿效果的点阵字体如Fixedsys,因为他轮廓清晰,对比明显。 ClearType(C),字体平滑,一种字型显示技术,是微软在 LCD 屏幕上增强文本的分辨率的字体技术,例如:那些用于便携式计算机的显示屏。ClearType(C) 技术使用了独有的信号处理和 LCD 屏幕的专利技术,提供了受人瞩目的增强易读性的清晰技术,明细的字符特征和间距。http://baike.baidu.com/view/755822.htm [↩]开启方式:桌面上点右键选择“属性”,在“显示属性”窗口中,选择“外观”标签页,点击“效果”,勾选第二项“使用下列方式使屏幕字体的边缘平滑”,并在第二个下拉框中选中“清晰” [↩]
最近关于Google浏览器Chrome的报道铺天盖地,我也第一时间尝试了Chrome,我觉得其简洁的风格我非常喜欢。不过这只是第一个版本,稳定性和功能各方面还有待增强。但我发现了一个Google在这里的一点技术创新,那便是不同的标签页使用了不同的进程。 不搞编程的人可能不知道这里面的好处: 多进程提高了整个应用的稳定性:倘若有一个标签页崩溃、假死了,并不会影响到其他的标签页。我在Firefox下经历过某个页面的假死导致必须强制关闭整个浏览器。 多进程可以提高应用整体性能:现在计算机已经进入多核时代,只有能利用多个核心的优势才能进一步提高程序性能。一般而言,单进程的程序要通过线程来利用多核,但是线程之间由于共享同一片内存地址,编写代码容易出现问题(如锁的争用等等),不如传统的进程方式方便稳定。 多进程可以节省内存资源:进程结束之后内存可以立刻释放,就更不容易出现内存泄露和内存碎片过多的问题 多进程提高安全性:安全性部分我不了解,但是考虑到进程之间的隔离,我觉得安全性是可以更好地提高的。 过去IE也有多进程模式,但必须是重新执行IE的进程才行,对于从任何一个IE窗口中弹出的新窗口,实际上和原窗口还是同一个进程,而进入到了IE7之后,标签方式浏览必须使用同一个进程。而FF和Opera则一直都是单进程模式。Chrome完美结合了多进程方式和标签浏览,这一招确实非常高明。 虽然目前Chrome应用这一方式可能还存在一些问题,不过我认为方向是正确的。