给大家带来Linux历程IO情况的及时监测
vim除非你打算真正的学好linux,或者说打算长久时间学习他,而且肯花大量时间vim,否则,最好别碰作为体系办理员和VPS服务商,常常会碰着服务器大概VPS磁盘IO忙碌的时分,VPSee一般城市用一些工具来检测,个中一个经常使用的工具就是本人写的iotop剧本,能够很便利看到哪一个历程在频仍IO.上周五收到一名网友的邮件和留言,问到这篇文章:怎样检察历程IO读写情形?里的WRITE为何会呈现是0的情形,这是个好成绩,VPSee在这里好好注释一下。起首看看我们怎样才干及时监测分歧历程的IO举动情况。
block_dump
Linux内核里供应了一个block_dump参数用来把block读写(WRITE/READ)情况dump到日记里,如许能够经由过程dmesg命令来检察,详细操纵步骤是:
#sysctlvm.block_dump=1
or
#echo1>/proc/sys/vm/block_dump
然后就能够经由过程dmesg就能够察看到各个历程IO举动的情况了:
#dmesg-c
kjournald(542):WRITEblock222528ondm-0
kjournald(542):WRITEblock222552ondm-0
bash(18498):dirtiedinode5892488(ld-linux-x86-64.so.2)ondm-0
bash(18498):dirtiedinode5892482(ld-2.5.so)ondm-0
dmesg(18498):dirtiedinode11262038(ld.so.cache)ondm-0
dmesg(18498):dirtiedinode5892496(libc.so.6)ondm-0
dmesg(18498):dirtiedinode5892489(libc-2.5.so)ondm-0
成绩
一名仔细的网友提到如许一个成绩:为何会有WRITEblock0的情形呈现呢?VPSee跟踪了一段工夫,发明的确有WRITE0的情形呈现,好比:
#dmesg-c
...
pdflush(23123):WRITEblock0onsdb1
pdflush(23123):WRITEblock16onsdb1
pdflush(23123):WRITEblock104onsdb1
pdflush(23123):WRITEblock40884480onsdb1
...
谜底
本来我们把WRITEblock0,WRITEblock16,WRITEblock104这内里包括的数字了解错了,这些数字不是代表写了几blocks,是代表写到哪一个block,为了寻觅原形,VPSee追到Linux2.6.18内核代码里,在ll_rw_blk.c里找到了谜底:
$vilinux-2.6.18/block/ll_rw_blk.c
voidsubmit_bio(intrw,structbio*bio)
{
intcount=bio_sectors(bio);
BIO_BUG_ON(!bio->bi_size);
BIO_BUG_ON(!bio->bi_io_vec);
bio->bi_rw|=rw;
if(rw&WRITE)
count_vm_events(PGPGOUT,count);
else
count_vm_events(PGPGIN,count);
if(unlikely(block_dump)){
charb;
printk(KERN_DEBUG"%s(%d):%sblock%Luon%s
",
current->comm,current->pid,
(rw&WRITE)?"WRITE":"READ",
(unsignedlonglong)bio->bi_sector,
bdevname(bio->bi_bdev,b));
}
generic_make_request(bio);
}
很分明从下面代码能够看出WRITEblock0onsdb1,这里的0是bio->bi_sector,是写到哪一个sector,不是WRITE了几blocks的意义。另有,假如block设备被分红多个区的话,这个bi_sector(sectornumber)是从这个分区入手下手计数,好比block0onsdb1就是sdb1分区上的第0个sector入手下手。
</p>
对于开发环境的选择尽量要轻量级和高度可定制,航空母舰级别的工具往往会让你迷惑不解; 让我树立了很大的信心学好这门课程,也学到了不少专业知识和技能。? Linux操作系统这个名词记得在很早以前就听过,但当时并不知道具体是什么样的操作系统,只知道是一个与嵌入式密切相关的操作系统。 一定要养成在命令行下工作的习惯,要知道X-window只是运行在命令行模式下的一个应用程序。在命令行下学习虽然一开始进度较慢。 我想即使Linux高手也很难快速准确精练的回答你。 我是学习嵌入式方向的,这学期就选修了这门专业任选课。 笔者五分钟后就给出了解决方法: “首先备份原文件到其他目录,然后删掉/usr/local/unispim/unispimsp.ksc,编辑 /usr/local/unispim/unispimsp.ini,最后重启动计算机 选择交流平台,如QQ群,网站论坛等。 Linux只是个内核!这点很重要,你必须理解这一点。只有一个内核是不能构成一个操作系统的。
页:
[1]