0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

计算内存与非计算内存有什么区别?

璟琰乀 来源:twt企业IT社区 作者:twt企业IT社区 2020-11-04 11:38 次阅读

通俗的说法:

凡是硬盘上有对应的数据,占用的内存,就是非计算内存,非计算内存需要被别的进程用到时,其中的数据无需page out,因为再次需要读取的时候从硬盘文件中拿出来即可。

凡是硬盘上没有数据对应的内存占用叫做计算内存,例如用C写个程序,分配一块1MB的内存,这部分内存不管其中数据是否有意义,硬盘上没有文件对应,叫做计算内存。

以上所谓“硬盘上有无对应数据”的前提是:计算内存、非计算内存是操作系统的分类,所以操作系统知道硬盘上有对应,才叫非计算内存。虽然任何数据库的内存占用绝大部分是磁盘缓冲,按理说其中的数据硬盘上有对应,但是,这些内存是数据库管理的,操作系统只知道这些内存是DBMS主动向操作系统申请的,其中放的什么,操作系统并不知道,所以是计算内存。

breakdown: 计算内存、非计算内存都是指物理内存占用,而物理内存的情况,由于VMM机制,是时刻在变化的,所以只能说某一瞬间,计算内存、非计算内存各占用多少。

● 计算内存:

凡是进程/程序运行中用程序代码向操作系统申请的内存,全部是计算内存,也就是说除非这个程序运行起来,除了自身代码占用的内存,一点额外的内存也不用,否则它几乎必然会造成计算内存占用的。说“几乎”,是因为计算内存、非计算内存都是指物理内存,如果一个程序申请了1MB内存,但一段时间没有用这部分内存,很可能在其他进程需要内存,且物理内存比较紧张时,按照LRU算法(Latest Recently Unused,最近最少使用),被操作系统部分或全部page out到paging space中,如果全部被page out了,可以说这个时刻,此进程没有使用计算内存。换句话说,就是程序申请了1MB内存,那么它在某一时刻占用的计算内存从0字节~1MB都有可能。

进程主动向操作系统申请分配的内存,从程序编码上来看,以C为例,典型的就是malloc,当然,还有程序语言中的隐式分配,反正对于操作系统来说都一样,例如char *string1=“ABCDEFG”; int number=22222; 前者会导致自动向操作系统申请8个字节,后一个会申请一个字(两个字节)

当进程退出,或者意外崩溃,对于操作系统来说,它知道进程不在了,而进程申请的内存,操作系统明确知道是哪些的,在资源回收的过程中,会自动把这个进程申请的内存释放掉,这个过程是很快的。所以我们可以看到:如果计算内存高企,我们把应用一停,也就是把使用计算内存最多的进程停止,计算内存占用率立刻就下来了。

● 非计算内存:

操作系统明确知道这部分内存的用途是放硬盘对应数据的,所以,显然这部分内存不是任何进程可以控制,也就是说不可能一个程序主动要求分配多少非计算内存或者释放多少。这部分完全是操作系统在直接管理:分配、记录状态、使用、释放,其他进程只可能用间接手段影响非计算内存,例如读写文件。

非计算内存我们常见的是如下用途:

——程序代码:当运行程序时,代码初始装入到物理内存的什么地方、重定位到什么地方,是操作系统管理的,它会记住程序代码放在物理内存什么地方,及其对应程序文件的位置。当程序代码占用的page frame需要被其他用途使用时,操作系统直接把这个page frame转给要使用这部分内存的进程,并记录标志,下次要是这个page原来的内容需要被引用,从对应程序文件中的对应位置读取进入物理内存。有些进程的某些计算内存占用是不能被替换的,例如执行VMM管理任务的操作系统核心进程,所以这部分会有操作系统机制设置标志,这个就是常说的pin住某些内存不准替换掉。

——磁盘访问缓冲区:这个不是常说的缓存区,缓存区(英文Cache)的目的是用来提高性能,而缓冲区(英文Buffer),是为了块设备访问特点的要求,比如硬盘块设备、逻辑卷块设备,必须读写的基本单位是一个块,一般是512字节,哪怕你只读写一个字节,也必须一次读进512字节,修改特定的那一个字节,然后再整个512字节块全部写出到硬盘。这就需要缓冲区的存在。缓冲区的总个数,是不固定的,操作系统可以根据同时在访问的块的数量随时调整。

——NFS访问缓冲区,原理基本同上;

——文件系统缓存:这个肯定是每一个字节都有硬盘文件对应的,显然是非计算内存。

限制 AIX 的 nocomp (非计算)内存最大值。

把 AIX 的

minperm% = 20

maxclient% = 80

maxperm% = 80

调整更低。

解决步骤:

查看原来的AIX的 minperm% 、 maxclient% 、 maxperm% 的值。如下:

Root 用户查看:

》vmo –a

minperm% = 20

maxclient% = 80

maxperm% = 80

把 minperm% 设置成 10 , maxclient% 设置成 20 , maxperm% 设置成 20

用 root 命令行执行:

1 、 vmo -p -o minperm%=10

2 、 vmo -p -o maxclient%=20

3 、 vmo -p -o maxperm%=20

备注:

minperm 和 maxperm 参数的值

操作系统通过把在曾经读写的内存页留在实内存一满足不同要求。如果文件页面在它们的页帧被重新分配前被请求,那就节省了输入输出操作。该文件页面可以来自本地的或远程的(如 NFS )系统。

页帧使用的文件相对用于计算的(工作或程序文本)段的文件的比例是松散地受控于 minperm 和 maxperm 的值的:

如果 RAM 中文件页面所占的百分比高于 maxperm ,页面替换的窃取只用于文件页。

如果 RAM 中文件页面所占的百分比低于 minperm ,页面替换的窃取同时用于文件页和计算页。

如果 RAM 中文件页面所占的百分比介于 minperm 和 maxperm 之间,页面替换只窃取文件页,除非文件页的重调入数量大于计算页数。

其中 Noncomp 在 20 %- 80 %之间,此时内存页交换算法通常只交换文件缓存页,但如果文件缓存页的交换率大于程序页时,程序页也同样被交换。由于 SGA 属于 Comp 页,数据文件缓存属于 Noncomp 页,而在数据大量访问时,文件缓存页的交换率大于程序页( SGA ),因此大量的 SGA 页面被交换;为避免大量 SGA 页被交换,需要降低 maxperm% 值到 35 %以下,这样就只有文件缓存页面被交换,减少了 SGA 交换的次数。

来源:twt企业IT社区

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 硬盘
    +关注

    关注

    3

    文章

    1233

    浏览量

    56304
  • 计算机
    +关注

    关注

    19

    文章

    6649

    浏览量

    84526
  • 内存
    +关注

    关注

    8

    文章

    2767

    浏览量

    72765
收藏 人收藏

    评论

    相关推荐

    服务器内存条和普通内存条的区别

    服务器内存条和普通内存条的区别  服务器内存条和普通内存条是计算机中常见的两种
    的头像 发表于 02-19 10:19 1018次阅读

    系统内存和运行内存区别

    区别。 首先,系统内存是指计算机中存储程序和数据的硬件设备,也被称为主存或内存条。它是计算机用来临时存储数据和指令的地方,相当于
    的头像 发表于 01-15 16:32 683次阅读

    加速计算卡与AI显卡有什么区别

    加速计算卡与AI显卡有什么区别? 加速计算卡与AI显卡是两种不同的硬件设备,它们在设计和功能上有显著区别。本文将详细介绍这两种设备的区别,包
    的头像 发表于 01-09 14:10 507次阅读

    运行内存12g和16g的区别

    运行内存12g和16g的区别  运行内存计算机中的一种硬件组件,用于存储正在运行的程序和数据。12GB和16GB是两种常见的内存容量,它们
    的头像 发表于 12-25 15:12 5045次阅读

    内存溢出与内存泄漏:定义、区别与解决方案

    内存溢出与内存泄漏:定义、区别与解决方案  内存溢出和内存泄漏是计算机科学中常见的问题,在开发和
    的头像 发表于 12-19 14:10 1266次阅读

    DDR4和DDR3内存都有哪些区别

    DDR4和DDR3内存都有哪些区别? 随着计算机的日益发展,内存也越来越重要。DDR3和DDR4是两种用于计算机内存的标准。随着DDR4
    的头像 发表于 10-30 09:22 5327次阅读

    监控摄像头云储存和内存卡储存有什么区别

    监控摄像头云储存和内存卡储存有什么区别?它们是有一些关键区别,下面是它们之间的比较: 一、监控摄像头云储存: 1、远程访问:监控摄像头云储存允许我们将监控录像和图像上传到远程服务器,以
    的头像 发表于 10-23 17:47 8908次阅读

    RK358支持全链路ECC的DDR和普通内存有区别

    ECC内存(ErrorCorrection Code Memory)和普通内存计算机存储技术中常见的两种类型的内存。它们在设计和功能上有一些重要
    的头像 发表于 09-22 16:57 1308次阅读
    RK358支持全链路ECC的DDR和普通<b class='flag-5'>内存有</b>何<b class='flag-5'>区别</b>?

    服务器内存和台式机内存有什么区别

    数据存储功能和功能的系统,但仅限于它一直为其发电的唯一计算机。那么服务器内存和台式机内存有什么区别? 下面是服务器内存和台式机
    的头像 发表于 08-23 17:32 3301次阅读

    堆栈内存和堆内存之间的区别

    编写有效的代码需要了解堆栈和堆内存,这使其成为学习编程的重要组成部分。不仅如此,新程序员或职场老手都应该完全熟悉堆栈内存和堆内存之间的区别,以便编写有效且优化的代码。
    发表于 08-07 12:23 376次阅读
    堆栈<b class='flag-5'>内存</b>和堆<b class='flag-5'>内存</b>之间的<b class='flag-5'>区别</b>

    C程序中10个与内存有关的常见错误

    内存有关的错误,属于那种最令人惊恐的错误。在时间和空间上,经常在距离错误源一段距离之后才表现出来。将错误的数据写到错误的位置,你的程序可能在最终失败之前运行了一段时间。 下面列举并分析了与内存有关的几种错误:
    发表于 06-20 10:41 567次阅读

    内存与外存的关键区别

    内存和外存是计算机存储的两种不同形式,两者虽然都是存储数据的方式,但是却有许多区别。本文将从定义、结构、速度、容量、使用、价格等方面探讨内存与外存的关键
    的头像 发表于 06-10 15:06 4741次阅读

    易失性内存有写入限制吗?

    我们正在构建一个设备来测量消耗。电路 ACS712 读取那一刻的消耗量,所以,我需要做一个每秒累加的方法。问题:易失性内存有写入限制,所以我需要使用易失性内存。写入易失性存储器是否有一些限制?我们的想法是每秒读取一次 ACS7
    发表于 05-30 08:48

    计算机的内存和外存别再分不清了

    内存,是大家对内部存储器的简称,当然,我们也可以叫内部存储器为主存。它是计算机中最重要的部件之一。** 内存计算机运行过程中存放需要运行的程序和数据的地方。
    的头像 发表于 05-26 11:03 7385次阅读
    <b class='flag-5'>计算</b>机的<b class='flag-5'>内存</b>和外存别再分不清了

    内存和GPIO状态保留而言,使用标准NVIC_SystemReset() 和SRC_DoSoftwareResetARMCore0()有什么区别

    内存和 GPIO 状态保留而言,使用标准 NVIC_SystemReset() 和 SRC_DoSoftwareResetARMCore0() 有什么区别
    发表于 05-24 07:47