1. 为什么会存在page fault问题?

计算机的物理内存(看看你的内存条)有限,一般现在都是几个GB的容量了,BTW,我的笔记本有8GB,:-)。

但应用程序的需求是无限的,操作系统为了解决这个矛盾,使用了虚拟内存的设计。简单的描述就是,给应用程序

一个与物理内存无关的虚拟地址空间,并提供一套映射机制,将虚拟地址映射到物理内存。当然应用程序是不知道

有这个映射机制存在的,他唯一需要做的就是尽情的使用自己的虚拟地址空间。操作系统提供的映射机制是

运行时动态进行虚拟地址和物理地址之间的映射的,当一个虚拟地址没有对应的物理内存时候,

映射机制就分配物理内存,构建映射表,满足应用程序的需求,这个过程就叫page fault。

与直接访问物理内存不同,page fault过程大部分是由软件完成的,消耗时间比较久,所以是影响性能的一个关键指标。

Linux把page fault又进一步分为minor page fault和major page fault。前面提到的分配物理内存,构建映射表过程可以看做是

minor page fault。major page fault是由swap机制引入的,对于swap情况,地址映射好了后,还需要从外部存储读取数据,这个

过程涉及到IO操作,耗时更久。

2. 如何查看应用程序的page fault指标呢?

1) 可以使用time命令:

比如我想看看svm-train的情况(模型训练很耗资源)\time svm-train age_train_equal.txt(前面的斜杠表示不使用shell的内嵌time命令)

输出是:7.68user 0.02system 0:07.71elapsed 99%CPU (0avgtext+0avgdata 42768maxresident)k

0inputs+6696outputs (0major+15445minor)pagefaults 0swaps

可以看到只有minor page fault,没有major。

time命令的实现是用到了Linux提供的rusage机制。Linux的wait API可以返回一个应用程序的运行过程的资源消耗情况。

如果你想在自己的代码中获取资源利用情况,可以使用libc的getrusage函数,这个函数也是内核的API。

2) proc文件系统

Linux系统下的/proc/PID/stat文件,也提供了相关统计数据。

转自: http://www.cnblogs.com/cornsea/archive/2012/12/17/2821429.html

linux io page fault,Linux的page fault相关推荐

  1. linux io端口复用,Linux系统IO复用接口(select、poll、epoll)

    epoll仅仅是一个异步事件的通知机制,其本身并不作任何的IO读写操作,它只负责告诉你是不是可以读或可以写了,而具体的读写操作,还要应用程序自己来完成.epoll仅提供这种机制是非常好的,它保持了事件 ...

  2. linux io复用命令,Linux中IO多路复用机制

    之前的面试有问到主线程在 ActivityThread 里初始化 Looper 后调用了 Looper.loop() 这个死循环为什么不会阻塞主线程,当时回答因为在 Looper.loop() 方法里 ...

  3. linux io重定向指令,Linux基础知识之 IO重定向

    通常在 Shell 中执行命令的时候,我们会在输入命令的下方看到执行结果,操作系统默认将命令的执行结果输出到显示器上.当然,我们也可以手动的指定输出路径,或者输入路径,这就是 I/O 重定向. 1.标 ...

  4. 嵌入式linux+io+优化,嵌入式Linux系统内存优化使用方法研究

    [摘要] 嵌入式系统功能的提高,占用了较大内存空间,继而时常出现运行无响应.基于用户方面看,由于系统内存问题影响运行,针对系统内存与进程应用状态研究,可以调整系统数值与执行文件elf分析,进行系统优化 ...

  5. cacti linux io,cacti 安装Linux

    发表于 2019-09-12 13:26:50 by 月小升 [root@iz2ze9n3z2fl9zj9hrv58vz ~]# yum install cacti -y [root@iz2ze9n3 ...

  6. Linux io运行情况,Linux IO调度层分析

    我们知道,每个块设备程序都有一个请求队列与之关联.在块设备初始化时,会分配并初始化请求队列.在这个时候,我们便可以为块设备驱动程序指定特定的IO调度算法,默认情况下是强制使用系统默认的调度算法. 熟悉 ...

  7. linux io函数,unix/Linux低级IO函数的用法有哪些? 爱问知识人

    内容包括: open() ,尤其是各种常见的参数,到底是什么意思, 比如常用创建一个空文件: fd = open("/tmp/xx.txt",O_RDWR | O_CREAT | ...

  8. linux内存映射原理,Linux内存管理实践-使用fault()实现内存映射

    内核态与用户态进行数据交互通常是这样一种模型:内核利用自身的特权通过特定的服务程序采集.接收和处理数据:接着,用户态程序和内核服务程序进行数据交互,或接收内核态的数据,或向内核态写入数据.通过传统的那 ...

  9. linux内核那些事之struct page

    struct page page(页)是linux内核管理物理内存的最小单位,内核将整个物理内存按照页对齐方式划分成千上万个页进行管理,内核为了管理这些页将每个页抽象成struct page结构管理每 ...

  10. linux中的memory management和page mapping

    1 首先要说的最简单的是在一个process在运行的时候,它看到的内存是这个样子的.3G以后是给kernel使用的运行和动态分配的内存的空间,注意因为是process所看到的,下面全部都是虚拟地址空间 ...

最新文章

  1. DataList自定义分页
  2. python 简易HTTP服务器搭建
  3. c#实现多线程代码例子
  4. 最长公共子序列LCS[C++题解]
  5. 产品经理如何走出被运营牵着鼻子走的怪圈
  6. c++ 函数模板_C/C++编程笔记:C++入门知识,深入解析C++函数和函数模板
  7. Redis的设计与实现之跳表
  8. 34、JS/AJAX
  9. 关灯看视频(Turn Off the Lights)
  10. Spring集成基础知识
  11. (项目)在线教育平台(六)
  12. (算法)最长回文子串
  13. ASN1对象与OID之间转换的函数
  14. python3 unicodedecodeerror_Python3 UnicodeDecodeError
  15. poj 3264 Balanced Lineup RMQ问题
  16. Word控件Spire.Doc 【页面背景】教程(1) ;C#/VB.NET:在 Word 中插入水印
  17. WIFI模块AP和STA模式分别是什么意思
  18. 大量数据导出Excel 之 多重影分身之术
  19. Python—标准遗传算法求函数最大值代码实现
  20. 华为模拟器 eNSP 基本配置命令

热门文章

  1. R语言错误的提示(中英文翻译)
  2. actionbarsherlock 插件结合slidingmenu时,自定义actionbar布局
  3. php能做定时关机吗,windows怎么定时关机?
  4. D-Feet的复杂类型使用攻略(DBUS)
  5. 货运与物流的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  6. html 自适应 音乐播放器,mmPlayer:一款基于Vue的自适应Web在线音乐播放器
  7. 自动驾驶人一定要知道的120多家公司!
  8. 揭秘玛雅预言--根本没这回事
  9. MacOS打开多个微信的方法(代码+脚本)
  10. java中explain什么意思_Java架构-面试前必须知道的MySQL命令【explain】