Linux 3.14
工作重心转向 Linux 内核及 mainline 中的虚拟化技术,所以会持续关注内核的发展 :-D
Linux 3.14 于3月30日发布,澳洲时间是3月份的最后一天,囧
3.14 中的显著特性:
- 添加了 Deadline scheduling 调度器
在SCHED_FIFO先进先出和SCHED_RRround-robin 循环的基础上添加了 SCHED_DEADLINE 以便于更有效地处理 real-time 任务。有别于传统进程优先级的概念 deadline 提供了{runtime,period,deadline}三个参数。
简单的说(不翻译了,比较拗口): ASCHED_DEADLINEtask is guaranteed to receive “runtime” microseconds of execution time every “period” microseconds, and these “runtime” seconds are available within “deadline” microseconds from the beginning of the period. 详细的文档见 Documentation/scheduler/sched-deadline.txt zram内存压缩机制已稳定zram和 3.11 中加入的zswap是两码事。zram 把内存作为块设备来用,所有写入的数据都会被压缩。若 zram 块设备被当作 swap 使用,相当于系统压缩要 swap out 到磁盘的内存。可以作小内存系统的内存压缩机制,以提高系统的响应速度。已使用 zram 的有 Android 4.4, CyanogenMod, Chrome OS 等。- Btrfs 增加了 inode 属性,多个新的挂载选项,以及在
/sys/fs/btrfs发布文件系统内部实现信息(部分可直接改)
以 xattrs 的形式给 inode 增加 key - value pair 属性,用来保存属性,这些属性是可以被继承的。3.14 中只加入了 compression 属性,值可以是lzo或zlib
添加了挂载选项:{barrier,datacow,datasum,noautodefrag,nodiscard,noenospc_debug,noflushoncommit,noinode_cache,treelog}
在/sys/fs/btrfs下发布内部实现信息,其中部分是可以直接 on the fly 修改的。 - Userspace locking validator
实现了在用户空间内运行 Linux locking validator 这样的话就可以 debug 用户空间程序的锁问题。 - 内核地址空间随机化
允许在解压缩内核时随机化物理和虚拟地址空间,目的是为了杜绝依赖内核内部实现/地址空间的攻击。 - TCP automatic corking
当应用程序连续做小碎片write()/sendmsg()系统调用时 Linux 内核会尽可能尝试合并这些小碎片来减少发出包的数量。参数/proc/sys/net/net/ipv4/tcp_autocorking用来控制这一特性,默认开启。 - Core
kexec 可以被禁用,参数为 kexec_load_disabled
swap - 加入了一个简单的机制来检测不恰当的 swapin readahead 主要是针对 SSD
sysfs / kernfs - 核心的 sysfs 实现将被分离到 kernfs 这样的话其它 non-kobject 用户也可以使用
cpufreq - 在 cpufreq core 中添加软硬件 boot frequency 支持 - 内存管理
/proc/meminfo提供了 MemAvailable - 并非简单将 free 和 cached 相加,这样的计算方法是错误的,因为 Cached 中包括没法释放的内存(例如 tmpfs ramfs 共享的内存区段等),且不包括 reclaimable slab memory 。现在的估算可为新应用使用的物理内存的方法是 MemFree + Active(file) + Inactive(file) + SReclaimable +/proc/zoneinfo中的 low watermarks
改进了文档中对于 swappiness = 0 的解释 -> A value of 0 instructs the kernel not to
initiate swap until the amount of free and file-backed pages is less
than the high water mark in a zone. 详见: Documentation/sysctl/vm.txt - 网络(实在太多,只挑了几个)
net-gre-gro - 给 GRO stack 添加 GRE 支持
给 UDP 封装协议添加 GRO 支持
给 vxlan traffic 添加 GRO 支持
numa - 添加了 systcl 参数/proc/sys/kernel/numa_balancing用来在运行时开关 numa memory balancing 特性
netfilter - nftables 进化中
bonding - 添加 netlink 属性支持,为 bond slave 在 sysfs 中添加/sys/class/net/<interface>/slave目录,添加了 Ip_internal 参数来调整 bonding 驱动向 slaves 发送 learning packets 的间隔(默认为1秒) - Xen 相关的虚拟化改进
xen/pvh - 支持 ParaVirtualized Hardware Extension (v3)
xen-netfront - 添加 ipv6 offloads 支持
xen/events - 为 FIFO-based event channels 添加了 hypervisor 接口
为 ARM 架构添加 balloon 支持 - 添加 AMD Cryptographic Coprocessor 支持,加速加密操作
注:看了一个星期才把绝大部分新变动看完,大部分都是看了相关的 git commits 后才明白是什么东西。其实也算是不可多得的学习机会,希望自己能坚持下去 :-D