diff options
Diffstat (limited to 'tapset/all.stp')
-rw-r--r-- | tapset/all.stp | 96 |
1 files changed, 41 insertions, 55 deletions
diff --git a/tapset/all.stp b/tapset/all.stp index 600c07a..df6ab88 100644 --- a/tapset/all.stp +++ b/tapset/all.stp @@ -8,7 +8,6 @@ global cmogstored_http_req_begin; global cmogstored_http_pipelined; global cmogstored_http_addr; -global cmogstored_fd_by_tid; probe process("cmogstored").mark("http_accepted") { fd = $arg1; @@ -24,20 +23,22 @@ probe process("cmogstored").mark("http_accepted") { * mog_ioq_ready..ioq_reschedule = time waiting for others to finish IO * ioq_reschedule..mog_ioq_unblock = time inside epoll ready list */ +probe process("cmogstored").mark("ioq_blocked") { + fd = $arg1; + printf("% 6d % 6d ioq blocked\n", pid(), fd); +} -/* associate the fd with thread for the function return */ -probe process("cmogstored").function("mog_ioq_ready") { - cmogstored_fd_by_tid[tid()] = @cast($mfd, "struct mog_fd")->fd; +probe process("cmogstored").mark("http_req_start") { + fd = $arg1; + method = user_string($arg2); + path = user_string($arg3); + printf("% 6d % 6d %s %s HTTP/1.1\n", pid(), fd, method, path); } -/* - * if mog_ioq_ready returns false, we are blocked waiting on I/O and - * will hit ioq_reschedule - */ -probe process("cmogstored").function("mog_ioq_ready").return { - if (!$return) - printf("% 6d % 6d ioq blocked\n", - pid(), cmogstored_fd_by_tid[tid()]); +probe process("cmogstored").mark("http_res_start") { + fd = $arg1; + code = user_string_n($arg2, 3); + printf("% 6d % 6d HTTP res=%s\n", pid(), fd, code); } /* @@ -45,85 +46,70 @@ probe process("cmogstored").function("mog_ioq_ready").return { * we will hit mog_ioq_unblock eventually */ probe process("cmogstored").mark("ioq_reschedule") { - fd = @cast($mfd, "struct mog_fd")->fd; + fd = $arg1; printf("% 6d % 6d ioq reschedule_enter\n", pid(), fd); } -/* associate the fd with thread for the function return */ -probe process("cmogstored").function("mog_ioq_unblock") { - cmogstored_fd_by_tid[tid()] = @cast($mfd, "struct mog_fd")->fd; -} - /* - * if mog_ioq_unblock returns true, it means the fd was previously + * if ioq_unblock returns true, it means the fd was previously * in ioq_reschedule */ -probe process("cmogstored").function("mog_ioq_unblock").return { - if ($return) - printf("% 6d % 6d ioq reschedule_done\n", - pid(), cmogstored_fd_by_tid[tid()]); +probe process("cmogstored").mark("ioq_unblocked") { + fd = $arg1; + printf("% 6d % 6d ioq reschedule_done\n", pid(), fd); } /* * HTTP client disconnected */ -probe process("cmogstored").function("http_close") { - fd = @cast($mfd, "struct mog_fd")->fd; +probe process("cmogstored").mark("http_client_close") { + fd = $arg1; printf("% 6d % 6d closing\n", pid(), fd); - delete cmogstored_http_addr[pid(),fd]; } /* * We start reading/buffering the HTTP request here */ probe process("cmogstored").mark("http_req_begin") { - fd = @cast($mfd, "struct mog_fd")->fd; - is_pipelined = $arg1; + fd = $arg1; + is_pipelined = $arg2; cmogstored_http_req_begin[pid(),fd] = gettimeofday_us(); cmogstored_http_pipelined[pid(),fd] = is_pipelined; } /* - * we start processing the HTTP request (opening/stat-ing files) - */ -probe process("cmogstored").function("http_process_client") { - fd = @cast($mfd, "struct mog_fd")->fd; - starttime = cmogstored_http_req_begin[pid(),fd]; - diff = gettimeofday_us() - starttime; - - is_pipelined = cmogstored_http_pipelined[pid(),fd]; - printf("% 6d % 6d http_process_client time %ldus (pipelined:%s)\n", - pid(), fd, diff, is_pipelined ? "true" : "false"); -} - -/* * We blocked on writing (HTTP headers) to the client socket */ probe process("cmogstored").mark("write_buffered") { - printf("% 6d % 6d blocked with %lu bytes to write\n", - pid(), $fd, $len); + fd = $arg1; + len = $arg2; + printf("% 6d % 6d blocked with %lu bytes to write\n", pid(), fd, len); } /* signals a client is making us reallocate on large requests */ -probe process("cmogstored").function("http_rbuf_grow") { - fd = @cast($mfd, "struct mog_fd")->fd; - printf("% 6d % 6d http_rbuf_grow %lu\n", pid(), fd, $buf_len); +probe process("cmogstored").mark("http_rbuf_grow") { + fd = $arg1; + buf_len = $arg2; + printf("% 6d % 6d http_rbuf_grow %lu\n", pid(), fd, buf_len); } /* signals a client is making us reallocate on large requests */ -probe process("cmogstored").function("mgmt_rbuf_grow") { - fd = @cast($mfd, "struct mog_fd")->fd; - printf("% 6d % 6d mgmt_rbuf_grow %lu\n", pid(), fd, $buf_len); +probe process("cmogstored").mark("mgmt_rbuf_grow") { + fd = $arg1; + buf_len = $arg2; + printf("% 6d % 6d mgmt_rbuf_grow %lu\n", pid(), fd, buf_len); } /* this signals a client is trickling requests to us */ -probe process("cmogstored").function("http_parse_continue") { - fd = @cast($mfd, "struct mog_fd")->fd; - printf("% 6d % 6d http_parse_continue %lu\n", pid(), fd, $buf_len); +probe process("cmogstored").mark("http_parse_continue") { + fd = $arg1; + buf_len = $arg2; + printf("% 6d % 6d http_parse_continue %lu\n", pid(), fd, buf_len); } /* this signals a client is trickling requests to us */ -probe process("cmogstored").function("mgmt_parse_continue") { - fd = @cast($mfd, "struct mog_fd")->fd; - printf("% 6d % 6d mgmt_parse_continue %lu\n", pid(), fd, $buf_len); +probe process("cmogstored").mark("mgmt_parse_continue") { + fd = $arg1; + buf_len = $arg2; + printf("% 6d % 6d mgmt_parse_continue %lu\n", pid(), fd, buf_len); } |