设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 手机 公司
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

Linux内核测试现状揭秘(2)

发布时间:2019-01-03 08:47 所属栏目:117 来源:邢万里 马涛
导读:Linaro目前正在为谷歌开发一个使用内核自检(kernel self-tests,缩写kselftest)和Linux测试项目(Linux Test Project,缩写LTP)来测试稳定的内核项目,这些测试会针对每个稳定的发布版本来进行。自检测试的确能发现b

Linaro目前正在为谷歌开发一个使用内核自检(kernel self-tests,缩写kselftest)和Linux测试项目(Linux Test Project,缩写LTP)来测试稳定的内核项目,这些测试会针对每个稳定的发布版本来进行。自检测试的确能发现bug,但编写这些自检测试的人可能并不是引入大多数错误的人。所以自检测试还只是一个开始,显然Linaro还需要增加更多的测试。

所以综合来看,版本发布者一般都只是关心,合并到稳定版本里的修复(fix)是否是正确的,但是他们只是从稳定版本中摘出修复(fix)然后放到自己的内核中做测试,对稳定内核本身的测试是非常有限的。于是有人建议可以由Linux基金会与Canonical,SUSE,Red Hat等公司一起组建一个合作项目,大家一起贡献一部分机器同时形成一套测试套件来进行稳定内核的测试。

测试的不断改善

例一:0天内核测试服务(0-Day kernel test service)。这个服务也不仅仅是构建和引导测试(build-and-boot tests),还包括一些性能测试。 kernelci.org项目也正在对许多不同的硬件进行构建和引导测试(build-and-boot tests),这些都是非常有价值的,但他们没有做任何真正的功能性的测试。当然事情肯定会变得越来越好,大家不都是说“有比没有好么”。

例二:LTP(Linux Test Project)。它可以测试很多东西,但也有很多地方它并不会去测试。它会被一些发行版使用,然后也肯定能在里面发现一些bug,但很明显我们需要更多更好的测试套件。

例三:性能测试(benchmark)和模糊测试(fuzzing)。会上还讨论了稳定内核的模糊测试。模糊测试上游内核是一种最好的选择,因为所有问题的修补都在那里,但它仍然可以在发行版的内核中发现问题。目前syzkaller fuzzer已经可以针对它发现的问题自动生成小的测试用例,大家也觉得这些应该被加入自检测试集。虽然有人提到一些BUG只在Kernel Address Sanitizer(缩写KASAN)下才会出现,但这些测试在那些没有被配置KASAN的内核上运行的时候是可以简单地被跳过的。除了找BUG的测试之外,内核还需要更多的性能测试来发现性能退化(performance regressions),有人提到可以用Mel Gorman的MMTests作为“kbench”这一性能测试套件的基础,只是这个套件对应的文档很少了,所以我们需要在内核文档目录中建立一个测试套件目录作为一个开始,但任何复杂的性能测试显然需要更加深入的文档。

例四:基准数字(single number)。有人提议说,如果我们有一个性能测试然后给出一个基准数字,而我们可以基于这个数字来判断性能是否有退化就完美了(比如BogoMips背后的想法),当然有另外一些人会质疑是否真的存在这样的测试系统。

例五:自我测试(self-tests)。越来越多的自我测试,正在被添加到内核主线中,但是稳定的内核却不会从中受益。有些人正在使用较老的内核进行最新的自我检测,于是有人提议也许自我测试本身应该被移植到稳定的内核树中。

例六:神经网络训练。随着BoF的结束,Levin要求发行版的维护者将他们正在使用的补丁推向稳定的分支中去。一般发行版中的问题在稳定内核中也一定存在。他最近一直在努力训练一个神经网络来识别适用于稳定内核的补丁,这引起了一些笑声,但他说结果是“出人意料的好”。

内核测试的一些其他声音

Greg Kroah-Hartman是稳定内核的维护者,他没有参加BoF但是其实对BoF的讨论内容也有兴趣。于是第二天当Levin在一个小型会议中概括总结BoF的讨论结果的时候,Greg给出了他的一些意见。

首先正如Levin所说,在BoF中大家提出了很多的观点,但是并没有什么相应的解决措施。有人建议应该向kernelci.org项目提供更多的硬件,Kroah-Hartman同时希望能看到更多的功能测试。另外还有一些人提议应该让Linaro和kernelci.org一起努力合作这样更好。

关于移植自我检测(self-tests),Kroah-Hartman并不反对这个想法,只要它们能在出问题的内核上运行就可以。他也同意如果发行版能将它们的修补补丁打在稳定的分支(tree)上,那将是一件很好的事情,而且他提到Fedora和Debian已经在该领域做得很好。另一位与会者表示,发行版经常会尽快为用户快速解决问题,然后才会做好上游内核的工作。 Kroah-Hartman表示,如果有BUG在上游内核中没有被修复的话,他也不会在稳定内核中修复,这样一方面上游内核和稳定内核做到了“bug兼容”,另一方面也给了那些厂商一些压力来修复它。

结语

我们需要进行更多的内核测试,这是毋庸置疑的,但是它究竟应该采用什么样的形式以及由谁来做仍然不清晰。如果幸运的话,在不久的将来这块会有一些进展,同时也意味着我们有可能会更早地发现BUG。当然,完美是不可能的,但是我们大家都希望能够减少内核里的错误,对么?另外一点,大家对于上游内核(upstream)的热情是远远高于稳定内核(stable)的,所以对于稳定内核的测试肯定仍然会比较少,所以稳定内核的“稳定性”是大打折扣的。

【编辑推荐】

  1. Linux下的Rootkit驻留技术分析
  2. 如何在Ubuntu和其他Linux发行版上安装Putty
  3. 用户、组及其它Linux特性
  4. 7个最佳Linux电子书阅读器
  5. 五款主流 Linux 发行版性能对比,稳而不强?
【责任编辑:武晓燕 TEL:(010)68476606】
点赞 0

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读