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%-- [...]