云计算基础-大页内存

大页内存功能概述

什么是大页内存

简单来说,就是通过增大操作系统页的大小来减小页表,从而避免快表缺失

主要应用场景

主要运用于内存密集型业务的虚拟机,比如对于运行数据库系统的虚拟机,采用HugePages(大页)后,可以提升数据库的整体性能(越20%),并有效减小性能抖动

内存基本概念

CPU访问内存时,是去通过寻址去访问内存的,寻址最终寻的是内存的物理地址,物理地址是通过虚拟地址映射出去的,在这里引入了一个内存管理单元,内存管理单元的核心思想是利用虚拟地址代替物理地址,内存管理单元将物理地址和虚拟地址按照固定大小分割成一个个页,或者叫页表,CPU在访问内存时,先访问虚拟地址,再到物理地址的一个访问过程

为了提高地址变换速度,可在地址变换机构中,增设一个具有并行查找能力的特殊高速缓存:块表(TLB:页表寄存器缓冲),用以存放当前访问的那些页表项,由于成本的关系,块表不可能做的很大,通常只存放16~512个页表项

页表存放在内存中,快表存放在高速缓冲曲,速度比内存快很多,当CPU访问内存时,尽可能命中高速缓存区的快表,从而提高虚拟机的寻址速度

为什么需要大页内存

在Linux操作系统上运行内存需求量较大的应用程序时,由于其采用的默认页面大小为4KB,因而将会产生较多的TLB miss和缺页中断,从而大大影响应用程序性能(也就是说,由于TLB大小考虑成本关系,一般最大也就512个页表,而操作系统默认页面大小为4K,如果此时虚拟机所需要的内存这512个页表放不下了,此时,就会向内存中的页表去寻址,此时虚拟机性能将会降低)

当操作系统以2MB甚至更大作为分页的单位时,将会大大减少TLBmiss和缺页中断的数量,显著提高应用程序的性能,这也正是Linux内核引入大页面的直接原因(原本一个页对应4KB的内存,虚拟机需要访问8KB的内存时,就需要占用两个快表,修改默认页大小为2MB时,虚拟机访问2MB的内存页仅仅占用1个快表)

TLB存储极限时,就会发生TLB Miss,之后,OS就会命令CPU去访问内存的页表,如果频繁的出现TLB miss,程序的性能会下降的很快,为了让TLB可以存储更多的页地址映射关系,我们的做法是调大内存分页大小

简单描述

CPU是通过寻址去访问内存的,内存的地址也是保存在内存中的,但CPU的速度要比内存速度快非常多,为了提高CPU的寻址速度而新增了一个模块:TLB(页表寄存器缓冲),以加速CPU的寻址速度,CPU在访问内存时优先在TLB中查找内存地址,当TLB中找不到内存地址时才会去内存中查找,由于成本的关系,块表不可能做的很大,通常只存放16~512个页表项。

一般情况下,内存默认页面大小为4KB,即使512个页表项也放不了多少内存地址,如果CPU在TLB中没有查询到内存地址就会去内存中去查找,从而产生TLB miss,虚拟机性能依旧无法得到最大的提升。

而大页内存就是将将传统的小页面(通常为4KB)替换为更大的页面(通常为2MB或更大),每个页表项对应的物理内存范围也更大,因此可以减少页表项的数量,从而降低TLB miss 的概率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/258720.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache Httpd 常见漏洞解析(全)

一、Apache HTTPD 换行解析漏洞 漏洞编号:CVE-2017-15715 Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。 其2.4.0~2.4.29版本中存在一个解析漏洞。 在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过…

【JS逆向+Python模拟API请求】逆向某一个略微中等的混淆网站,并模拟调用api请求 仅供学习。注:不是源代码混淆,而是一个做代码混淆业务的网站,

逆向日期:2024.02.16 使用工具:Node.js 加密方法:RSA标准库 文章全程已做去敏处理!!! 【需要做的可联系我】 AES解密处理(直接解密即可)(crypto-js.js 标准算法&#xf…

typescript环境搭建,及tsc命令优化

typescript typescript. 是一种由微软开发的 开源 、跨平台的编程语言。. 它是 JavaScript 的超集,最终会被编译为JavaScript代码。. TypeScript添加了可选的静态类型系统、很多尚未正式发布的ECMAScript新特性(如装饰器 [1] )。. 2012年10月…

六、Datax通过json字符串运行

Datax通过json字符串运行 一、场景二、代码实现 一、场景 制作一个web应用,在页面上配置一个json字符串,保存在数据库里面。在执行json的时候,动态在本地创建一个json文件后执行,并识别是否成功,将执行过程保存在数据…

【Webpack】处理字体图标和音视频资源

处理字体图标资源 1. 下载字体图标文件 打开阿里巴巴矢量图标库open in new window选择想要的图标添加到购物车,统一下载到本地 2. 添加字体图标资源 src/fonts/iconfont.ttf src/fonts/iconfont.woff src/fonts/iconfont.woff2 src/css/iconfont.css 注意字体…

【教程】C++语言基础学习笔记(八)——函数

写在前面: 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持! 【C语言基础学习】系列文章 第一章 《项目与程序结构》 第二章 《数据类型》 第三章 《运算符》 第四章 《流程控制》 第五章…

电商小程序09活动管理

目录 1 创建数据源2 详情页面搭建3 首页轮播图搭建4 最终的效果5 总结 商家在日常运营中经常需要通过活动来进行推广和促销,我们在小程序中也需要考虑这部分的业务。本节我们讲解一下微搭低代码中如何实现活动的功能。 1 创建数据源 展示信息需要将信息存储到数据源…

【Linux系统化学习】文件重定向

目录 文件内核对象 文件描述符的分配规则 重定向 重定向的概念 dup2系统调用 输出重定向 追加重定向 输入重定向 stderr解析 重定向到同一个文件中 分离常规输出和错输出 文件内核对象 上篇文章中我们介绍到了操作系统中的文件,操作系统为了方…

代码随想录算法训练营第31天|● 理论基础 ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和

文章目录 理论基础分发饼干思路:代码: 摆动序列思路一 贪心算法:代码: 思路二:动态规划(想不清楚)代码: 最大子序和思路:代码: 理论基础 贪心算法其实就是没…

开关电源电路主要元器件基础知识详解

在学习电子电路过程中,电源我们无法绕开的一个重要部分,很多时候,故障就出现在电源部分,特别是开关电源。开关电源电路主要是由熔断器、热敏电阻器、互感滤波器、桥式整流电路、滤波电容器、开关振荡集成电路、开关变压器、光耦合…

Slider滑动输入条(antd-design组件库)简单使用

1.Slider滑动输入条 滑动型输入器,展示当前值和可选范围。 2.何时使用 当用户需要在数值区间/自定义区间内进行选择时,可为连续或离散值。 组件代码来自: 滑动输入条 Slider - Ant Design 3.本地验证前的准备 参考文章【react项目antd组件-de…

linux系统下vscode portable版本的c++/Cmake环境搭建002:使用 VSIX 安装VSCODE插件(暂记)

使用 VSIX 安装VSCODE插件 在 Visual Studio Code (VSCode) 中,你可以通过以下步骤离线安装插件: 获取插件的 VSIX 文件: 在一个联网环境中,访问 Visual Studio Code Marketplace,搜索并找到你想要的插件。 比如&am…

1Coze平台介绍

2023年随着OpenAI推出GPT 3.5,AI赛道变得更加火热。GPT(Generative Pre-trained Transformer)是一种自然语言处理(NLP)模型,用于生成文本、理解语言和进行各种语言任务。GPT是由OpenAI开发的,它…

【Linux系统化学习】缓冲区

目录 缓冲区 一个样例 现象解释 缓冲区存在的位置 缓冲区 在刚开始学习C语言的时候我们就听过缓冲区这个名词,很是晦涩难懂;在Linux下进程退出时也包含缓冲区,因此缓冲区到底是什么?有什么作用? 让我们先从一个小…

拿捏c语言指针(上)

目录 前言 ​编辑 指针 内存与地址 计算机常见单位 理解编址 取地址,指针变量,解引用 取地址 指针变量 解引用 指针变量大小 指针类型的作用 char*解引用后 指针-整数 应用 void*指针 const修饰指针变量 const修饰普通变量 const修饰指…

【计算机网络】网络层之IP协议

文章目录 1.基本概念2.协议头格式3.网段划分4.特殊的IP地址5.IP地址的数量限制6.私有IP地址和公网IP地址7.路由 1.基本概念 IP地址是定位主机的,具有一个将数据报从A主机跨网络可靠的送到B主机的能力。 但是有能力就一定能做到吗,只能说有很大的概率。…

高校疫情防控系统的全栈开发实战

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

Django学习全纪录:Django开发环境的搭建

导言 对于Django,它是Python的一个开发框架,之前系统地学习过。遗憾的是,对于一些遇到的问题,没有及时地记录下来。因此,我将它重新捡起,进行学习和实践。从搭建环境开始,重新去学习它&#xff…

使用Taro开发鸿蒙原生应用——快速上手,鸿蒙应用开发指南

导读 本指南为开发者提供了使用 Taro 框架开发鸿蒙原生应用的快速入门方法。Taro,作为一个多端统一开发框架,让开发者能够使用一套代码同时适配多个平台,包括鸿蒙系统。文章将详细介绍如何配置开发环境,以及如何利用 Taro 的特性…

如何在CSS中实现背景图片的渐变?

--引言 在CSS中,实现背景图片的渐变通常需要使用linear-gradient或者radial-gradient函数,这些函数可以与背景图像一起使用来创建渐变效果。然而,CSS的渐变并不直接支持使用图像作为渐变的颜色停止点。但你可以通过一些技巧来实现类似的效果…