On Tue, Jul 18, 2023 at 09:21:07PM +0800, Hao Xu wrote: > From: Hao Xu <howeyxu@xxxxxxxxxxx> > > This series introduce getdents64 to io_uring, the code logic is similar > with the snychronized version's. It first try nowait issue, and offload > it to io-wq threads if the first try fails. > > Tested it with a liburing case: > https://github.com/HowHsu/liburing/blob/getdents/test/getdents2.c > > The test is controlled by the below script[2] which runs getdents2.t 100 > times and calulate the avg. > The result show that io_uring version is about 3% faster: > > python3 run_getdents.py > Average of sync: 0.1036849 > Average of iouring: 0.1005568 > > (0.1036849-0.1005568)/0.1036849 = 3.017% > > note: > [1] the number of getdents call/request in io_uring and normal sync version > are made sure to be same beforehand. > > [2] run_getdents.py > > ```python3 > > import subprocess > > N = 100 > sum = 0.0 > args = ["/data/home/howeyxu/tmpdir", "sync"] > > for i in range(N): > output = subprocess.check_output(["./liburing/test/getdents2.t"] + args) > sum += float(output) > > average = sum / N > print("Average of sync:", average) > > sum = 0.0 > args = ["/data/home/howeyxu/tmpdir", "iouring"] > > for i in range(N): > output = subprocess.check_output(["./liburing/test/getdents2.t"] + args) > sum += float(output) > > average = sum / N > print("Average of iouring:", average) > > ``` > > v3->v4: I'm out this week so will review next week.