泰晓科技 -- 聚焦 Linux - 追本溯源,见微知著!
网站地址:http://tinylab.org
微信公众号关注我们知识星球
关注 @泰晓科技

与数百位一线 Linux 工程师做朋友,您准备好了吗?
周一到周五,天天有新文。529 页合集等着领!

开课啦:Linux 码农 5 万月薪必修课!
请稍侯

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

Wang Chen 创作于 2019/06/12

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

Linux Lab 发布历史上第一个版本 v0.1 rc1。

从 2016 年提交第一个 Commit,经过数年的迭代和最近数周的重构,已经于上周,即 2019 年 6 月 6 日迎来了第一个 Tag:v0.1-rc1。

这个 v0.1-rc1 带来的新亮点主要是对树莓派(aarch64/Raspi3)以及最新潮的处理器 Risc-V(包括 riscv32/virt 和 riscv64/virt) 的支持,另外,这个版本对内核模块配置与开发、自动化测试、外部文件系统加载、Qemu 构建、外部工具链等添加了更丰富和完善的支持,这些功能都已经经过较为充分的验证,并且在 README.md 进行了描述和更新。

另外,即日起,Linux Lab 迁移到国内的代码托管平台 gitee.com,同步发布。

关键词:Linux Lab

HelloLLVM 和 HelloGCC 社区将在 2019 年 6 月 22 日(周六)在上海聚会。聚会内容包含(但不限于):

  1. MLIR 是什么,要学么?
  2. 近期的编译领域的八卦
  3. TVM Stack 前景如何?现在入还来得及么?
  4. 如何吸引新人参与 GCC 开发?
  5. 闪电演讲(现场排队)

时间暂定为 6 月 22 日周六下午 3 点到 6 点,地点暂定为张江高科地铁站旁的 vπ 咖啡。

本次活动采取报名制,感兴趣的同学和老师请点击原文链接进行报名。本次活动场地容量 35 人左右,会有比较深入的互动和讨论,参与者最好具备一些编译器或工具链的基础。

关键词:LLVM, GCC, HelloLLVM, HelloGCC

A kernel debugger that allows Python scripts to access data structures in a running kernel was the topic of Omar Sandoval’s plenary session at the 2019 Linux Storage, Filesystem, and Memory-Management Summit (LSFMM). In his day job at Facebook, Sandoval does a fair amount of kernel debugging and he found the existing tools to be lacking. That led him to build drgn, which is a debugger built into a Python library.

关键词:Python, drgn, kernel debugger

来自 Facebook 的 Omar Sandoval 在 2019 LSFMM 峰会上给大家介绍了他开发的一款内核调试器 drgn。利用该调试器,开发人员可以使用 python 脚本,在运行期访问内核的数据结构,譬如,检查 root 文件系统的 superblock 信息以及遍历该 superblock 缓存的的所有 inode 信息。

Debian Linux and its family of derivatives (such as Ubuntu) are partly characterized by their use of .deb as the packaging format. ….. The last major change of the format internals happened back in 1995. However, a discussion of possible changes has been brought up recently on the debian-devel mailing list by Adam Borowski.

关键词:deb, format

Debian 及其派生系列(如 Ubuntu)的一些共同特点是使用 .deb 作为分发打包的格式。有关该打包格式的最后一次重大改版发生在 1995 年,此后一直未有什么变化,具体 .deb 的格式可以参考 deb(5) 手册的描述。然而,最近在 debian-devel 邮件列表中,由 Adam Borowski 发起,讨论了对该格式进行改进的可能性。

Borowski 所提出的改进并不复杂,很容易实现。包括:

  1. 采用 zstd 代替 xz 对内容进行压缩,主要考虑是可以加快解压的速度。
  2. 重新使用老的(1995 年之前)的打包格式,目的是为了避免现在格式中对打包数据长度的限制。
  3. 使用 tar 代替 ar 来对数据进行打包。

由于众说纷纭,就改变 .deb 的打包方式上,社区目前并没有达成一致的意见。

The linux-kernel mailing list has recently seen more than the usual amount of traffic proposing new system calls. LWN is endeavoring to catch up with that stream, starting with a couple of proposals for the management of file descriptors. pidfd_open() is a new way to create a “pidfd” file descriptor that refers to a process in the system, while close_range() is an efficient way to close many open descriptors with a single call.

关键词:system calls, pidfd

5.1 版本 Linux 内核 添加了一个新的系统调用 pidfd_send_signal(),利用 /proc/<pid> 来安全地向进程发送信号,避免早先 kill() 系统调用会导致的安全问题,即直接使用进程号发送信号时由于进程号复用问题可能导致错误的进程接收到错误的信号。具体可以参考 “LWN 文章 Toward race-free process signaling”。在 5.2 集成版本中,内核又为 clone() 系统调用增加了一个 CLONE_PIDFD 选项,用于在创建子进程时返回该进程对应的 pidfd。为了满足 Android 系统中 low memory killer (LMK) 和一些服务管理工具,譬如 systemd 的需要,以便它们可以为采用传统方式创建的进程获取对应的 pidfd,Christian Brauner 又再次提出新增 pidfd_open() 这个系统调用,该系统调用传入进程号 pid,返回该进程关联的 pidfd 。这个新的系统调用有可能在 5.3 被合入内核主线。

另一个有可能新增的系统调用是 close_range(),它根据指定的 fd 范围关闭落在该范围内的所有打开的文件。这比在用户态通过循环方式逐个关闭速度要快得多。

Several new system calls have been proposed for addition to the kernel in a near-future release. A few of those, in particular, focus on memory-management tasks. Read on for a look at process_vm_mmap() (for zero-copy data transfer between processes), and two new APIs for advising the kernel about memory use in a different process.

关键词:system calls, memory-management

最近社区提出了几个新的系统调用,希望能够在近期版本中被添加到内核中。其中一些和内存管理工作有关:

  1. Kirill Tkhai 提出的 process_vm_mmap(),可以实现将一个进程的 VMA 克隆到另一个进程中(这期间会涉及对相应页表(page table)的克隆)。该系统调用可以提供类似于采用两个已存在的系统调用 process_vm_writev()process_vm_readv() 可以实现的功能,但效率会更高。
  2. Oleksandr Natalenko 提出在 /proc 中为每个进程新增一个用户接口文件 madvise,写入一些特定的关键字后可以起到调用 madvise() 的效果,譬如写入 merge ,等同于进程调用了 madvise(MADV_MERGEABLE)
  3. Minchan Kim 提出的 process_madvise(int pidfd, ......),通过 pidfd 指定某个进程并为该进程调用 madvise()

以上三个提案中,第三个似乎更受欢迎。

Ten years ago, transcendent memory was pushed as a way of enabling the system to make better use of available RAM. The developer of this concept left the kernel community years ago, though, and the concept has never quite taken off. In 5.3, it seems likely that most of the transcendent-memory code will be removed due to lack of maintainership. Some aspects of the frontswap mechanism are still used and will remain, though.

关键词:transcendent memory

十年前,为了能够更有效地利用内存,内核推出了 Transcendent memory 的概念。然而,由于相关开发者多年前就离开了内核社区,这个概念一直没有完全实现。考虑到相关代码缺乏必要的维护性,所以从 5.3 版本开始,大部分和 Transcendent memory 有关的代码可能都会被删除。尽管如此,与 frontswap 有关的代码由于仍然有人使用所以还会保留。

关键词:LSFMM, 2019

今年的 LSFMM 大会 (Linux 存储/文件系统/内存管理峰会) 于 4 月 30 日 ~ 5 月 2 日在 San Juan, Puerto Rico 举办。LWN 最近两期周刊对其进行了连续报道,泰晓科技对相关内容做了简要梳理并汇总给各位读者,具体内容请点击本条目标题链接。

  • 重要软件版本发布资讯

后续资讯将持续跟进重要软件的版本发布,本周的软件版本发布信息如下:

  1. Qemu 发布 v4.0.0, add micro:bit support
  2. U-Boot 发布 v2019.07-rc4
  3. Buildroot 发布 2019.05,Linux: Default to 5.1.x series
  4. Busybox 发布 1.31.0
  5. LLVM 发布 8.0.1-rc2
  6. GCC 发布 9.1
  7. Linux RT 发布 v5.0.19-rt11
  8. Rust 发布 1.35.0

联系我们

资讯内容部分来自 “LWN.net“。如果您对某些 LWN 文章感兴趣,请扫描二维码加微信联系我们:

tinylab wechat


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

Read Album:

Read Related:

Read Latest: