导读 | Linux的演进永不停歇。Linus Torvalds一直在努力工作,希望能够在新的内核版本当中(4.11)融入更多变化。不过在目前的Linux 4.10中,我们同样发现了三组能够有效提升性能并实现多种前所未有功能集的变更。 |
Linux的演进永不停歇。Linus Torvalds一直在努力工作,希望能够在新的内核版本当中(4.11)融入更多变化。不过在目前的Linux 4.10中,我们同样发现了三组能够有效提升性能并实现多种前所未有功能集的变更。
下面,我们将共同了解这些可能对您、您的云服务供应商以及Linux应用程序拥有重要影响的变化。
毫无疑问,GPU属于一类很难在虚拟机中成功模拟的硬件。一般来讲,虚拟机会提供它定制化的驱动程序(速度很慢),而图形调用则必须在访客与主机间进行翻译(速度很慢)。理想的解决方案自然是在访客系统内运行与主要相同的图形驱动程序,从而将一切必要调用直接指向GPU。
但单纯能够运行还远远不够,毕竟有些用户可能希望在虚拟机中运行《战地1》这样的大型游戏。这意味着每一种由GPU提供的资源——包括通过CUDA等库提供的GPU加速流程——皆可如常规非虚拟机设备一样运行在虚拟机内。
英特尔公司推出了一组处理器扩展,名为GVT-G,专门用于实现上述目标。然而直到Linux 4.10,我们才终于能够在操作系统层面对GVT-G加以支持。除了通过KVM支持此项功能(即KVMGT),英特尔还贡献了面向Xen与QEMU虚拟机管理程序的图形处理支持方案。
在内核中直接支持GVT-G意味着第三方产品能够在无需对内核进行调整的情况下对相关资源加以利用。这类似于Docker将一系列本地Linux功能转化为DevOps解决方案的作法,它们成功的根源在于此类特性适用于大多数现代Linux版本。
如今的CPU拥有强大的处理速度。然而,从主存储器内提取数据的速度限制了CPU的性能,因此我们需要利用缓存让数据尽可能与CPU贴近。除了缓存容量这一限制因素之外,以往的操作系统在缓存管理方面也存在短板。而Linux 4.10就此提供了多种新型技术与工具。
首先,Linux 4.10支持英特尔缓存分配技术(简称CAT),这项功能可用于Haswell及之后的芯片组。利用CAT,三级(及更高版本的二级)缓存空间可面向特定任务进行分配与保留,意味着特定应用缓存不会被其他应用所刷新。CAT还针对基于缓存的计时攻击提供一定程度保护——很明显,现代计算体系中的每一个角落都有可能被利用为攻击向量。
与这项特性一道出现的为perf c2c。这款新型系统工具适用于存在多个插槽且采取非均匀内存访问(简称NUMA)机制的系统。在这种情况下,各线程运行在不同CPU之上,因此可能由于试图修改同一内存区段而导致运行效率低下。Perf c2c能够有效解决这一性能问题,不过与CAT类似它同样只适用于英特尔处理器。
“从诞生以来,Linux通过进程将写入内存的数据同步至磁盘(即后台回写)机制就一直饱受诟病,”KernelNewbies.org在相关评论文章中指出。而在4.10版本中,该I/O请求队列会接受监控以把握其请求延迟,且那些可能造成更高延迟(特别高写入强度操作)的操作会被暂停以允许其他线程能够正常运行。
另一项作用大体相同的实验性功能为提供一套RAID5回写缓存(默认关闭),这意味着面向RAID5阵列内多块磁盘的写入操作可以进行合并。另一实验性功能混合块轮询(默认关闭)提供一种新的方式对数据吞吐量巨大的设备进行轮询。此类轮询有助于提升性能,但若轮询频率过高则可能引发麻烦;新的轮询机制能够确保实现性能提升但又不至于占用过多CPU资源。
上述调整可能会对云计算实例带来可观的积极影响。Amazon提供的多种实例类型就正好符合其适用范围,而内核层面的改进则能够在读取与写入操作之间带来更理想的平衡效果。因此可以肯定的是,Linux 4.10的这几项小小改变将受到整个技术业界的热烈欢迎。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/102647.html