linuxlife123 发表于 2015-01-29 10:03

求助:用fio测试ramdisk测试出现的问题

系统是arm64,ramdisk使能,所以从dev/ram0 到 dev/ram15
用fio测试ramdisk性能,往里面写数据。

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

大家有遇到类似问题吗?

Tinnal 发表于 2015-01-29 23:33

回复 1# linuxlife123

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


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

linuxlife123 发表于 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;

Tinnal 发表于 2015-01-31 14:37

回复 3# linuxlife123

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


   

linuxlife123 发表于 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数据的一半。

Tinnal 发表于 2015-02-03 00:53

认像当中loop设备创建好像有并发的问题。你在创建loop设备时加把锁串行化一下试试。

linuxlife123 发表于 2015-02-03 11:02

回复 6# Tinnal


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

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

Tinnal 发表于 2015-02-04 09:06

回复 7# linuxlife123


   采用&让程序在后台运行,是有并发的可能的。
页: [1]
查看完整版本: 求助:用fio测试ramdisk测试出现的问题