美文网首页
page fault和数据访问方式对性能的影响

page fault和数据访问方式对性能的影响

作者: Htea | 来源:发表于2016-12-03 11:17 被阅读83次

在某种极端的情况下
缺页异常page fault会严重影响进程的性能

假设:
页大小为128bytes
一个进程用到了128个页
内存只能给这个程序分配127个页的内存
我们编程时其中有一段访问了一个128*128大小的数组

代码是这样的:

for i = 1 to 128:
    for j = 1 to 128:
        A[j,i] = 0;

由于数组在一般内存中是按行存储的,而页是连续的一段内存
即A[1,1] A[1,2] A[1,3] .... 算是在一个页内

由于访问数组的方式是A[j,i]
由于i循环在外,数据访问顺序是:
A[1,1] A[2,1] A[3,1] ... 其中每个数据都保存在不同的页内

由于内存只分配了127个页,少了一个页
第一遍外循环i = 1肯定是page fault
产生了page fault就要把数据复制到内存,更新页表,前127个还好,有空余的内存能分配。可是到了第128个,空间不够了,一般策略是停留时间最长的覆盖掉,于是第128页(包含数据A[128,1] A[128,2] ... A[128,n]) 覆盖掉了第1页(包含数据A[1,1] A[1,2] ... A[1,n])
第二遍外循环 i = 2 开始,于是开始访问数据 A[1,2] A[2,2] A[3,2] ... A[128,2] 由于这还是分别属于不同页的数据,A[1,2] 是第一个页的数据(而第一个页刚刚被128页覆盖),于是覆盖掉第2页。然后轮到A[2,2],自己所属的第2个页刚刚被覆盖,只能去欺负待的时间最长的页3。
以此类推其实每次都会产生page fault,总共128*128次。

如果使用A[i,j]来访问数据。
那么一次循环内数据访问顺序是A[1,1] A[1,2] A[1,3] ... A[1,128] 这都是在一个页上的数据,因此一次循环内只会一次page fault。只要第一次page fault把数据赋值到内存,之后的127次访问都是没问题的。由于外循环是128次,所以总共有128次page fault。

结论

page fault开销还是很大的。

如果内存容量有限,不是总是能给进程分配足够多内存,而且page fault的算法不"聪明",那么这时候数据访问的顺序是很重要的。

相关文章

  • page fault和数据访问方式对性能的影响

    在某种极端的情况下缺页异常page fault会严重影响进程的性能 假设:页大小为128bytes一个进程用到了1...

  • ios启动优化:二进制重排

    通过前面的探讨,我们知道内存分页触发中断异常 Page Fault 后,会阻塞进程,这个问题是会对性能产生影响。实...

  • 一切皆是映射:浅谈操作系统内核的缺页异常(Page Fault)

    浅谈操作系统内核的缺页异常(Page Fault) 缺页中断就是要访问的页不在主存,需要操作系统将其调入主存后再进...

  • (转) page fault

    原文: https://www.cnblogs.com/shengs/p/13290500.html 什么是pa...

  • Mysql 日志采集

    为什么通过日志方式采集数据? 减少对业务库的入侵,如果使用全量方式获取数据会对业务库造成很大的性能影响。通过流式采...

  • 数据同步系统需要解决的问题

    数据同步的方式: 直连同步:通过ODBC/JDBC等接口直连数据库,对源系统性能影响较大。 数据文件同步:简单,实...

  • Linux内存,PageFault与SwapOut

    “内存并不一定总是快” Linux 中内存主要有匿名内存和 Page Cache 两种。 Page Fault L...

  • iOS 启动优化

    目前的主要方案是利用二进制重排 + clang插桩的方式,减少page Fault的次数来实现。 这里面涉及的内容...

  • iOS重排启动优化

    原理: 1.Page Fault 进程直接访问物理内存是不安全的,所以操作系统在物流内存上又建立了一层虚拟内存,虚...

  • Segmentation fault

    core dump触发场景 Segmentation fault (core dumped),这种完全是有page...

网友评论

      本文标题:page fault和数据访问方式对性能的影响

      本文链接:https://www.haomeiwen.com/subject/bgqcmttx.html