免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3316 | 回复: 7
打印 上一主题 下一主题

[文件系统] 求助:用fio测试ramdisk测试出现的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-01-29 10:03 |只看该作者 |倒序浏览
系统是arm64,ramdisk使能,所以从dev/ram0 到 dev/ram15
用fio测试ramdisk性能,往里面写数据。

如果一次测试一个ramdisk,测试是ok的
如果并发测试,ram0 到 ram15的话,则会出现错误
fio: cache invalidation of /dev/ram2 failed: Device or resource busy

大家有遇到类似问题吗?

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
2 [报告]
发表于 2015-01-29 23:33 |只看该作者
回复 1# linuxlife123

没有用过FIO去测试,不过试过同时挂在多个镜像文件都能用,这个场景也是同时在用着多个loop文件呀。


建议在内核里加些打印信息,定位一下。必现的问题,加打印很快就能找到原因。。
   

论坛徽章:
0
3 [报告]
发表于 2015-01-31 09:45 |只看该作者
回复 2# Tinnal


    多谢Tinna。问题出现在 brd.c中 brd_ioctl中
当 bdev->bd_opners 大于1的时候,就返回设备 busy错误,
看了一下,这个bd_opners属于 block_device的一个成员变量,所以,我觉的,如果同时打开ram0,到ram15这么多设备
这个现象应该是不能避免的。不知道理解的对不对。
还有一个疑惑,为什么x86的机器这么测试没有问题。。。

     //-----------brd_ioctl函数-----
        error = -EBUSY;
        //printk("%s-opener:%d\n",__func__,bdev->bd_openers);
        if (bdev->bd_openers <= 1)
        {
                /*
                 * Kill the cache first, so it isn't written back to the
                 * device.
                 *
                 * Another thread might instantiate more buffercache here,
                 * but there is not much we can do to close that race.
                 */
                 
                kill_bdev(bdev);
                brd_free_pages(brd);
                error = 0;
        }
        mutex_unlock(&bdev->bd_mutex);
        mutex_unlock(&brd_mutex);
        if(error)
                printk("[%d]\n",error);
        return error;

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
4 [报告]
发表于 2015-01-31 14:37 |只看该作者
回复 3# linuxlife123

但为什么bd_opners会大于1呢, RAM0~RAM15是不同的bdev呀。你的上层代码是不是存在并发了。


   

论坛徽章:
0
5 [报告]
发表于 2015-01-31 15:24 |只看该作者
本帖最后由 linuxlife123 于 2015-01-31 21:54 编辑

回复 4# Tinnal


   
现在有2个问题:【1】就是bd_openers大于1的情况怎么出现的? 上层没有并发的情况,上层是一个脚本,就是往ram0 到ram15里面同时写数据。
【2】在x86机器上,单独测试某个ramdisk 测试出来的iops和同时测试16个ramdisk测试出来iops 数据差不多,但是在arm64机器上,同时测试16个ramdisk
得到的iops数据只是单独测试某个ramdisk得到的iops数据的一半。

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
6 [报告]
发表于 2015-02-03 00:53 |只看该作者
认像当中loop设备创建好像有并发的问题。你在创建loop设备时加把锁串行化一下试试。

论坛徽章:
0
7 [报告]
发表于 2015-02-03 11:02 |只看该作者
回复 6# Tinnal


    理论上来讲确实是因为并发造成这个打印信息,但是上层也确实没有并发。
我是通过shell命令来往ram1 - ram15发送数据。应该就排除了上层命令并发的可能性。

这个和loop设备有什么关系吗?

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
8 [报告]
发表于 2015-02-04 09:06 |只看该作者
回复 7# linuxlife123


   采用&让程序在后台运行,是有并发的可能的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP