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

news2024/10/6 8:30:44
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.coloradmin.cn/o/660945.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

0006-TIPS-2020-hxp-kernel-rop : bypass-KASLR-with-offset_leak

内核默认加载地址(不开启KASLR) kernel text mapping 在内核linux-5.9/Documentation/x86/x86_64/mm.rst文档中记录了 x86_64虚拟地址空间布局 其中0xffffffff80000000~0xffffffff9fffffff用于存放内核代码段、全局变量、BSS等 ffffffff80000000 | -…

华为OD机试真题 JavaScript 实现【字符串序列判定】【2022Q4 100分】,附详细解题思路

一、题目描述 输入两个字符串a和b&#xff0c;都只包含英文小写字母。a长度<100&#xff0c;b长度<500,000。 判定a是否是b的有效子串。 判定规则&#xff1a; a中的每个字符在b中都能找到&#xff08;可以不连续&#xff09;&#xff0c;且a在b中字符的前后顺序与a中…

【SQL应知应会】分析函数的点点滴滴(一)

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习&#xff0c;有基础也有进阶&#xff0c;有MySQL也有Oracle 分析函数的点点滴滴 1.什么是分析函数&#xff1a;…

万字详解常用设计模式

本文是博主在工作中对常用设计模式的使用经验总结归纳而来分享给大家。 设计模式一共有23种&#xff0c;本文讲解涉及如下&#xff1a; 责任链模式 模板方法模式 发布订阅模式 策略模式 三大分类 业界一般将设计模式分为三大类&#xff1a; 创建型模式&#xff1a;对类的实…

chatgpt赋能python:Python怎样调字体大小以及优化网站SEO

Python怎样调字体大小以及优化网站SEO 在现代网络时代&#xff0c;网站的排名和SEO越来越受到关注。有一些关键词和技巧可以用来在搜索引擎排名中获得好的位置。其中一个技术是调整字体大小。在本文中&#xff0c;我们将深入探讨如何使用Python调整字体大小&#xff0c;并进一…

chatgpt赋能python:Python如何随机产生多个随机数?

Python如何随机产生多个随机数&#xff1f; Python是一种高级编程语言&#xff0c;它的随机数生成器是其强大的功能之一。在本文中&#xff0c;我们将学习如何使用Python随机数生成器生成多个随机数。 基本概念&#xff1a;随机数生成器 随机数生成器是一种算法或物理设备&a…

【Python】APScheduler定时调度库

文章目录 APScheduler是什么功能特点四大组件触发器[triggers]date 一次性触发器interval 间隔触发器cron 周期触发器 任务存储器[JobStore]MemoryJobStoreMongoDBJobStoreRedisJobStore示例代码 RethinkDBJobStoreSQLAlchemyJobStoreZooKeeperJobStore 执行器[executors]线程池…

chatgpt赋能python:Python如何隐藏进程

Python如何隐藏进程 介绍 进程是指运行中的程序在操作系统中的一个实例。在计算机系统中&#xff0c;进程通常都可以被用户或者其他程序所看到。然而&#xff0c;有时候我们需要隐藏进程&#xff0c;比如保护敏感信息或者防止恶意攻击。 Python是一种高级编程语言&#xff0…

Maven学习笔记(SSM 整合伪分布式案例)

目录 第一节 创建工程&#xff0c;引入依赖 1 创建工程 ①工程清单 ②工程间关系 2、各工程 POM 配置 ①父工程 ②Mybatis 逆向工程 ③环境依赖工程 ④工具类工程 ⑤实体类工程 ⑥组件工程 ⑦Web 工程 第二节 搭建环境&#xff1a;持久化层 1、物理建模 2、Myba…

leetcode算法 -- 数组

1 数组 常见的数组算法有双指针&#xff0c;滑动窗口&#xff0c;二分查找和分冶。 2 双指针 核心的思路&#xff1a;使用两个指针&#xff0c;一个从头开始索引&#xff0c;一个从尾开始索引。 2.1 两数之和ii 167 给你一个下标从 1 开始的整数数组 numbers &#xff0c;该…

chatgpt赋能python:Python怎么随机生成一个数

Python怎么随机生成一个数 在Python编程中&#xff0c;经常有需要随机生成一个整数的需求&#xff0c;比如在游戏中生成随机的道具&#xff0c;或者在数据分析中进行随机采样。 Python中提供了一个内置的random模块&#xff0c;可以方便地实现随机生成一个数。 使用random模…

【Windows】虚拟串口工具VSPD6.9安装

【Windows】虚拟串口工具VSPD6.9安装 1、背景2、安装3、补丁4、验证5、下载 1、背景 参考【Windows】虚拟串口工具VSPD7.2安装。 本博客安装的版本是VSPD6.9&#xff0c;并在文末留下下载链接&#xff0c;以供学习研究。 虚拟串口工具一般用来做上位机软件的串口通信调试&…

Java性能权威指南-总结14

Java性能权威指南-总结14 堆内存最佳实践对象生命周期管理对象重用 堆内存最佳实践 对象生命周期管理 在很大程度上&#xff0c;Java会尽量减轻开发者投入到对象生命周期管理上的精力&#xff1a;开发者在需要的时候创建对象&#xff0c;当不再需要这些对象时&#xff0c;它们…

C++11新特性之右值引用

目录 前文 一&#xff0c;什么是右值引用&#xff1f; 二&#xff0c;左值引用和右值引用比较 三&#xff0c;右值引用的应用场景以及作用 四&#xff0c; 右值引用左值的场景分析 五&#xff0c;完美转发 总结 前文 在C98标准后&#xff0c;C11标准的更新为C注入了新活力&…

chatgpt赋能python:Python如何生成100个随机整数

Python如何生成100个随机整数 在Python中&#xff0c;我们可以使用random库来生成随机整数。在本文中&#xff0c;我们将介绍如何使用Python生成100个随机整数。 什么是随机整数 随机整数是指在一定范围内&#xff0c;产生的整数是随机的且不重复的。这在数据分析、机器学习…

2. CSS的元素显示模式

了解元素的显示模式可以更好的让我们布局页面. 1.什么是元素的显示模式 2.元素显示模式的分类 3.元素显示模式的转换 2.1什么是元素显示模式 作用:网页的标签非常多&#xff0c;在不同地方会用到不同类型的标签&#xff0c;了解他们的特点可以更好的布局我们的网页。 元素显示…

chatgpt赋能python:如何在Python中创建模块:完整指南

如何在Python中创建模块&#xff1a;完整指南 如果你是一位Python开发者&#xff0c;你肯定需要用到模块。模块使得代码更容易组织和管理&#xff0c;并且可以复用许多代码片段&#xff0c; 提高代码的可重用性。在Python中&#xff0c;模块是一组相关函数&#xff0c;方法和变…

[论文笔记]End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF

引言 本文是论文End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF的阅读笔记。 本论文提出了一个受益于单词级(word)和字符级(character)表示的网络架构,通过组合双向LSTM,CNN和CRF。 简介 首先通过CNN编码一个单词的字符级信息到相应的字符表征。然后组合…

【C数据结构】动态顺序表_SeqList

目录 【1】数据结构概述 【1.1】什么是数据结构&#xff1f; 【1.2】数据结构分类 【1.3】数据结构术语 【2】数据结构特点 【2】动态顺序表 【2.1】动态顺序表定义数据结构和接口 【2.1】动态顺序表创建初始化 【2.2】动态顺序表初始化 【2.3】动态顺序表内存释放 【…

【Express.js】处理请求数据

处理请求数据 本节将具体介绍express后端处理请求源携带数据的一些方法和技巧 动态路径 很多时候我们需要处理一些类似但有操作差别或不同对象的业务&#xff0c;我们可以监听一段基本路径&#xff0c;将其中某一个段或者某几段路径作为变量&#xff0c;在接口中根据不同的路…