文档介绍:统计操作系统缺页次数
实验目的
学习虚拟内存的基本原理和 Linux 虚拟内存管理技术。
深入理解、掌握 Linux 的按需调页过程。
实验内容
统计操作系统自内核加载以后,累计发生的缺页次数,以及总运行时间。
实验提示
一、原理
由于每发生一次缺页都要进入缺页中断服务函数 do_page_fault 一次,所以可以认为执
行该函数的次数就是系统发生缺页的次数。因此可以定义一个全局变量 pfcount 作为计数变
量,在执行 do_page_fault 时,该变量值加 1。至于经历的时间可以利用系统原有的变量 jiffies,
这是一个系统的计时器,在内核加载完以后开始计时,以 10ms(缺省)为计时单位。
借助/proc 文件系统来读出变量的值。在/proc 文件系统下建立目录 pf 以及在该目录下的
文件 pfcount 和 jiffies。
二、示例
声明变量 pfcount:
--- linux-.orig
+++ linux-
***************
*****16,20*****
extern unsigned long max_mapnr;
extern unsigned long num_physpages;
extern void * high_memory;
extern int page_cluster;
+ extern unsigned long volatile pfcount;
定义变量 pfcount:
--- linux-.orig
+++ linux-
***************
****147,152****
+ unsigned long volatile pfcount;
asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code)
{
struct task_struct *tsk;
struct mm_struct *mm;
struct vm_area_struct * vma;
变量自加动作在 do_page_fault 中执行:
--- linux-.orig
+++ linux-
***************
****156,157****
int write;
siginfo_t info;
+ pfcount++;
在/kernel/ 文件中加入 EXPORT_SYMBOL(pfcount),可以使得下面提到的模块
能读取变量 pfcount;同理加入 EXPORT_SYMBOL(jiffies):
--- linux