linux可以引入时钟延迟,linux确实越来越慢了

linux确实越来越慢了

发布时间:2008-04-21 00:35:16来源:红联作者:tsaqhlg

记得在哪里看到有人说过一句话,linux正在慢慢变成另外一个windows。

现在觉得还真有点那么回事。首先linux的内核代码随着市集模式开发,变得越来越复杂庞大。慢慢的已经很少能有人全盘掌握了。其次,linux大量特性的引入,系统的执行效能越来越跟不上代码规模的发展。这点,在我这个向来使用淘汰机器运行linxu系统的人来说,还真的体会到了。

2003年那会儿,我用一台赛扬500,内存96M的机器跑linux,从redhat到magiclinux,然后到Debian woody,感觉机器还挺快。速度稍微比win98,win2k慢那么一点点。

2008年初,我用一台图拉丁赛扬1.1G,内存384M的机器跑Debian etch,还是一样的最简安装。然后apt加装gonme,kde,toolchain。机器性能应该说提升了不少,传说中的神器图拉丁性能也是大家公认的可以超越同频率的P4.结果呢,Debian已经慢的让人无法忍受了。开一个窗口要等2,3秒。所有的程序都有这样的延迟。竟然比2003年的破机器还差。速度仍然是比不上winxp。

以前的就配置是 2.4 内核,现在是 2.6 内核。运行中查看CPU load,cpu 负载的抖动非常剧烈,在70% 与 5%之间大幅度跳动。查看内存消耗,1G交换分区完全空闲,物理内存剩余20M。典型的调度不当。系统出现明显的CPU不太忙,内存不吃紧,但就是跑不快。

现在的内核看起来过分强调磁盘内存缓冲对性能的提高。系统尽多可能的吸收一切空闲内存充当磁盘缓冲,却把大把的交换分区闲置。在做纯文件服务器,网关等应用大规模读写时,长时间(相对于用户大约10S~30S的短时间操作频率)统计意义上确实会带来吞吐量的提升。然而,对于桌面应用来说,更多的其实是需要快速的加载程序,减少内存缺页。这种一开始就吸收完大部分系统可用内存做磁盘缓冲的方式,对于桌面应用这种频繁加载,关闭程序的应用来说,是不是会造成反复的内存调度?

这里面也许也有X这种图形工作方式的因素。但这个可以用相同机器上安装的FreeBSD,NetBSD来反证。同一台机器,跑BSD,速度明显快过Debian。都是标准的默认安装。X系统版本一样。也都装一样版本的KDE。BSD打开程序没有明显的停顿和延迟,速度基本接近winxp。并且开少数窗口程序和开大量窗口程序感觉不到明显差异。

而看看系统内存的消耗,BSD似乎明显的要主动使用一些交换分区。

不过,unix/linux 下似乎还没有一个合适的工具来统计内存缺页的频率,进程IO的计数等等类似信息的工具。没法得到一个详尽的分析结果。不知道具体造成这种高分低能的原因。因为用 top ,free这些命令来看,cpu 有大量空闲,内存也并未用尽(交换分区还根本没有使用),但是系统延迟却非常明显。响应能力非常低下。

(注:最近已经有一个用来调试linux系统延迟的补丁进入2.6内核。配合工具可以看到每个进程的延迟到底是如何消耗掉的。期待Debian升级,到时候可以具体看看到底cpu都被谁浪费掉。)

大致的分析,估计是这种非常不恰当的内存使用方式。还有任务调度算法 ,以及2.6内核为了提高响应速度而采用提高系统时钟中断频率的鸡肋做法。无知者无畏,linux内存的调度,还没有去看过它的代码,姑且大胆猜猜。无责任言论哈哈!

于是,按照这样的思路重新编译内核。内存的调度方式,是没办法改了。但是任务调度算法可以选择与2.4内核一样的deadline这种简单有效的方法,不采用2.6内核作为特色引入的两种算法。同时系统时钟频率从默认的 250hz降为标准的100hz。不知道有没有谁采用1000hz?估计只会越来越糟糕,并不会如内核配置说明中那种一厢情愿的认为会显著减少延迟。稍稍有点操作系统概念的人都会知道,提高时钟频率会显著提高任务调度开销,结果就是CPU大量被系统消耗,真正用来做有用计算,留给用户程序的大幅度减少。另外,默认内核是对686做优化,改成PIII优化。其他仍然采用Debian默认内核配置。编译了一下,用掉2小时(似乎2003年时候编一次内核顶多也就1小时左右吧)。

最后,启用重新编译的新内核,系统明显的响应变好。延迟减少到1秒内。程序界面会提前很多显示出内容。感觉好多了。用top查看cpu负载,稳定在30%左右。偶尔上升到40%。再没有那种反复颠簸的情况出现。

然后,今天下午做了最后项优化,到nvidia下载驱动,又把nvide的驱动编译进内核。这次,图形显示质量也有提高。同时没有降低性能。感觉终于回到2000年的性能了。

还是如同windows一样,尽管硬件能力飞升,但系统升级带来的结果就是系统处理能力似乎还是原地踏步。停留在10年前的水平。以前大致能够做多少任务,现在还是只能做那么多,没有质变。linux这点上现在真的是越来越象windows了。大幅度得到提升的是越来越华丽的显示效果。

还是非常怀念当年win95,32M内存就已经很快的运行。win98 ,64M内存。完成一样的磁盘任务,一样的office处理 ,一样跑3D程序。而当时的linux,就更加节约,号称 4M 内存就可以完美运行。现在呢?嵌入式设备上的linux要想做一些实际有效的事情,也往往有32M的内存,各种不低于300Mhz的处理器了。

仍然不变,保持处理能力最大限度留给用户的,看来看去就只有BSD了。希望BSD走好。从2000年到现在,BSD从来没有让人失望过。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值