Re: Performance regression caused by stack operation of regular file

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

 



Hi Miklos & Amir,
Could you please take a look at this?
It behaves different between the latest kernel and an old one, e.g. 4.9.

Thanks,
Joseph

On 19/10/28 14:21, JeffleXu wrote:
> Hi, Miklos,
> 
> I noticed a performance regression of reading/writing files in mergeddir caused by commit a6518f73e60e5044656d1ba587e7463479a9381a (vfs: don't open real), using unixbench fstime.
> 
> 
> Reproduce Steps:
> 
> 1. cd /mnt/lower/ && git clone https://github.com/kdlucas/byte-unixbench.git
> 
> 2. mount -t overlay overlay -olowerdir=/mnt/lower,upperdir=/mnt/upper,workdir=/mnt/work /mnt/merge
> 
> 3. cd /mnt/merge/byte-unixbench/UnixBench && ./Run -c 1 -i 1 fstime
> 
> 
> The score is 2870 before applying the patch, while it is 1780 after applying the patch, causing a 40% performance regression.
> 
> The testcase repeatedly reads 1024 bytes from one file and writes the readed data into another file, while both these two files
> 
> are created under /mnt/merge/tmp.  I have testsed the latest kernel 5.4.0-rc4+, same results.
> 
> 
> The perf shows that there's extra one call of file_remove_privs(), override_creds() and revert_creds() every write() syscall,
> 
> among which file_remove_privs() is pretty expensive.
> 
> 
> - perf data before applying the patch.
> 
> ```
> 
> -   53.00%     0.93%  fstime    [kernel.kallsyms]   [k] __vfs_write
>    - 52.08% __vfs_write
>       - 51.94% ext4_file_write_iter
>          + 48.89% __generic_file_write_iter
>            0.83% down_write_trylock
>            0.79% up_write
> 
> ```
> 
> 
> - perf data after applying the patch.
> 
> ```
> 
> +   94.88%     0.00%  fstime    [kernel.kallsyms]   [k] entry_SYSCALL_64_after_hwframe
> +   94.88%     4.67%  fstime    [kernel.kallsyms]   [k] do_syscall_64
> +   66.08%     1.60%  fstime    libc-2.17.so        [.] __GI___libc_write
> +   62.37%     0.23%  fstime    [kernel.kallsyms]   [k] ksys_write
> +   61.74%     0.62%  fstime    [kernel.kallsyms]   [k] vfs_write
> -   60.10%     0.49%  fstime    [kernel.kallsyms]   [k] __vfs_write
>    - 59.61% __vfs_write
>       - 59.56% ovl_write_iter
>          - 33.81% do_iter_write
>             - 32.50% do_iter_readv_writev
>                + ext4_file_write_iter
>          + 19.15% file_remove_privs
>            2.15% revert_creds
>            2.02% override_creds
>            0.64% down_write
>            0.63% up_write
> 
> ```
> 
> 
> Regards.
> 
> Jeffle
> 



[Index of Archives]     [Linux Filesystems Devel]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux