为什么会觉得windows用久了会卡顿,而Linux不会

2021-12-24 15:00发布

首先,“用久”以后,Linux 也是会变慢的,当然,变慢到让人感知到的程度跟你的硬件配置、使用习惯、使用轻重有关。我们回到一个抽象的概念,所有的硬件资源在买来以后,如果不做添置,其实都是有限的。如果持续使用,“用久”以后会发生什么变化?

第一方面,硬件本身会老化。

举个简单例子,经常高温可能导致材料性能发生变化,另外一个例子,比如说磁盘坏块增多,原来可以连续读写的变成随机读写。这个是硬件平台通用的问题,但是不同系统在应对的时候,文件系统的差异会有较大的影响。比如,Linux 文件系统种类很多,而且革新一直是持续的,会相对友好一些。但是,老化这个引起的物理变化是没办法彻底避免的,系统能做的主要是降低磁盘擦写次数,做温度控制等等。

第二方面,硬件资源“余量”越来越小。

包括所有硬件资源,使用的程序增多,很多会常驻,比如说各大巨头的全家桶,用户想杀是杀不死的,下载的软件和音视频,文档等等,都会让各类资源逐步趋向紧张的状态,不知道大家是否观察到,无论是哪个系统,Chrome 浏览器是吃内存的大户,多开一些Tab 打开很多网页后,系统几乎无一例外会卡顿。

对于“不可再生”(迟早得用完)的磁盘容量资源,系统能做的就是磁盘压缩、垃圾清理(实在不行,只能添置磁盘或者转移备份)和碎片化优化(大块连续的磁盘不多了,导致随机读写增多,“磁头”跑来跑去,而且类似DMA的动作可能都做不了)。比如,在实际观察测试中发现,F2FS 针对 NAND 进行了特别的优化,相比 EXT4,在碎片化后,各项指标的性能下降很小。

对于“可再生的”处理器计算和内存容量资源,这个考验到系统的资源管理策略,包括前后台资源配额,后台进程数和内存容量设限,但是又要兼顾某些关键应用的需求,比如说微信要接收消息通知,闹钟影响关键日程安排,这些都不能简单杀了,这里涉及到很多的技术支持,Linux 在这块的迭代做得非常不错,但是实际上生产厂家的使用还是非常不充分,有各种成熟的机制,比如 cgroups, freeze, vm配置,但是策略和实际应用上要解决很多实际的问题。这里头,最关键的是要保障核心交互需求可以即时拿到资源。这个我抽象为“余量预留”,这个概念是所有“用久”或者“重载”后的优化关键。其实,这部分理论上对 Windows 也适用。但是 Windows 会否完全放弃 NT 而改用 Linux 呢?在 edge 浏览器替换核心后其实是有希望的。

硬件本身革新的背后,是系统的迭代和进化。

我个人使用 Windows 比较少,认识比较肤浅。Linux 这块,我认为过去这么多年,由于有大量消费类的 Linux 产品化实践(用户规模巨大,以数十亿计,竞争充分),其迭代和进化的效率其实是非常高的。各大终端厂商在一线搜集用户痛点需求,预研解决方案,然后最后逐步被上游厂商借鉴和吸收,进而再回馈到 Linux 主线,包括进程调度、资源管理/Qos、内存管理、文件系统,以及周边的节能技术、温控技术这些都有长足的进步。个人观察,目前已经到非常关键的阶段,各大厂商已经在想办法解决最后的难点,就是“重载”下的用户交互体验