Re: Latest vfs scalability patch
From: Anton Blanchard
Date: Thu Oct 15 2009 - 07:27:42 EST
Hi Nick,
> I wonder what other good performance tests you can add to your test
> framework? creat/unlink is another easy one. And for each case, putting
> threads in their own cwd versus a common cwd are the variants.
I did try the two combinations of creat/unlink but haven't had a chance to
digest the profiles yet. I've attached them (taken at 64 cores, ie worst
case :)
In both cases performance was significantly better than mainline.
> BTW. for these cases in your tests it will be nice if you can run on
> ramfs because that will isolate purely the vfs. Perhaps also include
> other filesystems as you get time, but I think ramfs is the most
> useful for us to start with.
Good point. I'll add that into the setup scripts.
Anton
# Samples: 82617
#
# Overhead Command Shared Object Symbol
# ........ ............... ................................. ......
#
99.16% unlink1_process [kernel] [k] ._spin_lock
|
|--99.98%-- ._spin_lock
| |
| |--49.80%-- .path_get
| | (nil)
| | |
| | |--71.62%-- .path_init
| | | |
| | | |--51.37%-- .do_path_lookup
| | | | .user_path_parent
| | | | .do_unlinkat
| | | | syscall_exit
| | | | 0xfff8e90bd4c
| | | | .testcase
| | | | .affinitize
| | | | .new_task
| | | | .main
| | | | 0xfff8e84f33c
| | | | 0xfff8e84f55c
| | | | (nil)
| | | |
| | | --48.63%-- .do_filp_open
| | | .do_sys_open
| | | syscall_exit
| | | 0xfff8e909c7c
| | | .testcase
| | | .affinitize
| | | .new_task
| | | .main
| | | 0xfff8e84f33c
| | | 0xfff8e84f55c
| | | (nil)
| | |
| | --28.38%-- .path_walk
| | |
| | |--50.49%-- .do_filp_open
| | | .do_sys_open
| | | syscall_exit
| | | 0xfff8e909c7c
| | | .testcase
| | | .affinitize
| | | .new_task
| | | .main
| | | 0xfff8e84f33c
| | | 0xfff8e84f55c
| | | (nil)
| | |
| | --49.51%-- .do_path_lookup
| | .user_path_parent
| | .do_unlinkat
| | syscall_exit
| | 0xfff8e90bd4c
| | .testcase
| | .affinitize
| | .new_task
| | .main
| | 0xfff8e84f33c
| | 0xfff8e84f55c
| | (nil)
| |
| |--49.58%-- .dput
| | (nil)
| | |
| | |--64.21%-- .path_put
| | | |
| | | |--48.48%-- .path_walk
| | | | |
| | | | |--51.00%-- .do_path_lookup
| | | | | .user_path_parent
| | | | | .do_unlinkat
| | | | | syscall_exit
| | | | | 0xfff8e90bd4c
| | | | | .testcase
| | | | | .affinitize
| | | | | .new_task
| | | | | .main
| | | | | 0xfff8e84f33c
| | | | | 0xfff8e84f55c
| | | | | (nil)
| | | | |
| | | | --49.00%-- .do_filp_open
| | | | .do_sys_open
| | | | syscall_exit
| | | | 0xfff8e909c7c
| | | | .testcase
| | | | .affinitize
| | | | .new_task
| | | | .main
| | | | 0xfff8e84f33c
| | | | 0xfff8e84f55c
| | | | (nil)
| | | |
| | | |--25.79%-- .do_filp_open
| | | | .do_sys_open
| | | | syscall_exit
| | | | 0xfff8e909c7c
| | | | .testcase
| | | | .affinitize
| | | | .new_task
| | | | .main
| | | | 0xfff8e84f33c
| | | | 0xfff8e84f55c
| | | | (nil)
| | | |
| | | |--25.72%-- .do_path_lookup
| | | | .user_path_parent
| | | | .do_unlinkat
| | | | syscall_exit
| | | | 0xfff8e90bd4c
| | | | .testcase
| | | | .affinitize
| | | | .new_task
| | | | .main
| | | | 0xfff8e84f33c
| | | | 0xfff8e84f55c
| | | | (nil)
| | | --0.00%-- [...]
| | |
| | |--35.78%-- .__link_path_walk
| | | .path_walk
| | | |
| | | |--50.81%-- .do_path_lookup
| | | | .user_path_parent
| | | | .do_unlinkat
| | | | syscall_exit
| | | | 0xfff8e90bd4c
| | | | .testcase
| | | | .affinitize
| | | | .new_task
| | | | .main
| | | | 0xfff8e84f33c
| | | | 0xfff8e84f55c
| | | | (nil)
| | | |
| | | --49.19%-- .do_filp_open
| | | .do_sys_open
| | | syscall_exit
| | | 0xfff8e909c7c
| | | .testcase
| | | .affinitize
| | | .new_task
| | | .main
| | | 0xfff8e84f33c
| | | 0xfff8e84f55c
| | | (nil)
| | --0.01%-- [...]
| --0.62%-- [...]
--0.02%-- [...]
# Samples: 101253
#
# Overhead Command Shared Object Symbol
# ........ ............... ................................. ......
#
[31m 99.15%[m unlink2_process [kernel] [k] ._spin_lock
|
|[31m--99.97%-- [m._spin_lock
| |
| |[31m--49.96%-- [m.dput
| | (nil)
| | |
| | |[31m--71.64%-- [m.__link_path_walk
| | | .path_walk
| | | |
| | | |[31m--50.78%-- [m.do_path_lookup
| | | | .user_path_parent
| | | | .do_unlinkat
| | | | syscall_exit
| | | | 0xfff86a85d4c
| | | | .testcase
| | | | .affinitize
| | | | .new_task
| | | | .main
| | | | 0xfff869c933c
| | | | 0xfff869c955c
| | | | (nil)
| | | |
| | | [31m--49.22%-- [m.do_filp_open
| | | .do_sys_open
| | | syscall_exit
| | | 0xfff86a83c7c
| | | .testcase
| | | .affinitize
| | | .new_task
| | | .main
| | | 0xfff869c933c
| | | 0xfff869c955c
| | | (nil)
| | |
| | |[31m--28.35%-- [m.path_put
| | | |
| | | |[31m--50.91%-- [m.path_walk
| | | | |
| | | | |[31m--53.90%-- [m.do_path_lookup
| | | | | .user_path_parent
| | | | | .do_unlinkat
| | | | | syscall_exit
| | | | | 0xfff86a85d4c
| | | | | .testcase
| | | | | .affinitize
| | | | | .new_task
| | | | | .main
| | | | | 0xfff869c933c
| | | | | 0xfff869c955c
| | | | | (nil)
| | | | |
| | | | [31m--46.10%-- [m.do_filp_open
| | | | .do_sys_open
| | | | syscall_exit
| | | | 0xfff86a83c7c
| | | | .testcase
| | | | .affinitize
| | | | .new_task
| | | | .main
| | | | 0xfff869c933c
| | | | 0xfff869c955c
| | | | (nil)
| | | |
| | | |[31m--25.98%-- [m.do_filp_open
| | | | .do_sys_open
| | | | syscall_exit
| | | | 0xfff86a83c7c
| | | | .testcase
| | | | .affinitize
| | | | .new_task
| | | | .main
| | | | 0xfff869c933c
| | | | 0xfff869c955c
| | | | (nil)
| | | |
| | | |[31m--23.10%-- [m.do_path_lookup
| | | | .user_path_parent
| | | | .do_unlinkat
| | | | syscall_exit
| | | | 0xfff86a85d4c
| | | | .testcase
| | | | .affinitize
| | | | .new_task
| | | | .main
| | | | 0xfff869c933c
| | | | 0xfff869c955c
| | | | (nil)
| | | --0.01%-- [...]
| | --0.01%-- [...]
| |
| |[31m--28.88%-- [m.__follow_mount
| | (nil)
| | .do_lookup
| | .__link_path_walk
| | .path_walk
| | |
| | |[31m--50.26%-- [m.do_filp_open
| | | .do_sys_open
| | | syscall_exit
| | | 0xfff86a83c7c
| | | .testcase
| | | .affinitize
| | | .new_task
| | | .main
| | | 0xfff869c933c
| | | 0xfff869c955c
| | | (nil)
| | |
| | [31m--49.74%-- [m.do_path_lookup
| | .user_path_parent
| | .do_unlinkat
| | syscall_exit
| | 0xfff86a85d4c
| | .testcase
| | .affinitize
| | .new_task
| | .main
| | 0xfff869c933c
| | 0xfff869c955c
| | (nil)
| |
| |[31m--20.33%-- [m.path_get
| | (nil)
| | |
| | |[31m--69.39%-- [m.path_init
| | | |
| | | |[31m--50.78%-- [m.do_path_lookup
| | | | .user_path_parent
| | | | .do_unlinkat
| | | | syscall_exit
| | | | 0xfff86a85d4c
| | | | .testcase
| | | | .affinitize
| | | | .new_task
| | | | .main
| | | | 0xfff869c933c
| | | | 0xfff869c955c
| | | | (nil)
| | | |
| | | [31m--49.22%-- [m.do_filp_open
| | | .do_sys_open
| | | syscall_exit
| | | 0xfff86a83c7c
| | | .testcase
| | | .affinitize
| | | .new_task
| | | .main
| | | 0xfff869c933c
| | | 0xfff869c955c
| | | (nil)
| | |
| | [31m--30.61%-- [m.path_walk
| | |
| | |[31m--53.29%-- [m.do_filp_open
| | | .do_sys_open
| | | syscall_exit
| | | 0xfff86a83c7c
| | | .testcase
| | | .affinitize
| | | .new_task
| | | .main
| | | 0xfff869c933c
| | | 0xfff869c955c
| | | (nil)
| | |
| | [31m--46.71%-- [m.do_path_lookup
| | .user_path_parent
| | .do_unlinkat
| | syscall_exit
| | 0xfff86a85d4c
| | .testcase
| | .affinitize
| | .new_task
| | .main
| | 0xfff869c933c
| | 0xfff869c955c
| | (nil)
| [32m--0.83%-- [m[...]
--0.03%-- [...]