Linux 4.10 将带来深远影响的三项小改变

Linux 4.10版本带来了虚拟化GPU、更出色的缓存控制技术和回写管理三项重大改进,这些更新有望大幅提升性能并解锁新功能。

导读Linux的演进永不停歇。Linus Torvalds一直在努力工作,希望能够在新的内核版本当中(4.11)融入更多变化。不过在目前的Linux 4.10中,我们同样发现了三组能够有效提升性能并实现多种前所未有功能集的变更。

Linux的演进永不停歇。Linus Torvalds一直在努力工作,希望能够在新的内核版本当中(4.11)融入更多变化。不过在目前的Linux 4.10中,我们同样发现了三组能够有效提升性能并实现多种前所未有功能集的变更。
下面,我们将共同了解这些可能对您、您的云服务供应商以及Linux应用程序拥有重要影响的变化。

1. 虚拟化GPU

毫无疑问,GPU属于一类很难在虚拟机中成功模拟的硬件。一般来讲,虚拟机会提供它定制化的驱动程序(速度很慢),而图形调用则必须在访客与主机间进行翻译(速度很慢)。理想的解决方案自然是在访客系统内运行与主要相同的图形驱动程序,从而将一切必要调用直接指向GPU。

但单纯能够运行还远远不够,毕竟有些用户可能希望在虚拟机中运行《战地1》这样的大型游戏。这意味着每一种由GPU提供的资源——包括通过CUDA等库提供的GPU加速流程——皆可如常规非虚拟机设备一样运行在虚拟机内。

英特尔公司推出了一组处理器扩展,名为GVT-G,专门用于实现上述目标。然而直到Linux 4.10,我们才终于能够在操作系统层面对GVT-G加以支持。除了通过KVM支持此项功能(即KVMGT),英特尔还贡献了面向Xen与QEMU虚拟机管理程序的图形处理支持方案。

在内核中直接支持GVT-G意味着第三方产品能够在无需对内核进行调整的情况下对相关资源加以利用。这类似于Docker将一系列本地Linux功能转化为DevOps解决方案的作法,它们成功的根源在于此类特性适用于大多数现代Linux版本。

2. 更出色的缓存控制技术

如今的CPU拥有强大的处理速度。然而,从主存储器内提取数据的速度限制了CPU的性能,因此我们需要利用缓存让数据尽可能与CPU贴近。除了缓存容量这一限制因素之外,以往的操作系统在缓存管理方面也存在短板。而Linux 4.10就此提供了多种新型技术与工具。

首先,Linux 4.10支持英特尔缓存分配技术(简称CAT),这项功能可用于Haswell及之后的芯片组。利用CAT,三级(及更高版本的二级)缓存空间可面向特定任务进行分配与保留,意味着特定应用缓存不会被其他应用所刷新。CAT还针对基于缓存的计时攻击提供一定程度保护——很明显,现代计算体系中的每一个角落都有可能被利用为攻击向量。

与这项特性一道出现的为perf c2c。这款新型系统工具适用于存在多个插槽且采取非均匀内存访问(简称NUMA)机制的系统。在这种情况下,各线程运行在不同CPU之上,因此可能由于试图修改同一内存区段而导致运行效率低下。Perf c2c能够有效解决这一性能问题,不过与CAT类似它同样只适用于英特尔处理器。

3. 回写管理

“从诞生以来,Linux通过进程将写入内存的数据同步至磁盘(即后台回写)机制就一直饱受诟病,”KernelNewbies.org在相关评论文章中指出。而在4.10版本中,该I/O请求队列会接受监控以把握其请求延迟,且那些可能造成更高延迟(特别高写入强度操作)的操作会被暂停以允许其他线程能够正常运行。

另一项作用大体相同的实验性功能为提供一套RAID5回写缓存(默认关闭),这意味着面向RAID5阵列内多块磁盘的写入操作可以进行合并。另一实验性功能混合块轮询(默认关闭)提供一种新的方式对数据吞吐量巨大的设备进行轮询。此类轮询有助于提升性能,但若轮询频率过高则可能引发麻烦;新的轮询机制能够确保实现性能提升但又不至于占用过多CPU资源。

上述调整可能会对云计算实例带来可观的积极影响。Amazon提供的多种实例类型就正好符合其适用范围,而内核层面的改进则能够在读取与写入操作之间带来更理想的平衡效果。因此可以肯定的是,Linux 4.10的这几项小小改变将受到整个技术业界的热烈欢迎。


本文转载自:http://www.linuxprobe.com/linux-410-changes.html

免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.linuxprobe.com/


### ESP32-C3 WiFi网卡通过MDIO连接到RV1126并在Linux 4.10系统下的配网教程 ESP32-C3是一款基于RISC-V架构的微控制器,支持WiFi和蓝牙功能。当其通过MDIO接口与RV1126(一种嵌入式视觉处理器)连接时,需要在特定的Linux内核版本(如4.10)下完成网络配置。以下内容详细描述了相关的配置步骤和技术细节。 #### 1. 硬件连接 ESP32-C3通过MDIO接口与RV1126进行通信。MDIO是一种用于管理以太网PHY设备的串行总线协议。确保硬件连接正确是第一步,具体包括: - 确保ESP32-C3的MDIO引脚与RV1126的对应引脚正确连接[^1]。 - 检查电源供应是否符合ESP32-C3的要求(通常为3.3V)[^2]。 #### 2. Linux内核配置 Linux 4.10内核需要支持ESP32-C3作为外部WiFi模块。以下是关键步骤: - **加载必要的驱动程序**:确保内核已启用`CONFIG_ESP_WIFI`选项,该选项支持ESP系列WiFi芯片[^3]。 - **配置网络子系统**:启用`CONFIG_MAC80211`和`CONFIG_CFG80211`选项以支持无线网络协议栈[^4]。 #### 3. 驱动程序开发 由于ESP32-C3可能未被直接支持,需要手动编写或移植驱动程序: - 使用Espressif提供的开源驱动代码作为基础[^5]。 - 在驱动中实现MDIO通信逻辑,确保能够正确初始化ESP32-C3并将其识别为网络设备[^6]。 #### 4. 网络配置 完成硬件和驱动配置后,需要在Linux用户空间进行网络设置: - 使用`iw`工具扫描可用的WiFi网络并连接: ```bash iw dev wlan0 scan iw dev wlan0 connect <SSID> key d:0:<password> ``` - 配置IP地址: ```bash ifconfig wlan0 192.168.1.100 netmask 255.255.255.0 up ``` #### 5. 测试连接 最后,测试网络连接是否正常: - 使用`ping`命令验证网络连通性: ```bash ping -c 4 www.google.com ``` - 如果连接失败,检查日志输出以定位问题: ```bash dmesg | grep wlan0 ``` ```python # 示例代码:简单检测网络接口状态 import os def check_network_status(interface): result = os.system(f"ping -c 1 -W 1 google.com > /dev/null 2>&1") if result == 0: print(f"{interface} is connected to the internet.") else: print(f"{interface} is NOT connected to the internet.") check_network_status("wlan0") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值