源于
https://kernelnewbies.org/Linux_4.3
1.删除Ext3文件系统
Ext3文件系统已经从liux核心代码删除。原因是Ext4支持已经可以替代Ext3,所以maintainers认为Ext3代码已经无用可以删除。
2.userfaultfd()用于处理用户空间缺页错误的系统调用
当进程map系统调用但是虚拟地址对应的物理地址未被分配是,内核会发生缺页中断处理这个问题。
这个版本提供userfaultfd()接口处理缺页。除了可以注册和取消注册虚拟地址以外,还提供两个主要功能:1)read/ POLLIN协议,用于通知用户空间线程故障发生;2)userfaultfd通过各种ioctls可以管理注册的虚拟地址,允许用户解决通过后台接收到的缺页错误或者在后台管理虚拟内存。userfaultfd主要用户是QEMU。
详细说明:
https://lwn.net/Articles/636226/
3.membarrier()
添加membarrier()系统调用支持,在多核系统可以分配内存访问所需要的内存屏障。
详细说明:
https://lwn.net/Articles/636226/
内核Documentation/vm/userfaultfd.txt
4.cgroup中限制PID数量的PID控制器
添加新的PID控制器去限制cgroup中可以fork的进程数量。PIDs是全局资源,相对于其他资源来说PID是微不足道的(可以忽视),因此它可能不受cgroup中其他策略限制,可能导致系统挂死,PID控制器旨在预防这种情况发生。
使用pids控制器时,在pids.max中设置最大任务数,当前在cgroup中的进程数由pids.current给出。要将cgroup设置为无限制,请将pids.max设置为“max”,这是所有新cgroup的默认值。
5.Ambient capabilities
Linux定义了多种capabilities可以执行各种特权任务,进程可以使用它们拥有的功能。每个任务有四种capability masks: “effective”, “permitted”, “inheritable”, and a “bounding set”。当内核检查一种capability时,会检查它的功能掩码。
由于Linux capabilities功能实现的缺陷,”inheritable”不是很有用。为解决这个问题,我们添加了第五种capability mask,叫做”ambient” mask。它主要完成”inheritable”的事情。
详细说明:
https://lwn.net/Articles/632520/
6.引入空闲页面跟踪功能,其可以更精确的跟踪应用程序使用的内存
了解任务正在使用的内存页以及哪些内存页空闲对于设置任务的负载属性非常有用。目前内核提供的空闲内存度量(唯一)接口是通过/proc/PID/clear_refs 和/proc/PID/smaps:用户可以通过写1清除映射到特定进程的所有页面的访问位clear_refs,等待一段时间,然后计算smaps。但是这种方法有两个严重的缺点:1)它不计算未映射的文件页面,2)它会影响回收器逻辑。
为了解决这些问题,此版本引入空闲页面跟踪功能。主要通过在/sys/kernel/mm/page_idle/bitmap设置相应的bits,可以通过bitmap监控空闲页的使用情况。
详细说明:
https://lwn.net/Articles/642202/
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/vm/idle_page_tracking.txt?id=33c3fc71c8cfa3cc3a98beaa901c069c177dc295