Linux 4.5

Linux 4.5 于 UTC-7 3月13日发布,代号是 Blurry Fish Butt

Prominent features / 显著特性

  • copy offloading with new copy_file_range(2) system call

    copy_file_range(2) 新系统调用,可避免在复制文件时通过用户空间传输数据的开销。该系统调用只比 cp 稍快,因为复制内存的开销相对于实际 I/O (瓶颈)来说都可以忽略不计。但对某些用例则非常有意义,比如 NFS 复制文件,直接在服务器端完成(需要 NFS v4.2 的服务端复制特性),避免了不必要的网络数据传输。

    下一个内核版本中,本地文件系统,如 Btrfs 以及那些能提供 copy offloading 的存储设备,可以利用该系统调用来优化数据复制,或移除一些现存的限制。

  • Btrfs free space handling scalability improvements

    文件系统需要追踪已使用和可用的空闲块,还需要将这些信息存储起来,因为每次都重新生成开销太大。
    Facbook 实习生发现 Btrfs 的 free space caching 机制存在瓶颈,数据量超过 30TiB 时写入时间过长。然后就重新实现了一个更快更高效的 free space tree 不过 4.5 中默认不启用,挂载时加 -o space_cache=v2 选项来启用。

  • Support for GCC’s Undefined Behavior Sanitizer (-fsanitize=undefined)

  • Forwarded Error Correction support in device-mapper varity target

    device-mapper 的 verity target 通过使用 hash 给 block device 提供一致性检查。

    Linux 4.5 中加入的 Forward Error Correction 使得从数个连续数据块(轻度)损坏恢复数据成为可能。预先生成的纠错数据块(相对较小的空间开销)可以被用来重建损坏的数据块。类似的黑科技被使用在 DVD 硬盘和卫星传输中。

  • add MADV_FREE flag to madvise(2)

    madvise(2) 系统调用,进程调用之来通知内核它们将要如何使用内存,允许内核优化内存管理来实现更好的整体性能。

  • Better epoll multithread scalability

  • cgroup unified hierarchy 进入稳定状态

    cgroups 也被叫做 control groups 是 2.6.24 引入的特性,允许给运行中的系统上用户定义的进程组分配资源(处理器时间,系统内存,网络带宽等)。

    4.5 中 cgroups 统一层次结构进入稳定状态,可通过 cgroup2 文件系统类型挂载。注意:此版本中 CPU controller 未完成,目前只有 memory 和 io controllers 可用。具体参见 Documentation/cgroup-v2.txt

  • SO_REUSEPORT UDP sockets 性能改进

  • Proper control of socket memory usage in the memory controller

    The new unified memory controller will account all types of memory pages (anonymous memory, page cache, and the socket buffers) it is tracking on behalf of a cgroup in a single pool.

Memory Management / 内存管理

  • /proc/<pid>/status

    VmRSS 细分为 RssAnon, RssFile, RssShmem 分别代表 private anonymous pages, mapped regular files (映射到内存中的普通文件)和 shmem.

  • /proc/<pid>/smaps

    Linux 4.4 and prior always shows Swap: 0 kB for shmem-backed mappings, even if the mapped portion does contain shmem-backed pages that were swapped out. This release accounts for shmem swap.

Networking

网络方面的改进太多了,不一一列举,下面是几个个人感兴趣的

  • add generic device polling support for all drivers that support NAPI, instead of requiring specific support in each driver

  • IPv4 Make TCP keepalive settings per-namespace

  • Add cgroup2 support to iptables

  • Lots of new nftables features

  • Add 802.3ad (LACP) support for 100G speeds

Virtualization

  • Xen 的 xen-blkback (backend driver) 被转换成了 multiqueue 的,虚拟机的 PV 驱动 xen-blkfront 将会看到 dom0 有多个 xen-blkback 后端,这是利用 Linux 3.16 中加入的 blk-mq 来提高整体 I/O 性能。

完整的列表详见:http://kernelnewbies.org/Linux_4.5