Linux能够补上技术缺口吗?

best_dba 2007-08-02 11:02:17
对Linux来说,法律威胁也许是备受媒体关注的风险,不过这个流行的开源内核项目同时遇到了技术上的重大不足。

Andrew Morton是一名内核开发人员,负责维护名为“-mm tree”的测试内核项目,他以筛选及测试向该项目提交的新内核而广为人知。今年5月他在谷歌的《内核状态》演讲上指出了Linux有问题的三大方面: 文件系统、电源管理及系统性能检测工具。文件系统是内核开发方面需要最繁重的计算机科学工作的部分之一,这种软件决定了如何把数据放到磁盘或者其他的非易失性存储设备上,并进行检索,而Linux的文件系统跟不上大容量存储用户的需求。

项目创始人Linus Torvalds在一封电子邮件中表示,他认为Linux文件系统和电源管理需要改进。他说,后者是设备驱动程序存在的一个较重大问题引起的一方面。这个较重大问题就是驱动程序基本上能正常使用,但没有实现高级特性。不过Torvalds认为,Linux已经配有的简单检测工具足以处理实际性能问题。

文件系统

文件系统开发人员Val Henson指出: 到2013年,磁盘容量可能会增加16倍; 可是带宽只增加5倍,而寻道时间只会加快1.2倍。这意味着,文件系统检查实用程序fsck需要越来越长的时间才能运行完毕。Henson撰文道: “如今使用fsck对数TB的文件系统进行检查很可能需要两天,而将来需要更长的时间。其次,越来越多的I/O错误意味着,fsck的使用频率会高得多。”

Torvalds指出,标准Linux文件系统ext3在普通大小的磁盘上也浪费了一些时间。Torvalds 说: “ext3无所不在,但实际上在像fsync这些‘简单’的操作方面不是做得很好。在执行fsync操作时,ext3最后基本上会刷新整个日志,即使我们只是想对某个文件进行同步。”

只有把与某个文件有关的数据写入到磁盘时,才需要“fsync”系统调用。另一个“sync”系统调用负责刷新所有缓存数据并同步到磁盘上。在忙碌的服务器上,刷新额外的日志数据会导致试图仅仅对一个文件进行fsync操作的应用程序速度减慢。

Sun的ZFS是个热门的新文件系统,它把Linux上RAID、逻辑卷管理和文件系统等几个不同的层合并到单一子系统。不过,ZFS虽然采用了同样是开源的CDDL许可证,但与GPL不兼容,所以不能直接作为Linux的一部分使用。

开发人员Ricardo Correia已想出了一个办法避免许可证问题,这个办法采用FUSE技术在用户空间运行Sun自己的ZFS代码。虽然该项目的速度远不如传统的内核文件系统,但Correia声称,“基于FUSE的文件系统其性能与内核文件系统不相上下,因为瓶颈通常是在磁盘,而不是CPU。”把系统的重要角色交给拥有特别权限的用户空间程序,这方面已有先例,Linux上使用的 X Window System一直作为用户空间程序来运行。甚至有开发人员开发出了试验性的Linux发行版,把使用FUSE的ZFS集成到了安装程序中,不过这种方法似乎还没有经过严格测试。

虽然目前的文件系统围绕磁盘而设计,但Torvalds认为,将来这种思路可能需要改变。他说: “闪存存储设备有着完全不同的性能,这意味着如果你一开始其实需要的是闪盘,那样我们为传统磁盘所做的工作可能没有太大的实际意义。”

电源管理

Morton说: “我们在电源管理方面仍相当幼稚。”许多设备能够支持低功率状态。譬如说,不能接收入站信息流的网卡可以使用较低功率的状态。但Linux只支持开和关状态,Morton说: “我们让开和关状态正常工作有难度。”

Torvalds说,可正常工作(随Linux附带的驱动程序数量超过其他任何一款操作系统)的驱动程序与实现了高级硬件特性(如节电模式)的驱动程序是有区别的。许多Linux驱动程序仍缺少后一种特性。他说: “我们有大量驱动程序,但99%的人关注的是基本功能。许多人希望驱动程序也能够有效使用电源,并且很好地处理暂停/恢复操作,但这与‘可正常工作’相比绝对是次要问题。”

英特尔公司的开源技术中心主任Imad Sousou说,英特尔的几名开发人员正在研究电源问题。

其中一个项目就是针对多核处理器的节电功能。Sousou说,在一个双核处理器上,让一个核心进入低功率的“睡眠”模式,可以把处理器的功耗从34瓦减少到12瓦。他说,不过尽管处理器的节电功能在安装的现有Linux上使用良好,但在PCI设备的驱动程序方面仍然有许多工作要做。

不像其他重要、新颖又引人注目的内核特性,譬如新的虚拟化技术那样,电源问题需要逐步解决,不能一蹴而就。

近期在内核端电源管理方面向前迈出的一步仍有待其他计划迎头赶上。Red Hat公司的Ingo Molnar和嵌入式Linux开发公司Linutronix的创办人Thomas Gleixner的开发工作为Linux添加了名为“无时钟内核(tickless)”的节电特性,它可以关闭Linux常用的定时器中断(每秒通常中断 100次到1000次)。取代周期性定时器的无时钟内核只有在需要时才唤醒。

虽然无时钟内核有望使成千上万个Linux设备进入耗电量很小的睡眠状态,但两个限制因素成了它的绊脚石。首先,无时钟内核只适用于32位内核,不能适用于新服务器上通常使用的64位内核(据说很快会有支持64位的功能)。其次,许多用户程序仍在没有必要的时候唤醒内核——譬如说,为了检查有没有新文件而唤醒内核,其实用户程序可以使用名为inotify的功能,让内核告知何时出现了新文件。

检测工具

Morton说: “我认为我们没有向经验丰富的编程人员提供足够多的信息,从而告诉他们内核里面的情况。”不过在三大缺口当中,检测工具方面恐怕是进展最大的。Morton列出了检测工具方面的诸多亮点,包括每个任务的I/O操作统计以及每个进程的内存占用空间监控。

他还提到了Matt Mackall用来衡量进程使用内存情况的两个尺度PSS和USS是可喜的进步。当前的内存使用统计数字并不能表明多少进程在共享某个内存页面,所以用户无法得到准确的衡量值来回答简单的问题,譬如“如果我终止这个进程,可以释放多少内存?”Mackall的工作简化了找出占用大量内存的程序。

Morton说,目前,基于IA-64平台的Linux可以通过perfmon来使用该平台的硬件性能计数器,“我们最终会获得其他平台的此类计数器。”

用户现在可以获得CPU的许多性能分析事件,然后可以进行高速缓存未命中分析之类的操作。然而,大多数实际的性能问题出现在较高层面上; 而实际上,简单的周期分析就往往足以获得底层的性能数据,从而了解低层问题是什么。
http://www.ccw.com.cn/server/yyjq/htm2007/20070727_293806.shtml
...全文
318 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
CS_247 2007-09-19
  • 打赏
  • 举报
回复
路过
aa_99_liu 2007-09-13
  • 打赏
  • 举报
回复
这个谁有说的好呢

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧