Re: Huge lookup when recursively mkdir

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Centos 7.3, kernel version 3.10.0-514.26.2.el7.x86_64.

I extract the logical of file creation in our workload into a
reproducer , like below.

Concurrently run the reproducer in 2+ node can see a lots of lookup OP.
I thought the lookup is to open the directory tree so I tried to
pre-make most of the dirs ,  use ls -i trying to read the dentries and
cache it, then re-run the reproducer,  seems nothing different..

#include <sys/stat.h>
#include <fcntl.h>
int create_file(char * base, int count, int max, int depth)
{
    int i;
    for(i=0; i<count; i++) {
        char dir[256];
        int mydir = rand() % max;
        sprintf(dir, "%s/%d", path, mydir);
        if (depth >=1) {
            mkdir(dir,0777);
            create_dir(dir, count, max, depth - 1);
        } else {
            int fd = open(dir, O_CREAT | O_EXCL| O_WRONLY , 0666);
            printf("opened path : %s = %d\n", path, fd);
            close(fd);
        }
    }
}
int main(int argc, char argv[])
{
    char path[256];
    while(1) {
      create_file("/import/SQL01", 1, 4 ,10);
    }
}



2017-10-20 10:55 GMT+08:00 Yan, Zheng <ukernel@xxxxxxxxx>:
> On Fri, Oct 20, 2017 at 12:49 AM, Xiaoxi Chen <superdebuger@xxxxxxxxx> wrote:
>> Hi,
>>
>>       I am seeing a lot of lookup request when doing recursive mkdir.
>>       The workload behavior is like:
>>           mkdir DIR0
>>           mkdir DIR0/DIR1
>>           mkdir DIR0/DIR1/DIR2
>>           ....
>>           mkdir DIR0/DIR1/DIR2......./DIR7
>>           create DIR0/DIR1/DIR2......./DIR7/FILE1
>>
>>       and concurrently run on 50+ clients, the dir name in different
>> clients may or maynot be the same.
>>
>>        from the admin socket I was seeing ~50K create requests, but
>> got 400K lookup requests. The lookup eat up most of the mds capability
>> so file create is slow.
>>
>>        Where is the lookup comes from and can we have anyway to
>> optimize it out ?
>>
>
> I don't see this behavior when running following commands in 4.13
> kernel client and luminous version ceph-fuse. which client do you use?
>
> mkdir d1
> mkdir d1/d2
> mkdir d1/d2/d3
> mkdir d1/d2/d3/d4/
> mkdir d1/d2/d3/d4/d5
> touch d1/d2/d3/d4/d5/f
>
>>      Xiaoxi
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux