《性能之巅第2版》阅读笔记(四)--Memory监测

本文深入探讨了内存管理的关键概念,包括虚拟内存、主存、交换分区和换页机制。虚拟内存将进程地址空间映射到主存和交换设备,允许运行超出物理内存的程序。换页分为文件系统换页和匿名换页,前者涉及内存映射文件,后者涉及进程私有数据。过度提交允许分配超过物理内存的内存,而工作集大小和页错误(缺页)则影响系统性能。此外,文章还讨论了UMA和NUMA架构下内存访问的差异以及CPU缓存的角色。
摘要由CSDN通过智能技术生成

《System Performance: Enterprise and the Cloud, 2nd Edition (2020)》阅读笔记简要记录

7. 内存memory

7.1 术语
术语中文
main memory主存物理内存
virtual memory虚拟内存抽象的主存概念,虚拟内存不是真实的内存
resident memory常驻内存当前处于主存中的内存
anonymous memory匿名内存无文件系统位置或者路径名的内存。包括进程地址空间的工作数据,称作堆
address space地址空间内存上下文
segment标记为特殊用途的一块内存区域,例如用来存储可执行或者可写的页
instruction text指令文本指在内存中的cpu指令,通常在段中
OOMOOMout of memory
page操作系统和CPU使用的内存单位。4KB或8KB,现代处理支持多种页大小以支持更大的页面尺寸
page fault缺页无效的内存访问
paging换页在主存与存储设备间交换页
swapping交换指将整个进程从主存转移到交换设备。Linux中交换指页面转移到交换设备(迁移交换页)
swap交换(空间)存放换页的匿名数据和交换进程的磁盘空间。它可以是存储设备的一块空间,也称为物理交换设备,或者文件系统,称作交换文件。
7.2 概念

和内存以及内存性能相关的基础概念。

7.2.1 虚拟内存virtualmemory

The process address space is mapped by the virtual memory subsystem to main memory and the physical swap device.
在这里插入图片描述

swap 分区通常被称为交换分区,这是一块特殊的硬盘空间,即当实际内存不够用的时候,操作系统会从内存中取出一部分暂时不用的数据,放在交换分区中,从而为当前运行的程序腾出足够的内存空间。

7.2.2 换页paging

换页是将页面换入和调出主存,它们分别被称为页面换入和页面换出。允许:

  • 运行部分载入的程序
  • 运行大于主存的程序
  • 高效的在主存和存储设备间迁移

两种:file system paging 、 anonymous paging。

paging
file system paging文件系统换页File system paging is caused by the reading and writing of pages in memory-mapped files. 文件系统换页由读写位于内存中的映射文件页引发。
如果一个文件系统页在主存中被修改过(dirty),页面换出page-out则需要将该页write todisk;相反,如果没被修改过(clean),因为磁盘已经存在副本,因此page-out可以仅仅释放这些内存以便重用。
anonymous paging匿名换页Anonymous paging involves data that is private to processes: the process heap and stacks.匿名换页牵涉进程私有数据:堆和栈。为何叫匿名换页?因为在OS中它缺乏有名字的地址(如没有文件系统路径)。匿名换页要求迁移数据到物理交换设备或者交换文件,linux用交换(swap)来命令这类型的换页。
匿名换页影响性能,当app访问被调出的页时,会被读页的I/O操作阻塞,这就是匿名换页的换入过程,给app带来同步延时。匿名换页的换出到不直接影响性能,因为是由内核异步执行
7.2.3 按需换页demanding paging

在这里插入图片描述

7.2.4 过度提交overcommit

Linux系统允许过度提交,允许分配超过系统可以存储的内容----超过物理内存与交换的设备的总和。

有了overcommit,malloc()会成功,否则失败,开发人员可以慷慨的分配内存并按需稀疏使用,而不是小心得分配。

7.2.5 交换process swaping

Process swapping is the movement of entire processes between main memory and the physical swap device or swap file.

在主存和物理交换设备或交换文件之间移动整个进程。

7.2.6 文件系统缓存占用file system cache usage

Process swapping is the movement of entire processes between main memory and the physical swap device or swap file

7.2.7 使用率和饱和度 utilization and saturation

Main memory utilization can be calculated as used memory versus total memory.

文件缓存占用的内存可以当做未使用的,因为它可以被应用程序重用。

对内存的需求超过了主存的情况被称为主存饱和,这时候OS会使用换页、交换或者在Linux中使用OOM来释放内存。

7.2.8 分配器 allocators

当虚拟内存处理多任务物理内存时,在虚拟地址空间实际分配和内存堆放通常有分配器来处理。API接口是malloc(),free()之类。

7.2.9 共享内存shared memory

进程间共享内存应不应该被统计到一个进程的总内存占用?proportional set size (PPS)解决该问题,包含了私有内存(非共享)和共享内存分开显示。pmap工具。

7.2.10 工作集大小work set size
7.2.11 字长 word size
7.3 架构
7.3.1 硬件

主存

延时

访问主内存的时间可用CAS延时(column address strobe,列地址控制器)来计量:从发送需要读取的地址(列)给一个内存模块,到数据可以被读取之间的时间。

主存架构

UMA

在这里插入图片描述

上图中,通过共享总线,每个CPU访问内存都有均匀的访问延时。如果上面运行的是单个操作系统实例并可以在所有处理器上统一运行时,又叫做对称多处理器架构(SMP)。

NUMA
在这里插入图片描述

CPU1可以通过它的内存总线直接对DRAM A发起I/O操作,这叫本地内存。CPU1通过CPU2以及CPU互联(两跳)对DRAM B发起I/O操作,这是远程内存访问延时更高。

总线

共享总线shared system bus如UMA
直连directprocessor直连memory
互联interconnectmultiprocessor中,每个processor与各自的内存直连,处理器之间通过一个CPU互联连接,如NUMA

DDR SDRAM

对于任何架构,内存总线速度常常取决于处理器和主板支持的内存接口标准。

1996年的double data rate synchronous dynamic random-access memory(DDR SDRAM)(双倍速率同步动态随机访问内存)。
在这里插入图片描述

多通道multichannel

多个内存总线并行,提高速率。一般有双通道(dual-),三通道(triple-),四通道(quad-)。比如inter-i7处理器是四通道DDR3-1600,最大内存带宽为51.2Gbytes/s。

CPU缓存

L1/L2/L3缓存。

MMU内存管理单元

管理虚拟内存到物理内存的地址映射。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值