linux内存--大内存页(大页)

article/2025/8/24 14:01:54

        linux 的内存管理是以页为单位进行管理的,标准的页大小是4kb,也就是4096字节。而linux允许配置定义更大大小的页。例如2M,1G,这就是大内存页。

        

1、大内存页(WHAT)

        大内存页就是页的大小更大,例如可以配置 2M,1G大小的页。

        这里要注意,大页内存分配的是物理内存,不会被操作系统的内存管理换出到磁盘上,这部分内存相当于是被预留

        也就是大页内存类似专用内存,会从系统中抠出一块大内存(pagesize*nr_pages),而想要使用这块内存,应用程序必须修改程序,使用上述几种方式来使用大页。 其次,如果程序内存使用较少,却申请了大页,也会造成内存浪费。

2、为何使用大内存页(WHY)

       使用大页可以减少访问页表条目所需的系统资源量来提高系统性能。

       linux中,每个进程都有一个完整的虚拟内存地址,进程访问虚拟内存地址,内核通过页表(映射虚拟内存地址到物理内存地址)访问真正的物理内存地址。

        所以,对于每个页的访问,都需要内核加载相关的映射,而这个动作是有一定消耗的。

        当一个进程需要大量内存的时候,例如1G,那么就会有262144页,也会在页表中占用262144个页表项,而TBL无法缓存这么多页表项,于是会出现大量未命中的情况,就只能去加载页表,导致性能下降。

        如果使用2M的大内存页,那么就只需要512页,也只需要512个页表项,可以大大增加TBL的命中率,提高进程性能。

        (注释:

        TLB是一个内存管理单元,用于改进虚拟地址到物理地址转换速度的缓存

        TLB是一个小的,虚拟寻址的缓存,其中每一行都保存着一个由单个PTE(Page Table Entry,页表项)组成的块。如果没有TLB,则每次取数据都需要两次访问内存,即查页表获得物理地址和取数据。

        TLB的大小是4KB)

3、如何配置大内存页(HOW)

3.1、配置memlock

        memlock是最大锁定内存地址空间(kb) 。

        memlock参数指定用户可以锁定其地址空间的内存量。而打野内存就是已锁定在物理内存中。

        编辑/etc/security/limits.conf配置memlock,配置的值比你服务器的内存稍微小一点

        例如服务器内存是2G,我这里配置的是1900000

* soft memlock 1900000
* hard memlock 1900000

        然后重新登录服务器,用 ulimit -l 命令就可以看memlock的值已经生效

3.2、配置大内存页

         cat /proc/meminfo |grep -i HugePage 查看大页配置情况

        对应参数的意义:

HugePages_Total: 0 总共大页数目

HugePages_Free: 0 空闲数目

HugePages_Rsvd: 0 预留数目

HugePages_Surp: 0

Hugepagesize: 2048 kB

        修改配置文件 /etc/sysctl.conf 添加如下参数

vm.nr_hugepages = 10

        然后sysctl -p生效配置,这个时候再查看大页配置,会发现已经生效

         cat /proc/meminfo |grep -i HugePage

4、应用举例

        1、一般oracle会使用到

        2、我所在的公司,宿主机分配kvm的场景中,给宿主机也配置使用了大页内存

欢迎关注我的公众号:龙叔运维

持续分享运维经验


http://chatgpt.dhexx.cn/article/hYa0cKqm.shtml

相关文章

JDK编译

重温下Jdk源码。。先来看下如何编译JDK,我用的环节是centos 其实很简单 大同小异。。 在openjdk官网:http://hg.openjdk.java.net/jdk8u下载的openjdk8u60版本 cd到下载的目录然后执行 bash ./configure --with-target-bits64 --with-boot-jdk机器上的…

java-如何反编译

Java内置的反编译工具 进入需要反编译的class文件夹输入cmd,打开命令行输入javap -p 类名称.class JAD反编译工具 进入需要反编译的class文件夹把jad.exe放在class文件的同级目录下输入cmd,打开命令行输入jad -sjava 类名称.class同级目录下会生成一个反编译的java文件

JAVA编译器eclipse的安装教程

一.JAVA虚拟机安装 链接:https://pan.baidu.com/s/1jsEUDpWnbelujF9bs6ggwQ 提取码:f6s3 二.eclipse下载安装 eclipse官网下载地址: 点我点我点击“Download Packages" 将会出现以下几个packages 3.大家需要选择适合自己系统的编译器…

Java 编译执行

五,编译执行 1,程序结构 一个.java程序文件中必须有且只有一个public类,该类必须有一个声明为main函数作为程序入口。 并且这个main函数需要声明为 public static void 类型,即静态的,公开的,返回值为空的函数类型。 并且这个java程序的文件名必须和这个public类名保持一…

Java反编译工具

1、编译和反编译 (1)编译:将源文件(.java)转换成字节码文件(.class)的过程称为编译。 (2)反编译:将字节码文件(.class)转换回源文件(.java)的过程称为反编译。 2、反编译工具jad和FrontEnd Plus &#…

Java的编译原理

目录 概述Java中的前端编译 解析与填充符号表插入式注解处理器语义分析与字节码生成Java中的后端编译 编译器与解释器编译对象与触发条件编译过程Java的后端编译优化技术 公共子表达式消除数组边界检查消除方法内联逃逸分析参考资料 概述 java语言的"编译期"分为前…

Java反编译

反编译的过程与编译刚好相反,就是将已编译好的编程语言还原到未编译的状态,也就是找出程序语言的源代码。就是将机器看得懂的语言转换成程序员可以看得懂的语言。Java语言中的反编译一般指将class文件转换成java文件。 Java常用反编译工具 本文主要介绍…

编译 java_如何编译java

展开全部 用命令32313133353236313431303231363533e58685e5aeb931333337613139提示符编译java程序的步骤: 1.先新建文本文档,输入自己的java程序。 这里我写一个简单的java程序,来做示范。 import java.util.*; public class HelloDate{ publ…

Java是如何编译运行的?

先看一个示例: public class Hello {public static void main(String[] args){System.out.println("Hello World !");Test test new Test();test.print();} } class Test{void print() {System.out.println("Hello Java !");} }如果源文件有多…

Java| 编译和反编译

什么是编程语言? 在介绍编译和反编译之前,我们先来简单介绍下编程语言(Programming Language)。编程语言(Programming Language)分为低级语言(Low-level Language)和高级语言(High-…

安装java编译器

安装JDK。 参考:https://www.cnblogs.com/mr-wuxiansheng/p/6850437.html 1.官网下载 Java SE Development Kit 13.0.1 (由于是访问国外网站,所以会比较慢。) 最好下载EXE版本的,这样什么都不用管,点安装…

java编译和运行

java应用程序的基本结构编写源文件保存源文件额外附加编译器(javac.exe)解释器(java.exe) 总结: 假如我的B.java源文件在C:\Users\AUSU\Desktop\ts里面 一般都是进入到这个目录里面编译解释 编译:javac …

java如何编译运行?

对于一个Java开发者来说我们编写的程序肯定是要运行才能体现出作用来,对于新手同学来说你知道如何去编译和运行一个Java程序吗?小千今天就来告诉大家,步骤很详细带好小本本哦。 Java程序编译运行步骤 1.首先我们在windows环境下需要安装好Jav…

JVM(一)一文读懂Java编译全过程

一文读懂Java编译全过程 java代码首先要通过前端编译器编译成.class字节码文件,然后再按一定的规则加载到JVM(java 虚拟机)内运行,有三种运行方式,解释模式(javac)、编译模式(C1 JIT…

无需插件修改chrome浏览器UA标识为手机版

可能在手机上我们可以很方便的操作将网页的UA设置为电脑版或者是其他的,但是在电脑上一般没有直接的操作修改,网上的经验也一般为使用User-Agent Switcher 插件,修改。其实使用开发者工具就已经能够很方便的修改UA了 首先在对应的页面按下F12&#xff0c…

使用PC端谷歌Chrome浏览器浏览手机网页 修改PC端谷歌Chrome浏览器UA

废话不多说直接上干货(快下班了): 1.进入你想要审查元素的网站,比如www.baidu.com; 2.按F12召唤开发者窗口; 3.点击下图框出来的三个点: 4.点击下图框出来的选项: 5.将下面框选住…

【测试】抓包获取浏览器UA,并使用Chrome 调试工具模拟手机

抓包获取浏览器UA 首先需要先安装charles,在http的请求头当中可以看到User-Agent,复制该User-Agent的内容 如果你是前端开发,也可通过以下代码获取UA $(‘body’).html(navigator.userAgent);构造UA 然后打开chrome浏览器的调试工具&…

自定义浏览器UA标识

正文 手机浏览器改成下面这段,可以享受到百度的纯净浏览。 Mozilla/5.0 (Linux; U; Android 10; zh-CN; 2014811 Build/QQ3A.200805.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.2564.116 Quark/3.8.2.126 Mobile Safari/537.36 T7/10.…

修改浏览器UA的作用汇总

1.浏览器标识(UA) 可以使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件,从而判断用户是使用电脑浏览还是手机浏览,让网页作出自动的适应。    可理解为网站通过…

一篇文章带你了解清楚什么是UA

最近在做一部分的UA的统计、正好做下记录、有需要的同学也可以借鉴一下 一、首先讲一下UA是什么 UA,全称为“User Agent”,中文通常直译为“用户代理”,但从其产生作用的机制来看,或许称之为“浏览器标识”或“浏览器名片”更为妥…