jdb2/kworker
创始人
2024-05-08 12:31:13
0

测试代码出自:块设备IO优化的典型案例分析_papaofdoudou的博客-CSDN博客_kworker/u2:2-2-

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include //O_DIRECT        
#define __USE_GNU 1
#include 
#include 
#include 
#include int fallocate(int , int , off_t, off_t);
static void write_test(int fdno)
{int origin_len;int reallen;void *mp;int len = 1 * 1024 * 1024;origin_len = len;len = len + (getpagesize() - len%getpagesize());//printf("%s line %d, len = %d.\n", __func__, __LINE__, len);unsigned char *p = malloc(len + getpagesize());if(p == NULL){printf("%s line %d, malloc failure.\n", __func__, __LINE__);return;}mp = p;unsigned char *q = (unsigned char *)(((unsigned long)p + getpagesize())&(~(getpagesize()-1)));p = q;//printf("q = %p, mp = %p.\n", q, mp);memset(p, 0x00, len);//lseek(fdno, 0, SEEK_SET);//int reallen = read(fdno, p,len);//printf("%s line %d, reallen %d read failure.er %s\n", __func__, __LINE__, reallen, strerror(errno));//printf("%s line %d, fdno = %d\n", __func__, __LINE__, fdno);//lseek(fdno, 0, SEEK_SET);reallen = write(fdno, p, origin_len);//printf("%s line %d, reallen = %d.\n", __func__, __LINE__, reallen);//lseek(fdno, 0, SEEK_SET);free(mp);mp = NULL;return;
}static void* write_thread1(void *p)
{int fdno;fdno = open("./fuck.bin", O_DIRECT|O_RDWR|O_CREAT, 0666);//fdno = open("./fuck.bin", O_RDWR|O_CREAT, 0666);if(fdno < 0){printf("%s line %d, open file failure.\n", __func__, __LINE__);return NULL;}fallocate(fdno, 1, 0, 100*1024*1024);//fallocate(fdno, 0, 0, 100*1024*1024);//return NULL;while(1){write_test(fdno);}close(fdno);return NULL;
}static void* write_thread2(void *p)
{int fdno;fdno = open("./new.bin", O_DIRECT|O_RDWR|O_CREAT, 0666);if(fdno < 0){printf("%s line %d, open file failure.\n", __func__, __LINE__);return NULL;}fallocate(fdno, 1, 0, 100*1024*1024);//fallocate(fdno, 0, 0, 100*1024*1024);//return NULL;while(1){write_test(fdno);}close(fdno);return NULL;
}int main(int argc,char **argv)
{pthread_t t1,t2;pthread_create(&t1,0,write_thread1,NULL);pthread_create(&t2,0,write_thread2,NULL);pthread_join(t1,NULL);pthread_join(t2,NULL);return 0;
}

块起始分别为9961472、9961984、9962496、9963008,每个需要512 sectiors 扇区,本次写1M的文件,需要4*512=1024个扇区,即每个扇区是1K

[281277.215000] test_emmc(14438): dirtied inode 1572868 (fuck.bin) on mmcblk0
[281277.215000] test_emmc(14438): WRITE block 9961472 on mmcblk0 (512 sectors)
[281277.215000] test_emmc(14438): WRITE block 9961984 on mmcblk0 (512 sectors)
[281277.219000] test_emmc(14438): WRITE block 9962496 on mmcblk0 (512 sectors)
[281277.220000] test_emmc(14438): WRITE block 9963008 on mmcblk0 (512 sectors)
[281283.008000] jbd2/mmcblk0-8(833): WRITE block 29730136 on mmcblk0 (8 sectors)
[281283.008000] jbd2/mmcblk0-8(833): WRITE block 29730144 on mmcblk0 (8 sectors)
[281283.013000] jbd2/mmcblk0-8(833): WRITE block 29730152 on mmcblk0 (8 sectors)
[281284.018000] kworker/u2:0(14315): WRITE block 50331904 on mmcblk0 (8 sectors)

问题1:jbd2/mmcblk0-8和kworker/u2:0有什么差别?

kworker线程创建

路径:kernel\workqueue.c

 

JBD2(journaling block device 2)

关于JBD介绍:https://help.aliyun.com/document_detail/155605.html

JDB的工作原理

JBD2(journaling block device 2)系统分析(一)-dessasic-ChinaUnix博客

性能分析之解决 jbd2 引起 IO 高问题_zuozewei的博客-CSDN博客

JDB2线程创建

[root@szclou mmcblk0-8]$ps -aux | grep jbd*
root       833  0.0  0.0      0     0 ?        S    Jan04   0:06 [jbd2/mmcblk0-8]
root     14546  0.0  0.3   1860   876 pts/2    S+   14:49   0:00 grep jbd*

JBD2源代码路径:fs\jbd2\journal.c

某大神发现jbd2日志更新时会引发io访问100%,是内核代码有bug,链接:性能分析之解决 jbd2 引起 IO 高问题_zuozewei的博客-CSDN博客

 而本人的内核却是还存在这个bug

int jbd2_log_start_commit(journal_t *journal, tid_t tid)
{int ret;write_lock(&journal->j_state_lock);ret = __jbd2_log_start_commit(journal, tid);write_unlock(&journal->j_state_lock);return ret;
}

 

相关内容

热门资讯

美国不提安卓系统华为,迈向自主... 华为与美国:一场关于技术、市场与政策的较量在当今这个数字化的世界里,智能手机已经成为我们生活中不可或...
安卓系统怎么打开ppt,选择文... 你有没有遇到过这种情况:手里拿着安卓手机,突然需要打开一个PPT文件,却怎么也找不到方法?别急,今天...
谷歌退回到安卓系统,探索创新未... 你知道吗?最近科技圈可是炸开了锅,谷歌竟然宣布要退回到安卓系统!这可不是一个简单的决定,背后肯定有着...
安卓系统待机耗电多少,深度解析... 你有没有发现,手机电量总是不经用?尤其是安卓系统,有时候明明没怎么用,电量就“嗖”的一下子就下去了。...
小米主题安卓原生系统,安卓原生... 亲爱的手机控们,你是否曾为手机界面单调乏味而烦恼?想要给手机换换“衣服”,让它焕然一新?那就得聊聊小...
voyov1安卓系统,探索创新... 你有没有发现,最近你的手机是不是变得越来越流畅了?没错,我要说的就是那个让手机焕发青春的Vivo V...
电脑刷安卓tv系统,轻松打造智... 你有没有想过,家里的安卓电视突然变得卡顿,反应迟钝,是不是时候给它来个“大保健”了?没错,今天就要来...
安卓系统即将要收费,未来手机应... 你知道吗?最近有个大消息在科技圈里炸开了锅,那就是安卓系统可能要开始收费了!这可不是开玩笑的,这可是...
雷凌车载安卓系统,智能出行新体... 你有没有发现,现在的汽车越来越智能了?这不,我最近就体验了一把雷凌车载安卓系统的魅力。它就像一个聪明...
怎样拍照好看安卓系统,轻松拍出... 拍照好看,安卓系统也能轻松搞定!在这个看脸的时代,拍照已经成为每个人生活中不可或缺的一部分。无论是记...
安卓车机系统音频,安卓车机系统... 你有没有发现,现在越来越多的汽车都开始搭载智能车机系统了?这不,咱们就来聊聊安卓车机系统在音频方面的...
老苹果手机安卓系统,兼容与创新... 你手里那台老苹果手机,是不是已经陪你走过了不少风风雨雨?现在,它竟然还能装上安卓系统?这可不是天方夜...
安卓系统7.dns,优化网络连... 你有没有发现,你的安卓手机最近是不是有点儿“慢吞吞”的?别急,别急,让我来给你揭秘这可能与你的安卓系...
安卓手机系统怎么加速,安卓手机... 你有没有发现,你的安卓手机最近变得有点“慢吞吞”的?别急,别急,今天就来给你支几招,让你的安卓手机瞬...
小米note安卓7系统,探索性... 你有没有发现,手机更新换代的速度简直就像坐上了火箭呢?这不,小米Note这款手机,自从升级到了安卓7...
安卓和鸿蒙系统游戏,两大系统游... 你有没有发现,最近手机游戏界可是热闹非凡呢!安卓和鸿蒙系统两大巨头在游戏领域展开了一场激烈的较量。今...
安卓手机没有系统更,揭秘潜在风... 你有没有发现,现在安卓手机的品牌和型号真是五花八门,让人挑花了眼。不过,你知道吗?尽管市面上安卓手机...
充值宝带安卓系统,安卓系统下的... 你有没有发现,最近手机上的一款充值宝APP,在安卓系统上可是火得一塌糊涂呢!这不,今天就来给你好好扒...
安卓系统8.0镜像下载,轻松打... 你有没有想过,想要给你的安卓手机升级到最新的系统,却不知道从哪里下载那个神秘的安卓系统8.0镜像呢?...
安卓系统修改大全,全方位修改大... 你有没有想过,你的安卓手机其实是个大宝藏,里面藏着无数可以让你手机焕然一新的秘密?没错,今天就要来个...