美文网首页
内存分析

内存分析

作者: GOGOYAO | 来源:发表于2020-03-26 19:48 被阅读0次

    valgrind命令

    valgrind --tool=memcheck --leak-check=yes --show-reachable=yes ./a.out

    查看进程发生缺页中断的次数

    ps -o majflt,minflt -C program
    majflt代表major fault,中文名叫大错误,minflt代表minor fault,中文名叫小错误。

    这两个数值表示一个进程自启动以来所发生的缺页中断的次数。

    可以用命令ps -o majflt minflt -C program来查看进程的majflt, minflt的值,这两个值都是累加值,从进程启动开始累加。在对高性能要求的程序做压力测试的时候,我们可以多关注一下这两个值。
    如果一个进程使用了mmap将很大的数据文件映射到进程的虚拟地址空间,我们需要重点关注majflt的值,因为相比minflt,majflt对于性能的损害是致命的,随机读一次磁盘的耗时数量级在几个毫秒,而minflt只有在大量的时候才会对性能产生影响。

    发成缺页中断后,执行了那些操作?

    当一个进程发生缺页中断的时候,进程会陷入内核态,执行以下操作:
    1、检查要访问的虚拟地址是否合法
    2、查找/分配一个物理页
    3、填充物理页内容(读取磁盘,或者直接置0,或者啥也不干)
    4、建立映射关系(虚拟地址到物理地址)
    重新执行发生缺页中断的那条指令
    如果第3步,需要读取磁盘,那么这次缺页中断就是majflt,否则就是minflt。

    [参考]

    linux环境内存分配原理 mallocinfo

    相关文章

      网友评论

          本文标题:内存分析

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