#!/usr/bin/env stap global entry, timings probe begin { printf("Collecting data... Hit to stop..\n") } function collect_entry() { entry[probefunc(),pid()] = gettimeofday_us() } function collect_exit() { timings[probefunc()] <<< (gettimeofday_us() - entry[probefunc(),pid()]) } probe module("nfs").function("*@fs/nfs/*proc.c") { collect_entry(); } probe module("nfs").function("*@fs/nfs/*proc.c").return { collect_exit(); } /* # Filename: nfs_v3_clientops_functions Line: 1 probe module("nfs").function("nfs3_proc_get_root") { collect_entry(); } probe module("nfs").function("nfs3_proc_get_root").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 2 probe module("nfs").function("nfs3_proc_getattr") { collect_entry(); } probe module("nfs").function("nfs3_proc_getattr").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 3 probe module("nfs").function("nfs3_proc_setattr") { collect_entry(); } probe module("nfs").function("nfs3_proc_setattr").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 4 probe module("nfs").function("nfs3_proc_lookup") { collect_entry(); } probe module("nfs").function("nfs3_proc_lookup").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 5 probe module("nfs").function("nfs3_proc_access") { collect_entry(); } probe module("nfs").function("nfs3_proc_access").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 6 probe module("nfs").function("nfs3_proc_readlink") { collect_entry(); } probe module("nfs").function("nfs3_proc_readlink").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 10 probe module("nfs").function("nfs3_proc_create") { collect_entry(); } probe module("nfs").function("nfs3_proc_create").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 11 probe module("nfs").function("nfs3_proc_remove") { collect_entry(); } probe module("nfs").function("nfs3_proc_remove").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 12 probe module("nfs").function("nfs3_proc_unlink_setup") { collect_entry(); } probe module("nfs").function("nfs3_proc_unlink_setup").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 13 probe module("nfs").function("nfs3_proc_unlink_done") { collect_entry(); } probe module("nfs").function("nfs3_proc_unlink_done").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 14 probe module("nfs").function("nfs3_proc_rename") { collect_entry(); } probe module("nfs").function("nfs3_proc_rename").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 15 probe module("nfs").function("nfs3_proc_link") { collect_entry(); } probe module("nfs").function("nfs3_proc_link").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 16 probe module("nfs").function("nfs3_proc_symlink") { collect_entry(); } probe module("nfs").function("nfs3_proc_symlink").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 17 probe module("nfs").function("nfs3_proc_mkdir") { collect_entry(); } probe module("nfs").function("nfs3_proc_mkdir").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 18 probe module("nfs").function("nfs3_proc_rmdir") { collect_entry(); } probe module("nfs").function("nfs3_proc_rmdir").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 19 probe module("nfs").function("nfs3_proc_readdir") { collect_entry(); } probe module("nfs").function("nfs3_proc_readdir").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 20 probe module("nfs").function("nfs3_proc_mknod") { collect_entry(); } probe module("nfs").function("nfs3_proc_mknod").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 21 probe module("nfs").function("nfs3_proc_statfs") { collect_entry(); } probe module("nfs").function("nfs3_proc_statfs").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 22 probe module("nfs").function("nfs3_proc_fsinfo") { collect_entry(); } probe module("nfs").function("nfs3_proc_fsinfo").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 23 probe module("nfs").function("nfs3_proc_pathconf") { collect_entry(); } probe module("nfs").function("nfs3_proc_pathconf").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 24 probe module("nfs").function("nfs3_decode_dirent") { collect_entry(); } probe module("nfs").function("nfs3_decode_dirent").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 25 probe module("nfs").function("nfs3_proc_read_setup") { collect_entry(); } probe module("nfs").function("nfs3_proc_read_setup").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 26 probe module("nfs").function("nfs3_read_done") { collect_entry(); } probe module("nfs").function("nfs3_read_done").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 27 probe module("nfs").function("nfs3_proc_write_setup") { collect_entry(); } probe module("nfs").function("nfs3_proc_write_setup").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 28 probe module("nfs").function("nfs3_write_done") { collect_entry(); } probe module("nfs").function("nfs3_write_done").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 29 probe module("nfs").function("nfs3_proc_commit_setup") { collect_entry(); } probe module("nfs").function("nfs3_proc_commit_setup").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 30 probe module("nfs").function("nfs3_commit_done") { collect_entry(); } probe module("nfs").function("nfs3_commit_done").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 31 probe module("nfs").function("nfs_open") { collect_entry(); } probe module("nfs").function("nfs_open").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 32 probe module("nfs").function("nfs_release") { collect_entry(); } probe module("nfs").function("nfs_release").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 33 probe module("nfs").function("nfs3_proc_lock") { collect_entry(); } probe module("nfs").function("nfs3_proc_lock").return { collect_exit(); } # Filename: nfs_v3_clientops_functions Line: 34 probe module("nfs").function("nfs3_forget_cached_acls") { collect_entry(); } probe module("nfs").function("nfs3_forget_cached_acls").return { collect_exit(); } */ probe end { printf("function count min_us avg_us max_us\n") foreach (i+ in timings) { printf("%-25s %7d %8d %8d %8d\n", i, @count(timings[i]), @min(timings[i]), @avg(timings[i]), @max(timings[i])) } }