物理内存

PAE 分页模式详解

做~自己de王妃 提交于 2020-01-04 14:33:13
2016-11-18 记得之前看windows内核原理与实现的时候,在内存管理部分,看到涉及到PAE模式的部分,提到此模式下可以让系统在虚拟地址还是32位宽的情况下,支持64GB的物理内存或者更多。当时就没怎么想明白,今天突然想起就结合intel手册仔细研读了一番,但是手册所讲主要是其寻址过程以及各级页表和entry的结构,对如何支持这一说还真没有提到。于是乎,google、上论坛等等,初步对其有了认识,难免让人失望,因为其着实没有我想的那么玄乎,下面还是分享下: PAE模式是基于分页模式的,如果CR.PG=1,CR4.PAE=1,则表示PAE模式被启用。 根据手册介绍,PAE模式下,一个32位的线性地址(虚拟地址)被翻译成一个52位的物理地址,这句话才是整个PAE模式的精髓。52是最大支持的位数,所以按照PAE的思想,其实不只可以支持64GB,还可以更多。至于这个限制,而为何要限制于64GB,这点恐怕又和PAE的工作模式相关。 PAE模式如何支持大于32GB的物理内存? PAE模式下,系统中的进程任意时刻还是只能访问4GB的地址空间,这是虚拟地址宽度所限,但是考虑到一般的页表项结构,低12位做各种标志,高20位作为物理页框号,这样满打满算也就可以定位2^20=1M个物理页面,也就是在普通模式下无论如何最高只能支持4GB物理内存。 PAE模式下就不同了,其稍微改变了下页表结构

页表机制

余生长醉 提交于 2020-01-04 14:32:44
分页转换功能由驻留在内存中的表来描述,该表称为页表(page table),存放在物理地址空间中。页表可看做简单的220个物理地址数组。线性到物理地址的映射功能可以简单地看做进行数组查找。线性地址的高20位构成这个数组的索引值,用于选择对应页面的物理(基)地址。线性地址的低12位给出了页面中的偏移量,加上页面的基地址最终形成对应的物理地址。由于页面基地址对齐在4K边界上,因此页面基地址的低12位肯定是0。这意味着高20位的页面基地址和12位偏移量连接组合在一起就能得到对应的物理地址。 页表中每个页表项的大小为32位。由于只需要其中的20位来存放页面的物理基地址,因此剩下的12位可用于存放诸如页面是否存在等的属性信息。如果线性地址索引的页表项被标注为存在的,则表示该项有效,我们可以从中取得页面的物理地址。如果页表项中信息表明(说明、指明)页不存在,那么当访问对应物理页面时就会产生一个异常。 1.两级页表结构 页表含有2^20(1M)个表项,而每项占用4B。如果作为一个表来存放的话,它们最多将占用4MB的内存。因此为了减少内存占用量,80x86使用了两级表。由此,高20位线性地址到物理地址的转换也被分成两步来进行,每步使用(转换)其中的10bit。 第一级表称为页目录(page directory)。它被存放在1页4K页面中,具有2^10(1K)个4B长度的表项

linux系列之常用运维命令

℡╲_俬逩灬. 提交于 2019-12-30 23:26:06
一、系统监控 1、free命令 free 命令能够显示系统中物理上的空闲和已用内存,还有交换内存,同时,也能显示被内核使用的缓冲和缓存 语法:free [param] param可以为: -b:以Byte为单位显示内存使用情况; -k:以KB为单位显示内存使用情况; -m:以MB为单位显示内存使用情况; -o:不显示缓冲区调节列; -s<间隔秒数>:持续观察内存使用状况; -t:显示内存总和列; -V:显示版本信息。 Mem:表示物理内存统计 total:表示物理内存总数(total=used+free) used:表示系统分配给缓存使用的数量(这里的缓存包括buffer和cache) free:表示未分配的物理内存总数 shared:表示共享内存 buffers:系统分配但未被使用的buffers 数量。 cached:系统分配但未被使用的cache 数量。 -/+ buffers/cache:表示物理内存的缓存统计 (-buffers/cache) 内存数: (指的第一部分Mem行中的used – buffers – cached) (+buffers/cache) 内存数: (指的第一部分Mem行中的free + buffers + cached) (-buffers/cache)表示真正使用的内存数, (+buffers/cache) 表示真正未使用的内存数 Swap

linux系列之常用运维命令

六眼飞鱼酱① 提交于 2019-12-30 23:15:49
一、系统监控 1、free命令 free 命令能够显示系统中物理上的空闲和已用内存,还有交换内存,同时,也能显示被内核使用的缓冲和缓存 语法:free [param] param可以为: -b:以Byte为单位显示内存使用情况; -k:以KB为单位显示内存使用情况; -m:以MB为单位显示内存使用情况; -o:不显示缓冲区调节列; -s<间隔秒数>:持续观察内存使用状况; -t:显示内存总和列; -V:显示版本信息。 Mem:表示物理内存统计 total:表示物理内存总数(total=used+free) used:表示系统分配给缓存使用的数量(这里的缓存包括buffer和cache) free:表示未分配的物理内存总数 shared:表示共享内存 buffers:系统分配但未被使用的buffers 数量。 cached:系统分配但未被使用的cache 数量。 -/+ buffers/cache:表示物理内存的缓存统计 (-buffers/cache) 内存数: (指的第一部分Mem行中的used – buffers – cached) (+buffers/cache) 内存数: (指的第一部分Mem行中的free + buffers + cached) (-buffers/cache)表示真正使用的内存数, (+buffers/cache) 表示真正未使用的内存数 Swap

LINUX虚拟地址空间总结

冷暖自知 提交于 2019-12-30 23:11:29
目录 1.虚拟内存空间解决了什么问题? 2.LINUX虚拟内存空间结构 3.页表 1.虚拟内存空间解决了什么问题? 闲谈:在研究虚拟地址空间,看到了一篇博客,说:在看到一项技术时,如果直接去看他的概念、用法、而忽视了他对比以前的技术有什么提升,解决了了以前技术中的哪些问题,这样是很不负责的。 正题:在计算机技术发展的早期,通常程序是直接访问物理地址的,只要程序需要的内存大小不超过物理内存空间大小就不会出错,我们就不用考虑内存管理这个麻烦的事。但现在我们能看到,我们周围的大多数计算机都是多进程运行。这时候问题就来了,假设现在物理内存有128M,1号进程需要10M进程,2号进程需要100M进程,3号进程需要20M进程,这时候我们可同时运行1,2号进程,1号进程占用0-10M内存地址,2号进程占用11-100的内存地址。这时候,如果还想运行3号进程,如果直接在物理内存上运行时,就不能实现了。于是乎,为了解决这个问题,产生了虚拟内存技术。暂时将不用的数据存储在硬盘中了。但这个方法也有一些缺点 物理内存不隔离:所有程序直接访问物理内存,如果有一些恶意代码,会非常容易干扰正常运行的其他代码。 内存使用效率低下:如果我们要像让程序1、2、3、同时运行,那么唯一的方法就是使用虚拟内存技术将一些程序暂时不用的数据写到磁盘上,在需要的时候再从磁盘读回内存。这里程序3要运行

Windows -Processor

家住魔仙堡 提交于 2019-12-29 22:24:01
Windows -Processor 指标名称 指标描述 指标范围 指标单位 CPU利用率 (% Processor Time) % Processor Time指处理器执行非闲置线程时间的百分比。这个计数器设计成用来作为处理器活动的主要指示器。它通过在每个时间间隔中衡量处理器用于执行闲置处理线程的时间,并且用100%减去该值得出。可将其视为范例间隔用于做有用工作的百分比。 根据应用系统情况,在80%±5%范围内波动为宜。过低,则服务器CPU利用率不高;过高,则CPU可能成为系统的处理瓶颈。 % 中断率 (Interrupts/sec.) 每秒钟设备中断处理器的次数。在完成一个任务或需要注意时,装置会发出中断讯号给处理器。可以产生中断的装置包括系统定时器、鼠标、数据通讯联机、网络卡以及其它的外部装置。在中断过程中,一般的执行绪执行将被暂停,而且一个中断可以使处理器切换到另一个具有较高优先等级的执行绪。频率中断是频繁和周期性的,并且中断动作在背景执行。 取决于处理器,越低越好;不宜超过1,000; 如果该值显著增加而系统活动没有相应的增加,则表明存在硬件问题,需要检查引起中断的网络适配器、磁盘或其他硬件。 次/sec 系统调用率 System Call/sec. 指运行在计算机上的所有处理器调用操作系统服务例行程序的综合速率

Linux SWAP 交换分区配置说明

喜欢而已 提交于 2019-12-28 19:49:44
一.SWAP 说明 1.1 SWAP 概述 当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。 这个是SWAP 交换分区的作用。 实际上,我们更关注的应该是SWAP分区的大小问题。 设置多大才是最优的。 一般来说可以按照如下规则设置swap 大小: 4G以内的物理内存,SWAP 设置为内存的2倍。 4-8G的物理内存,SWAP 等于内存大小。 8-64G 的物理内存,SWAP 设置为8G。 64-256G物理内存,SWAP 设置为16G。 实际上,系统中交换分区的大小并不取决于物理内存的量,而是取决于系统中内存的负荷,所以在安装系统时要根据具体的业务来设置SWAP的值。 1.2 系统在什么情况下才会使用SWAP? 实际上,并不是等所有的物理内存都消耗完毕之后,才去使用swap的空间,什么时候使用是由swappiness 参数值控制。 [root@rhce ~]# cat /proc/sys/vm/swappiness 60 该值默认值是60. swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,

Linux交换分区swap

巧了我就是萌 提交于 2019-12-28 19:49:20
一.SWAP 说明 1.1 SWAP 概述 当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。 这个是SWAP 交换分区的作用。 实际上,我们更关注的应该是SWAP分区的大小问题。 设置多大才是最优的。 一般来说可以按照如下规则设置swap大小: 4G以内的物理内存,SWAP 设置为内存的2倍。 4-8G的物理内存,SWAP 等于内存大小。 8-64G 的物理内存,SWAP 设置为8G。 64-256G物理内存,SWAP 设置为16G。 实际上,系统中交换分区的大小并不取决于物理内存的量,而是取决于系统中内存的负荷,所以在安装系统时要根据具体的业务来设置SWAP的值。 1.2 系统在什么情况下才会使用SWAP? 实际上,并不是等所有的物理内存都消耗完毕之后,才去使用swap的空间,什么时候使用是由swappiness 参数值控制。 [root@rhce ~]# cat /proc/sys/vm/swappiness 60 该值默认值是60. swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,

服务器 交换分区(Swap) 设置

独自空忆成欢 提交于 2019-12-28 19:48:35
周末的时候HBase集群一台子节点宕机,查看Ganglia及内存使用情况,发现节点Swap空间耗尽,但奇怪的是,系统物理内存却还是非常的富足。我们都知道 Swap空间的作用: Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。 Swap配置对性能的影响: 分配太多的Swap空间会浪费磁盘空间,而Swap空间太少,则系统会发生错误。 如果系统的物理内存用光了,系统就会跑得很慢,但仍能运行;如果Swap空间用光了,那么系统就会发生错误。例如,Web服务器能根据不同的请求数量衍生出多个服务进程(或线程),如果Swap空间用完,则服务进程无法启动,通常会出现“application is out of memory”的错误,严重时会造成服务进程的死锁。因此Swap空间的分配是很重要的。 那么,真的是当系统物理内存不够用的时候,系统才会使用Swap空间吗?否!他娘的。。。 其实虚拟内存并不是等到物理内存用尽了才使用的,是否尽量的使用或不使用swap在内核空间有一个参数控制。 cat /proc/sys/vm

Linux中Swap与Memory内存简单介绍

感情迁移 提交于 2019-12-28 19:48:18
1.背景介绍 这篇文章介绍一下Linux中swap与memory。对于memory没什么可说的就是机器的物理内存,读写速度低于cpu一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存的造价是要高于磁盘的,虽然相对来说价格一直在降低。除此之外,内存的断电丢失数据也是一个原因说不能把所有数据和程序都保存在内存中。既然不能全部使用内存,那数据还有程序肯定不可能一直霸占在内存中。当内存没有可用的,就必须要把内存中不经常运行的程序给踢出去。但是踢到哪里去,这时候swap就出现了。 swap全称为swap place,即交换区 ,当内存不够的时候,被踢出的进程被暂时存储到交换区。当需要这条被踢出的进程的时候,就从交换区重新加载到内存,否则它不会主动交换到真实内存中。 2.swap介绍 在详细介绍swap之前,我们需要知道的是计算机对内存分为物理内存与虚拟内存(注意虚拟内存和虚拟地址空间的区别)。物理内存就是计算机的实际内存大小,由RAM芯片组成的。虚拟内存则是虚拟出来的、使用磁盘代替内存。虚拟内存的出现,让机器内存不够的情况得到部分解决。当程序运行起来由操作系统做具体虚拟内存到物理内存的替换和加载(相应的页与段的虚拟内存管理)。 这里的虚拟内存即所谓的swap 。 当用户提交程序,然后产生进程,在机器上运行