泰晓科技 -- 聚焦 Linux - 追本溯源,见微知著!
网站地址:http://tinylab.org
请稍侯

[ 点 我 解 锁 ]

加微信 tinylab 进本站 Linux 交流群。

搜索 泰晓科技 或扫码关注本站公众号。

泰晓资讯·06月 / 第一期 / 2019

Wang Chen 创作于 2019/06/07

“泰晓资讯”,广泛报道 “Linux/开源” 业界资讯。欢迎广大读者投递相关资讯来源和素材,本站将进一步收集整理后发布给大家。

本次资讯主要来源 “LWN.net Weekly Edition for May 23, 2019”

Among the options under consideration is the possibility of openSUSE setting up an entirely independent foundation, as it seeks greater autonomy and control over its own future and operations.

关键词:openSUSE, SUSE。

SUSE 与 openSUSE 社区之间的关系目前正在发生变化。一种可能性是考虑为 openSUSE 建立一个完全独立的基金会,这样它就可以获得更大的自主权并对自己的未来和运营拥有更大的控制。相关的讨论已持续数月,最早是在 4 月 2 日举行的 openSUSE 董事会会议上,后继又在 4 月 16 日 的会议上再次进行了讨论。在即将举行的 2019 年 openSUSE 大会上该问题也将成为董事会讨论的主要议题。有关 SUSE 本身的变化新闻也是持续不断,近期在私募风投基金 EQT 的支持下 SUSE 已经从 MicroFocus 公司脱离出来成为了一家独立的公司。openSUSE 董事会主席 Richard Brown 和 SUSE 领导都公开重申 SUSE 仍然会继续支持 openSUSE。目前最大的担忧是,从 SUSE 脱离后, openSUSE 是否能够不受其影响地持续自主运行。

for this development cycle, 12,064 non-merge changesets had been pulled into the mainline repository

关键词:Linux 5.2, PowerPC, Control-group, Pressure stall monitors, tracing/error_log,

上周资讯对 Linux 5.2-rc1/rc2 做了简单介绍,这里基于 LWN 做更多补充。截至 Linus Torvalds 发布 5.2-rc1 版本并关闭了合并窗口,主线仓库中一共合入了 12064 个修改。下面简单摘取了一些主要的修改内容介绍给大家。

架构相关

  1. PowerPC 体系结构现在可以利用硬件上的支持来防止内核访问用户空间的数据。
  2. 32位 PowerPC 开始支持 KASAN
  3. 合入了针对英特尔 “微架构数据采样(microarchitectural data sampling )” 漏洞的缓解措施。有关问题的详细描述,请参阅内核文档中的此页面,以及此页面以获取缓解信息。

内核关键修改

  1. control-group v2 版本中更新了 freezer 机制(所谓 freeze 概念指的是停止运行一个 cgroup 以及该 cgroup 派生的 cgroup 中进程的操作)。和 v1 版本中的 freezer 实现方式不同,在停止一个进程运行后,现在的做法是将进程的状态设置为 stop,而不是原先的 uninterruptible sleep。这么做的好处是允许一个进程被停止运行后仍旧可以被 kill、trace 或者移动到另一个 group 中去。
  2. sysctl 增加了一个新的控制参数 vm.unprivileged_userfaultfd, 用于控制一个非特权(unprivileged )用户是否可以使用 userfaultfd() 这个系统调用。为了和现有内核兼容,缺省的设置是允许非特权用户使用。
  3. 内核中新增了一个叫做 Pressure stall monitors 的工具,允许我们从用户空间获取实时的系统资源使用状况,特别是当前的内存使用情况。这里有文档和使用案例。
  4. 日志跟踪(tracing)子系统导出了一个新的虚拟文件 tracing/error_log, 可以方便我们在出错时输出出错信息。
  5. /proc/slab_allocators 这个 slab 子系统导出的文件由于一直无法正常工作将被删除

Even with radiators and fans, a system’s CPUs can overheat. When that happens, the kernel’s thermal governor will cap the maximum frequency of that CPU to allow it to cool. The scheduler, however, is not aware that the CPU’s capacity has changed; it may schedule more work than optimal in the current conditions, leading to a performance degradation. Recently, Thara Gopinath did some research and posted a patch set to address this problem. The solution adds an interface to inform the scheduler about thermal events so that it can assign tasks better and thus improve the overall system performance.

关键词:Thermal Management, CPUFreq, Scheduler, Performance.

即使使用散热器和风扇,系统的 CPU 也会过热。当发生这种情况时,为了降温,内核的 “热调节机制(thermal governor)” 将开始工作并限制 CPU 的最大工作频率。但是,调度器(scheduler)却不知道 CPU 当前的处理能力已经因为 “热调节机制” 的作用被降低了;结果调度器还会继续按原有方式为这个 CPU 安排运行任务,这显然超过了 CPU 当前的处理能力,这会导致性能的下降。

最近,内核开发人员 Thara Gopinath 对这项工作做了一些研究并发布了一套补丁来试图解决这个问题。该解决方案添加了一些接口,可以让调度器以主动(调用)或者被动(回调)的方式获得有关温度变化的状态信息,以便它可以更好地分配任务,提高整体系统性能。社区看上去接受了该提议的想法。相关框架很可能在未来的某个版本中被合入内核主线。但在此之前,还有一些工作要做:譬如进一步完善算法的细节(譬如是否重用 PELT 代码等),当然还需要在不同的体系架构和系统上运行更多的基准测试。有兴趣的读者可以阅读 Gopinath 在 Linux Plumbers Conference 上发表的演讲的 幻灯片,该文档为这项工作的早期版本提供了额外的背景信息。

The YP’s build processes are all automated and its test infrastructure can build compilers, binaries, packages, and then images, for four principal architectures, and for multiple C libraries, init systems, and software stacks. It can then build and boot-test them all under QEMU, which takes around six hours if everything needs to be rebuilt; that can drop to under two hours if there are a lot of hits in the prebuilt-object cache.

YP has been adding support for running the test suites that many open-source projects include on a regular and automated basis. These are referred to as packaged tests or “ptests” within the project.

关键词:Yocto,Ptests

Yocto Project (简称 YP)的发起目的是提供一套包括了编译和维护定制化 Linux 发行版的套件。YP 对 Linux 发行版的编译流程完全是自动化的,整个流程覆盖了从编译生成编译器开始,到生成二进制文件,再到打包成软件包,以及最终生成镜像文件。YP 目前可以支持 4 大主流CPU 架构(ARM, MIPS, PowerPC, x86),包括 32 和 64 位模式,也可以支持多种 C 库,init 方案,和多种视窗系统(例如 no-X11, X11/GTK+, Wayland 等)。为了实现测试的自动化, YP 还引入了 QEMU,所有最终生成的发行版都可以在 QEMU 环境里启动运行。

在此基础上,YP 还提供了一套机制可以针对发行版中包含的很多开源项目执行自检,即运行这些开源项目中自带的自动测试用例, 这在 YP 中被称之为 “packaged test 或简称 ptests”。虽然 YP 很早之前就有 ptest,但最近才开始将其真正部署到自动测试系统里并定期执行。令人激动的是在最近 YP 升级到 Linux 5.0 内核的过程中,通过 ptests 这套机制,YP 成功地发现了一个真正的 kernel bug 并帮助社区及早定位并解决了这个问题。这说明让测试变得更加方便和更加自动,是非常有价值的事情。

在之前的 Linux Lab Full rootfs 一文中,我们介绍到了 Yocto 可以用于构建文件系统,这里则展示了 Yocto 在日益完善的自动化测试能力。

THPs reduce translation lookaside buffer (TLB) misses so they provide better performance. Facebook is trying to reduce misses on the TLB for instructions by putting hot functions into huge pages. It is using the Binary Optimization and Layout Tool (BOLT) to profile its code in order to identify the hot functions.

This results in a 5-10% performance boost without requiring any kernel changes to support it.

关键词:THP, TLB miss, performance boost, BOLT.

“透明巨页(Transparent Huge Pages, 简称 THP)” 通过降低 TLB (Translation Lookaside Buffer)丢失的概率,可以极大地提升性能。在此基础上,Facebook 提出可以将频繁调用的函数指令存放在 huge pages 上从而利用该特性提升程序运行的效率。 具体做法是使用 Binary Optimization and Layout Tool (BOLT) 识别出程序中频繁调用的函数然后将它们收集起来放在可执行文件的一个特殊的节中(称为 hot section,大小为 8MB)。在运行时,应用程序会创建一个 8MB 大小的临时缓存,然后先将 hot section 的内容临时拷贝到这块内存区域。再为该内存区域创建一个对应的 huge page(通过匿名内存映射 mmap() + madvise() 的方式),huge page 创建好后,再将备份在缓存中的内容拷贝到该 huge page 中,最后再调用 mprotect() 将这块内存的权限设置为可执行(executable)。

采用以上的方式,可以在不涉及修改 kernel 的前提下,获得 5~10% 的性能提升。但问题是这么一来该 THP 区域的符号地址以及 uprobe target 就乱掉了,因为 kernel 并不知道这块区域是程序代码段的一部分。假如在文件系统代码里面直接支持 THP,那就不用搞这么多复杂的小动作,直接用一个 madvise() 命令就可以达成以上目标。

来自 facebook 的 Song Liu 目前正在致力于内核中这方面的改进,不过他目前的实现还比较简单,存在诸多限制。Song Liu 在 2019 年 的 LSFMM 大会上就这个问题向大家广泛征询意见,很多专业人事对此发表了各自的看法。

说明:本文来自 LWN 对 LSFMM (the 2019 Linux Storage, Filesystem, and Memory-Management Summit) 的报导,余下的报导还有几篇,本站将在后续统一补充。

Brief news items from throughout the community.

关键词:Martin Schwidefsky

这里汇总几条重要简讯,余下的还涉及 Security,内核开发,发行版以及软件开发等最新的状态,请移步到 LWN 原文 阅读。

内核发布状态

最新开发版本是 5.2-rc1,于 5 月 19 日发布,引自 Linus 的原话:“这个合并周期中没什么特别的令人激动的东西 ......

其他稳定版本的更新状态

  1. 5 月 17 日发布了 5.1.3,5.0.17,4.19.44,4.14.120,4.9.177,4.4.180
  2. 5 月 22 日发布了 5.1.4,5.0.18,4.19.45,4.14.121,4.9.178。

同样值得注意的是 3.18.140 的发布,这是官方维护的 3.18 系列的最后一个版本。虽然官方不再对其更新,但考虑到依赖于这个版本的用户群很大,所以这个系列的版本(包括一些其他的版本)依然会由 Android Open Source Project (AOSP) 负责维护。

沉痛哀悼 Martin Schwidefsky

内核邮件列表中带来了一个令人遗憾的消息 ,即长期的内核贡献者和子系统维护者 Martin Schwidefsky 不幸因事故丧生。以下为摘自邮件的原文:

Martin 是 Linux 内核早期 s390 架构的最重要贡献者,后来成为该架构的备选维护者(backend maintainer)。他的技术专长和指导技巧都非常出色。Martin 以他积极的心态和坚强的意志而闻名。我们会永远想念他。



泰晓资讯,汇总一周技术趣闻与文章。

Read Album:

Read Related:

Read Latest: