性能之巅:洞悉系统、企业与云计算_【美】Brendan Gregg_AZW3_MOBI_EPUB_PDF_电子书(无页码)_【美】Brendan Gregg
内容节选
7.2概念 下面节选了一些有关内存和内存性能的重要概念。 7.2.1 虚拟内存Denning, P.“Virtual Memory,”ACM Computing Surveys (CSUR) 2, no. 3 (1970). 虚拟内存是一个抽象概念,它向每个进程和内核提供巨大的、线性的并且私有的地址空间。它简化了软件开发,把物理内存的分配交给操作系统管理。它也支持多任务,因为虚拟地址空间被设计成分离的,并且可以超额订购,即使用中的内存可以超出主内存的容量。第3章中已经介绍过虚拟内存。其历史背景可参考 。 图7.1 揭示了虚拟内存在一个进程中扮演的角色,该系统带有交换设备(二级存储)。这里描绘了其中一个内存页,因为大多数虚拟内存是以页的方式实现的。 图7.1 进程虚拟内存 进程的地址空间由虚拟内存子系统映射到主内存和物理交换设备。内核会按需在它们之间移动内存页,这个过程称作交换。它允许内核超额订购主内存。 内核可能会限制超额订购。基于Solaris 的内核,限制为主存加上物理交换设备的大小。当内核试图跨过这个限制时,内存分配就会失败。一开始这类“虚拟内存不足”的错误会令人困惑,因为虚拟内存本身是一种抽象的资源。 Linux 可以配置成同样的行为模式,也可以是其他的行为,包括不对内存分配做限制。该行为称作过度提交,将在换页和按需换页之后介绍。它们是实现过度提交的必要条件。 7.2.2 换页Corbató, F. J. A Paging Experiment with the Multics System. MIT Project MAC Report MAC-M-384, 1968. 换页是将页面换入和调出主存,它们分别被称为页面换入和页面换出。它由Atlas Computer于1962年 提出,它允许: ● 运行部分载入的程序 ● 运行大于主存的程序 ● 高效地在主存和存储设备间迁移 这些功能今天仍然有效。与交换出整个程序不同,由于页的尺寸相对较小(如4KB),换页是精确管理和释放主存的手段。Babaoglu, O., W. Joy, and J. Porcar. Design and Implementation of the Berkeley Virtual Memory Extensions to the UNIX Operating by stem. Computer bcience Division, Department of Electrical Engineering and Computer Science, University of California, Berkeley, 1979. 虚拟内存换页(交换虚拟内存)由BSD 引入到UNIX 中 ,并从此成为标准。 加上后来的共享文件系统页的页缓存(见第8章),产生了两种类型的换页:文件系统换页和匿名换页。 文件系统换页McDougall, R., J. Mauro, and B. Gregg. Solaris Performance and Tools: DTrace and MDB Techniques for Solaris 10 and OpenSolaris. Prentice Hall, 2006. 文件系统换页由读写位于内存中的映射文件页引发。对于使用文件内存映射(mmap())的应用程序和使用了页缓存的文件系统(必须使用,见第8章),这是正常的行为。这也被称作“好的”换页 。 有需要时,内核可以调出一些页释放内存。这时说法变得有些复杂:如果一个文件系统页在主存中修改过(“脏的”),页面换出要求将该页写回磁盘。相反,如果文件系统页没有修改过(“干净的”),因为磁盘已经存在一份副本,页面换出仅仅释放这些内存以便立即重用。因术语页面换出指一个页被移出内存——这可能包括或者不包括写入一个存储设备(你可能会看到对此不同的定义)。 匿名换页 匿名换页牵涉进程的私有数据:进程堆和栈。被称为匿名是由于它在操作系统中缺乏有名字的地址(例如,没有文件系统路径)。匿名页面换出要求迁移数据到物理交换设备或者交换文件。Linux 用交换(swapping)来命名这种类型的换页。McDougall, R., J. Mauro, and B. Gregg. Solaris Performance and Tools: DTrace and MDB Techniques for Solaris 10 and OpenSolaris. Prentice Hall, 2006. 匿名换页拖累性能,因此被称为“坏的”换页 。当应用程序访问被调出的页时,会被读页的磁盘I/O 阻塞。这就是匿名页面换入,它给应用程序带来同步延时。匿名页面换出可能不会直接影响应用程序性能,因为它由内核异......
- 信息
- 内容简介
- 推荐序1
- 推荐序2
- 推荐序3
- 推荐序4
- 推荐序5
- 推荐序6
- 译者序
- 前言
- 致谢
- 关于作者
- 第1章 绪论
- 1.1 系统性能
- 1.2 人员
- 1.3 事情
- 1.4 视角
- 1.5 性能是充满挑战的
- 1.6 延时
- 1.7 动态跟踪
- 1.8 云计算
- 1.9 案例研究
- 第2章 方法
- 2.1 术语
- 2.2 模型
- 2.3 概念
- 2.4 视角
- 2.5 方法
- 2.6 建模
- 2.7 容量规划
- 2.8 统计
- 2.9 监视
- 2.10 可视化
- 2.11 练习
- 2.12 参考
- 第3章 操作系统
- 3.1 术语
- 3.2 背景
- 3.3 内核
- 3.4 练习
- 3.5 参考
- 第4章 观测工具
- 4.1 工具类型
- 4.2 观测来源
- 4.3 DTrace
- 4.4 SystemTap
- 4.5 perf
- 4.6 观测工具的观测
- 4.7 练习
- 4.8 参考
- 第5章 应用程序
- 5.1 应用程序基础
- 5.2 应用程序性能技术
- 5.3 编程语言
- 5.4 方法和分析
- 5.5 练习
- 第6章 CPU
- 6.1 术语
- 6.2 模型
- 6.3 概念
- 6.4 架构
- 6.5 方法
- 6.6 分析
- 6.7 实验
- 6.8 调优
- 6.9 练习
- 6.10 参考资料
- 第7章 内存
- 7.1 术语
- 7.2 概念
- 7.3 架构
- 7.4 方法
- 7.5 分析
- 7.6 调优
- 7.7 练习
- 7.8 参考资料
- 第8章 文件系统
- 8.1 术语
- 8.2 模型
- 8.3 概念
- 8.4 架构
- 8.5 方法
- 8.6 分析
- 8.7 实验
- 8.8 调优
- 8.9 练习
- 第9章 磁盘
- 9.1 术语
- 9.2 模型
- 9.3 概念
- 9.4 架构
- 9.5 方法
- 9.6 分析
- 9.7 实验
- 9.8 调优
- 9.9 练习
- 第10章 网络
- 10.1 术语
- 10.2 模型
- 10.3 概念
- 10.4 架构
- 10.5 方法
- 10.6 分析
- 10.7 实验
- 10.8 调优
- 10.9 练习
- 10.10 参考
- 第11章 云计算
- 11.1 背景
- 11.2 OS 虚拟化
- 11.3 硬件虚拟化
- 11.4 比较
- 11.5 练习
- 第12章 基准测试
- 12.1 背景
- 12.2 基准测试的类型
- 12.3 方法
- 12.4 基准测试问题
- 12.5 练习
- 12.6 参考
- 第13章 案例研究
- 13.1 案例研究:红鲸
- 13.2 结语
- 13.3 附加信息
- 附录A USE法:Linux
- 附录B USE法:Solaris
- 附录C sar总结
- 附录D DTrace单行命令
- 附录E 从DTrace到SystemTap
- 附录F 精选练习题答案
- 附录G 系统性能名人录