内存大页及基本块

2023-11-19

大页内存

透明大页和大页的关系

这两者最大的区别在于 :  标准大页管理是预分配的方式,而透明大页管理则是动态分配的方式。

内存页的概念:

内存页:page

内存的最小分配单元:page   ---->  一个应用程序至少要使用一个内存页  4096B(4k)

linux中查看内存页的大小

getconf  -a  |  gerp  -I  pagesize

文件系统最小存储单元:块(block)  一个文件至少要占用一个block(4k)

linux 里打开火狐

firefox  &

查看火狐占用的内存大小

这里的total指的是虚拟内存的大小,并且你可以发现各种插件占用的内存都是4k的倍数

查看物理内存的占用

ps   aux  |  grep   firefox

单位为kb,实际大小100+M

MMU:内存管理单元(用于维护虚拟内存到物理内存的映射表)

存放于CPU中,映射由CPU来做

如果你开了火狐,又关又开这样对于cpu来讲他就需要不停去做映射,因为应用关闭映射就删

大页(Hugepage):记录虚拟内存到物理内存的分配映射表(记录于CPU中,由CPU管理)

免得应用在重复进行开关的时候反复执行映射导致CPU压力过高

cat  /proc/meminfo

查看内存信息

黑色框选的Total为0表示系统并未分配大页,Hugepagesize为2M

查看在系统中设置的大页数量

sysctl  -a  | grep  huge

free  -m

查看当前使用的内存大小

vim  /etc/sysctl.conf

修改配置文件,设置大页的数量

让sysctl配置文件生效

sysctl  -p

重新查看内存的占用情况,发现比之前多使用了200M

free  -m

所以当你让大页内存生效了以后,这200M就会被占用(并且是物理空间),并且这部分内存是不释放的,就是用来存映射,其他程序无法使用

所以这样的话,是很浪费内存的,默认情况下大页内存是不开启的,需要手动去开去配置

什么时候开启:当你的CPU性能很紧张的时候(CPU成为瓶颈),通过牺牲内存来减轻CPU 的负担

一个映射的大小为256B

最小存储:

查看文件系统的详细信息

创建一个2k大小的文件,但是在查看的时候发现他的大小为4k

这是因为内存和磁盘都有一个最小的分配单位4k

作用:因为内存和磁盘文件都会通过映射表指向一个物理的存储位置,那如果按照每一个比特去指向的话,那么光维护映射表就会花费大量的空间,得不偿失

所以他在分配磁盘空间的时候指定最小为4k,无论你实际使用多少(哪怕再小)都会分4k给你,如果实际大小为6k那么分配空间则为8k,并且这部分空间只有你能用,这样他维护的映射表就会小很多,缩小为原来的1/4000

windows里在格式化磁盘的时候也可以看到分配单元大小,4k

block小的时候可以节省存储空间,但是可能会降低读取的性能(因为一个20K的文件你可能需要读5个块,那如果块大小是16k就只需要读2个block)

大:提高读取的性能

小:节省存储的空间

VM的磁盘空间一般都比较大,且存储的都是大文件,所以这里可以调整block/簇的大小,改成1024KB也就是 1M

block大小和条带的大小建议对齐(保持一致)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

内存大页及基本块 的相关文章

  • 用另一个文件的标签为图表(ggplot2)中的标题添加下标

    在我的程序中 我有两个主要文件 第一个包含数据 第二个包含标签 或图形标题 文件总数1 数据 3 10000 3 32039232 1 0 0017290351 2 0 0002781092 3 10001 3 32101193 1 0 0
  • Linux shell 根据第二列对文件进行排序?

    我有一个这样的文件 FirstName FamilyName Address PhoneNumber 如何按 FamilyName 排序 如果这是 UNIX sort k 2 file txt 您可以使用多个 k用于对多列进行排序的标志 例
  • 如何从脚本编辑 /etc/sudoers?

    我需要编辑 etc sudoers从脚本中添加 删除白名单中的内容 假设我有一个可以处理普通文件的命令 我如何将其应用到 etc sudoers 我可以复制并修改它 然后有visudo用修改后的副本替换原始版本 通过提供我自己的脚本 EDI
  • Pthreads - 高内存使用率

    我正在用 C 编写一些东西 在 256Mb 系统上的 Linux 中创建大量 Pthread 我通常有 200Mb 的免费空间 当我使用少量线程运行该程序时 它可以工作 但是一旦我让它创建大约 100 个线程 它就会出现错误 因为系统内存不
  • 我想在 Red Hat Linux 服务器中执行 .ps1 powershell 脚本

    我有一个在窗口中执行的 ps1 powershell 脚本 但我的整个数据都在 Linux 服务器中 有什么可能的方法可以让我在红帽服务器中执行 powershell 脚本 powershell脚本是 Clear Host path D D
  • 如何在Linux上用C/C++编写Web服务器[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在考虑在 Linux 平台上开发一个小型 阅读 初级 Web 服务器 但我不知道从哪里开始 我希望它能够做的是 监听特定端口 接受
  • Linux 内核使用的设备树文件 (dtb) 可视化工具? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以图形化表示Linux内核中使用的硬件设备树的工具 我正在尝试了解特定 Arm 芯片组
  • 任何退出 bash 脚本但不退出终端的方法

    当我使用exitshell 脚本中的命令 该脚本将终止终端 提示符 有什么方法可以终止脚本然后停留在终端中吗 我的剧本run sh预计通过直接获取或从另一个脚本获取来执行 编辑 更具体地说 有两个脚本run2 sh as run sh ec
  • 如何在C(Linux utf8终端)中打印“盒子抽屉”Unicode字符?

    我正在尝试显示 方框图范围 2500 257F 中的 Unicode 字符 它应该是标准 utf8 Unicode 标准 版本 6 2 我根本做不到 我首先尝试使用旧的 ASCII 字符 但 Linux 终端以 utf8 显示 并且没有显示
  • Vagrant 遇到问题 - “404 - 未找到”

    我正在尝试使用 Vagrant 制作一个 LAMP 盒子 有人告诉我它使用起来非常简单 我对网络和虚拟机完全陌生 对 Linux Ubuntu 的经验也很少 我目前已尝试按照官方文档页面上的教程进行操作 http docs vagrantu
  • bash 将输出重定向到文件,但结果不完整

    重定向命令输出的问题已经被问过很多次了 但是我有一个奇怪的行为 我使用的是 bash shell debian 版本 4 3 30 1 release 并尝试将输出重定向到文件 但并非所有内容都记录在文件中 我尝试运行的 bin 文件是 l
  • 链接错误:命令行中缺少 DSO

    我对 Linux 使用 Ubuntu 14 04 LTS 64 位 相当陌生 来自 Windows 并且正在尝试移植我现有的 CUDA 项目 当通过链接时 usr local cuda bin nvcc arch compute 30 co
  • 为什么此 NASM 代码会打印我的环境变量?

    本学期我刚刚完成计算机体系结构课程 除其他外 我们一直在涉足 MIPS 汇编并在 MARS 模拟器中运行它 今天 出于好奇 我开始在我的 Ubuntu 机器上摆弄 NASM 基本上只是将教程中的内容拼凑起来 并感受一下 NASM 与 MIP
  • /sys/device/ 和 dmidecode 报告的不同 CPU 缓存大小

    我正在尝试获取系统中不同缓存级别的大小 我尝试了两种技术 a 使用 sys device 中的信息 这是输出 cat sys devices system cpu cpu0 cache index1 size 32K cat sys dev
  • LINUX:如何锁定内存中进程的页面

    我有一个 LINUX 服务器 运行一个具有大量内存占用的进程 某种数据库引擎 该进程分配的内存太大 需要将其中一部分换出 换出 我想做的是将所有其他进程 或正在运行的进程的子集 的内存页面锁定在内存中 以便只有数据库进程的页面被换出 例如
  • 嵌入清单文件以要求具有 mingw32 的管理员执行级别

    我正在 ubuntu 下使用 i586 mingw32msvc 交叉编译应用程序 我很难理解如何嵌入清单文件以要求 mingw32 具有管理员执行级别 对于我的例子 我使用了这个hello c int main return 0 这个资源文
  • 为 Linux 编译 Objective-C 应用程序(API 覆盖范围)

    我可能在这里问一些奇怪的问题 但我不确定从哪里开始 问题是我正在考虑使用 Obj C 和 Foundation 类在 Mac 上编写一个命令行工具 但存在一个非常大的风险 那就是我希望能够为不同的 Linux 发行版编译它 以便将来作为服务
  • grep 排除文件的数组参数

    我想从我的文件中排除一些文件grep命令 为此我使用参数 exclude excluded file ext 为了更容易阅读 我想使用包含排除文件的 bash 数组 EXCLUDED FILES excluded file ext 然后将
  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终

随机推荐

  • 深度学习训练和测试时出现问题:error: the following arguments are required: --dataroot,解决:训练文件的配置方法和测试文件的配置方法

    在深度学习训练和测试时出现问题 error the following arguments are required dataroot 出现这种问题的主要原因是 训练的配置文件和测试的配置文件有问题 具体解决方法见下 目录 1 配置训练文件
  • el-table中sort-change容易引发的bug之显示值与获取值不符合

    最近在优化 一起自律打卡 小程序后台数据展示 想着加上一些排序和搜索 这方便自己去查阅日活或者看看小程序最近的数据状况 说干就干 后台管理是用了vue和element UI的 直接去看开发文档Table 表格 Element Plus 当时
  • Python 安装 Numpy 出现 错误:只允许在 C99 模式下使用‘for’循环初始化声明 用gcc编译出现

    在Liunx 离线安装 Numpy 时候 python setup py install 用gcc编译出现 错误 只允许在 C99 模式下使用 for 循环初始化声明 然后执行命令 CC gcc std c99 python setup p
  • 解决-画图程序无法读取-无效的位图文件

    辛苦画的图 今天一打开就看到这个 心情是呵呵的 搜了一下大概是图太大了 右击win10自带的图片 给裁剪小了就OK了
  • 《精通Spring4.x 企业应用开发实战》第20章 实战型单元测试

    前言 TestNG是必须事先掌握的基础测试框架 大多数测试框架和测试工具都在此基础上扩展而来 Spring测试框架为集成 TestNG JUnit 等单元测试框架提供了很好的支持 并为测试 Spring 应用提供了许多基础设施 在项目单元测
  • 互联网摸鱼日报(2023-03-11)

    互联网摸鱼日报 2023 03 11 InfoQ 热门话题 架构师 2023 年 3 月 世界级编程大师Bob 大叔为 干净代码 辩护遭质疑 时代变了 别用Clean Code那套要求我们了 从传统数据库痛点看分布式数据库选型问题 API
  • linux学习课程从入门到精通:Centos8用户管理

    本人从事IT行业已有十多年 有着丰富的实战经验 总结了大量的学习方法 更是积累了很多的学习资料 很高兴能在这里跟大家交流学习 希望能在这里跟大家共同进步和成长 全套学习资料移步至公众号 学神来啦 更多学习资料添加扣扣资源群 66130895
  • Compiler- 自增运算

    我们来看一下C语言中的前自增 i 和后自增 i 这个经典案例 大家在学习C的时候肯定学过前自增是先自增 然后将结果用于计算 后自增是先参与计算 再增加 好 看一下这段代码的结果 include
  • 数据结构_二元组

    今天在牛客网上看到这样一个题目 当时做的时候直接没反应过来 后来看解析的时候 才知道 二元组 图论上学过嘛 而且 我们以前也经常接触 图 V E 就是嘛 下面的解释转载自 https www cnblogs com larryzeal p
  • Python Flask怎么实现前后端分离

    你可以在 Flask 中使用 ajax 和 JSON 来实现前后端分离 首先 在 Flask 中创建一个视图函数 它会返回一个 JSON 响应 例如 app route api data def get data data key valu
  • 卷积神经网络改进想法初探(上篇)

    最近一直在看卷积神经网络 想改进改进弄出点新东西来 看了好多论文 写了一篇综述 对深度学习中卷积神经网络有了一些新认识 和大家分享下 其实卷积神经网络并不是一项新兴的算法 早在上世纪八十年代就已经被提出来 但当时硬件运算能力有限 所以当时只
  • Java并发编程之设计模式

    同步模式之保护性暂停 1 定义 即 Guarded Suspension 用在一个线程等待另一个线程的执行结果 要点 有一个结果需要从一个线程传递到另一个线程 让他们关联同一个 GuardedObject 如果有结果不断从一个线程到另一个线
  • MIPI-DSI 协议深度解析-简单易懂协议详解

    1 MIPI MIPI 移动行业处理器接口 是 Mobile Industry Processor Interface 的缩写 MIPI 移动行 业处理器接口 是 MIPI 联盟发起的为移动应用处理器制定的开放标准 DCS DisplayC
  • vue项目history模式刷新404问题

    vue项目history模式部署到服务器后 根路径访问没有问题 但是进入其他功能再刷新页面就会出现404 因为你没在nginx或者apache配置上面加上重定向跳转 解决办法 只需要加上这段配置 nginx配置内容 location try
  • DNS详解

    1 背景 DNS 是 Domain Name System 的缩写 即域名系统 DNS可以理解是将域名 如 www baidu com 和IP地址进行相互映射的一个分布式数据库 人直接去记忆IP地址数串是相当困难的 像是电话号码 记忆常用的
  • VUE+js高德地图2.0API两幅地图联动同步缩放

  • 主机上连接到 vmware虚拟机的方式

    我们平时只有一台电脑 但是练习时需要有多台电脑 那么此时应该怎么办 答案是下载 vmware 可以在上面创建多台虚拟机 至于如何创建 不是本文的重点 下面先说说桥接是如何设置的 首先 进入配置好的虚拟机下面 选择 虚拟机 设置 网络适配器
  • NLP-实体&关系联合抽取-2021:GPLinker

    基础思路 关系抽取乍看之下是三元组 s p o s p o s p o 即subject pre
  • spi总线挂载多个设备的设备树描述

    内核版本 linux4 6 Vivado版本 201602 工程中用到很多spi控制的从设备 首先对FPGA工程的正确性验证一下 验证的设备树描述如下 spi e0006000 compatible xlnx zynq spi r1p6 r
  • 内存大页及基本块

    大页内存 透明大页和大页的关系 这两者最大的区别在于 标准大页管理是预分配的方式 而透明大页管理则是动态分配的方式 内存页的概念 内存页 page 内存的最小分配单元 page gt 一个应用程序至少要使用一个内存页 4096B 4k li