linux hugepages

embedded/2024/10/15 22:27:38/

使用HugePages的优点:

HugePages是Linux内核的一个特性,使用hugepage可以用更大的内存页来取代传统的4K页面。使用HugePage主要带来以下好处:

1. HugePages 会在系统启动时,直接分配并保留对应大小的内存区域。

2. HugePages 在开机之后,如果没有管理员的介入,是不会释放和改变的。

3. 大大提高了CPU cache中存放的page table所覆盖的内存大小,从而提高了TLB命中率。

4. 没有swap,永远常驻在内存中,所以也减少了内存页交换的额外开销。

5. 降低walk page table的长度: 由于大页的页表级数(PGD PUD PMD)比普通页面级数(PGD PUD PMD PTE)小1,所以在走表时会高效一些。(以普通页面是四级页表为例)。

使用HugePages的缺点:

使用hurgepages的内存不能被其他的进程使用,所以,一定要合理设置这个值,避免造成浪费。使用超过8G物理内存的系统,有人推荐使用HugePage。

1、可能需要对应用程序进行改造:对于传统巨页,必须使用特定的方式使用。详情参考巨页内存的类型及使用方式。

2、可能导致内存浪费:如果程序使用内存小,却申请了大页内存,会造成内存浪费,因为内存分配最小单位是页。

查看hurgepages的信息:

通过执行:cat /proc/meminfo | grep Huge

HugePages_Total:    1024
HugePages_Free:     1024
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

这些字段的意思如下。
(1)HugePages_Total:巨型页池的大小。
(2)HugePages_Free:巨型页池中没有分配的巨型页的数量。
(3)HugePages_Rsvd:“Rsvd”是“Reserved”的缩写,意思是“预留的”,是已经承诺从巨型页池中分配但是还没有分配的巨型页的数量。预留的巨型页保证应用程序在发生缺页异常的时候能够从巨型页池中分配一个巨型页。
(4)HugePages_Surp:“Surp”是“Surplus”的缩写,意思是“多余的”,是巨型页池中临时巨型页(临时分配的)的数量。临时巨型页的最大数量由“/proc/sys/vm/nr_overcommit_hugepages”控制。
(5)Hugepagesize:巨型页的大小。

kubernetes通过kubectl查看node的hugepages情况:

kubectl get node multinode-demo-m02 -o yaml

Capacity:cpu:                ...ephemeral-storage:  ...hugepages-1Gi:      2Gihugepages-2Mi:      1Gimemory:             ...pods:               ...
Allocatable:cpu:                ...ephemeral-storage:  ...hugepages-1Gi:      2Gihugepages-2Mi:      1Gimemory:             ...pods:               ...

禁用hurgepages:

#禁用大页缓存

vi /etc/sysctl.conf

vm.nr_hugepages = 0

vm.nr_hugepages_mempolicy = 0

# 生效

sysctl -p

------

引用:

页表缓存(TLB)和巨型页的实现_tlb 超页-CSDN博客

HugePage简介和KVM中使用HugePage_kvm启用hugepage-CSDN博客


管理巨页(HugePage) | Kubernetes

坑爹的大页内存 - XGogo - 博客园

--end--


http://www.ppmy.cn/embedded/127400.html

相关文章

C# 和 C++ 混合编程

以下是一个关于 C# 和 C 混合编程 的教程详细目录,涵盖了混合编程中的各个重要方面: 目录 1. 引言 1.1 什么是混合编程? 1.2 为什么选择 C# 和 C 进行混合编程? 1.3 应用场景和优势 2. 基本概念 2.1 C# 和 C 的基础差异 2.…

Unity3D Shader预热生成详解

Unity3D Shader预热生成详解 在Unity3D游戏开发中,Shader作为渲染管线中至关重要的一环,定义了物体如何与光线交互并最终在屏幕上呈现的效果。Shader的预热生成是一个重要的技术点,尤其是在追求高性能渲染的游戏项目中。本文将详细解析Unity…

jenkins远程调用

curl -G -d tokenfetch_coverage_token&systemmes2&typefull&envsit&resetno http://remote_user:1172e3d5524629fabef5dd55c652646232192.168.36.196:8080/job/fetch_coverage/buildWithParameters 在jenkins的用户界面设置一个token就可以了 remote_user 为…

【日记】包装好看度与配料表健康度成反比(1550 字)

正文 昨天才上完班,怎么明天又要上班啊…… 今天起床头发好炸,就像哪个山洞里刚出来的野人。昨晚明明吹了头发的啊,我看着镜子里的自己有些哭笑不得。 报复性熬夜玩到了 3 点。今天 11:30 起床,感觉眼睛还是很肿,没睡好…

使用HTML和CSS实现3D波浪动画效果

使用HTML和CSS实现3D波浪动画效果 在本篇博客中,将详细介绍如何使用HTML与CSS创建一个3D波浪动画效果。这个效果不仅能够在网页中创建立体感强的视觉体验,还能够通过悬停和聚焦实现与用户的交互。我们将逐步解析代码中的每个部分,帮助你掌握…

第二百七十七节 JPA教程 - JPA查询ANY示例

JPA教程 - JPA查询ANY示例 以下代码显示了如何在JPQL中使用ANY运算符。 List l em.createQuery("SELECT e FROM Professor e WHERE e.department ANY (SELECT DISTINCT d FROM Department d)").getResultList();例子 下面的代码来自PersonDaoImpl.java。 packag…

需求7———通过一个简单的小需求来理清修改后端的思路

我今天下午刚刚完成了睿哥早上说的几个小问题,现在距离下班时间还有两个小时,已经没啥可干的了,然后我发现我之前做的很多需求还没有写文章来总结,所以现在趁着有空,我先写一下总结。这么多需求中,我挑了一…

斯坦福UE4 C++课学习补充25:AI感知组件

文章目录 一、引入感知组件并绑定委托二、优化角色旋转 一、引入感知组件并绑定委托 PawnSensingComponent是UE中用于感知其他 Pawn(或 Actor)存在的一个组件,常用于 AI 角色的视觉、听觉等感知功能。它为 AI 提供了基础的感知能力&#xff…