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


    《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内存管理单元

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

  • 相关阅读:
    Java Lambda表达式的使用
    JS中JSON.stringify序列化和JSON.parse反序列化问题和解决
    石墨烯-壳聚糖-1-乙基-3-甲基咪唑四氟硼酸盐([BMIM])复合材料(Graphene-Chits-[BMIM])
    I/O多路复用详解
    作为程序员,这200个单词有你不认识的吗?
    【校招VIP】前端布局模块之Flex弹性布局
    机械硬盘(HDD)与固态硬盘(SSD)
    大数据Doris(二十三):取消导入与其他导入案例参考
    linux的基本指令(中)
    MySQL中 JOIN关联查询的原理以及优化手段
  • 原文地址:https://blog.csdn.net/qq_23662505/article/details/125444482