2009-11-24 15:44:59 iteye_14490 阅读数 55
1. top ->'f' ->'v'

http://www.linuxforums.org/articles/using-top-more-efficiently_89.html.

Note: On 2.6.x, this field is always zero without unknown reason.

2.you can check the size of dirty pages by checking /proc/<pid>/smaps

http://www.linux.com/learn/tutorials/42048-uncover-the-meaning-of-tops-statistics
2012-04-11 13:43:21 JamesJiangCHN 阅读数 1817

驱动需要对应内核版本号,但是有的内核版本号带有dirty后缀,这是编译内核的时候自动添加的。

只要编译内核时,去掉自动添加版本的选项即可。

General setup  --->
[ ] Automatically append version information to the version string

2012-03-15 17:34:15 kofshower 阅读数 1117

1 定时方式: 定时回写是基于这样的原则:/proc/sys/vm/dirty_writeback_centisecs的值表示多长时间会启动回写线程,由这个定时器启动的回写线程只回写在内存中为dirty时间超过(/proc/sys/vm/didirty_expire_centisecs / 100)秒的页(这个值默认是3000,也就是30秒),一般情况下dirty_writeback_centisecs的值是500,也就是5秒,所以默认情况下系统会5秒钟启动一次回写线程,把dirty时间超过30秒的页回写,要注意的是,这种方式启动的回写线程只回写超时的dirty页,不会回写没超时的dirty页,可以通过修改/proc中的这两个值,细节查看内核函数wb_kupdate。

2 内存不足的时候: 这时并不将所有的dirty页写到磁盘,而是每次写大概1024个页面,直到空闲页面满足需求为止

3 写操作时发现脏页超过一定比例: 当脏页占系统内存的比例超过/proc/sys/vm/dirty_background_ratio 的时候,write系统调用会唤醒pdflush回写dirty page,直到脏页比例低于/proc/sys/vm/dirty_background_ratio,但write系统调用不会被阻塞,立即返回.当脏页占系统内存的比例超/proc/sys/vm/dirty_ratio的时候, write系统调用会被被阻塞,主动回写dirty page,直到脏页比例低于/proc/sys/vm/dirty_ratio


2013-12-26 20:55:00 qianguozheng 阅读数 587


1.下载内核源码2.6.36.4

2.建立文件夹~/linux/linux-dirty

  cd ~linux/linux-dirty把解压缩后的内核源码存入此目录

qian@ubuntu:~/linux/linux-dirty$ ls
arch     crypto         fs       Kbuild       Makefile  REPORTING-BUGS  sound
block    Documentation  include  kernel       mm        samples         tools
COPYING  drivers        init     lib          net       scripts         usr
CREDITS  firmware       ipc      MAINTAINERS  README    security        virt

 

3.编辑文件 arch/x86/kernel/syscall_table_32.S

 

末尾添加

.long sys_mysyscall   /*  341 */

.char * sys_getWebPageTitle  /*  342 */

你的新调用的编号就是上一行的编号+1,记住这个编号,后面要用。

 

4.kernel/sys.c

添加

asmlinkage longsys_mysyscall(intnumber)
{
    if(number>0)return123456
    elsereturn654321;
}

asmlinage char * sys_getWebPageTitle(char *website)

{

  ..............

}

5.arch/x86/include/asm/unistd_32.h

#define __NR_mysyscall 341       //这341是之前记下的那个编号

#define __NR_mygetWebPageTitle  //342

6.

如果是第一次编译内核,可能会出席ncurses库没有安装。

apt-get install libncurses5-dev

 

make defconfig

make

 

 arch/x86/kernel/syscall_table_32.S: Assembler messages:
arch/x86/kernel/syscall_table_32.S:344: Error: unknown pseudo-op: `.char'
make[2]: *** [arch/x86/kernel/entry_32.o] Error 1
make[1]: *** [arch/x86/kernel] Error 2

 

http://zakir.is-programmer.com/posts/22294.html

http://www.cnblogs.com/kenjones/archive/2011/03/09/1978611.html

2019-07-08 15:53:18 salted___fish 阅读数 510

脏页是Linux内核中的概念,因为硬盘的读写速度远赶不上内存的速度,系统就把读写比较频繁的数据事先放到内存中,以提高读写速度,这就叫高速缓存,linux是以页作为高速缓存的单位,当进程修改了高速缓存里的数据时,该页就被内核标记为脏页,内核将会在合适的时间把脏页的数据写到磁盘中去,以保持高速缓存中的数据和磁盘中的数据是一致的。

当我们对数据进行任何修改时,同样不会立即影响物理表。这是一个完成动作的循环。

  • 修改缓冲区缓存页面中的数据 - 称为“逻辑写入”。
  • 将相同的内容从缓冲区缓存写入物理表/磁盘,并将其记录在事务日志中 - 称为“物理写入”。

在缓冲区缓存中修改的页面称为“脏页面”。在物理写入中将脏页复制到磁盘。一旦对磁盘进行了数据修改过程,就会删除脏页。

                                     

Dirty pages are written to disk in 3 ways.

  • Lazy writing
  • Eager writing
  • Checkpoint

 

dirty cow 试验

阅读数 2891

没有更多推荐了,返回首页