From 939abdfed71349df87712559553593dc95f406c5 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 19 Jul 2013 00:29:47 +0000 Subject: tapset: rename http_request.stp -> all.stp This tapset will contain every probe point and acts as a check/documentation for extracting useful probes. --- tapset/all.stp | 129 ++++++++++++++++++++++++++++++++++++++++++++++++ tapset/http_request.stp | 109 ---------------------------------------- 2 files changed, 129 insertions(+), 109 deletions(-) create mode 100644 tapset/all.stp delete mode 100644 tapset/http_request.stp diff --git a/tapset/all.stp b/tapset/all.stp new file mode 100644 index 0000000..600c07a --- /dev/null +++ b/tapset/all.stp @@ -0,0 +1,129 @@ +/* + * This is an extremely detailed tapset for capturing all supported probe + * points in the current version of cmogstored. It likely contains too much + * information to be useful, extracting relevant probes is recommended. + */ + +/* keyed by: [pid(),fd] */ +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; + host = user_string($arg2); + serv = user_string($arg3); + listen = user_string($arg4); + host_serv = sprintf("%s%s", host, serv); + printf("% 6d % 6d accepted %s on %s\n", pid(), fd, host_serv, listen); + cmogstored_http_addr[pid(),fd] = host_serv; +} + +/* + * mog_ioq_ready..ioq_reschedule = time waiting for others to finish IO + * ioq_reschedule..mog_ioq_unblock = time inside epoll ready list + */ + +/* 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; +} + +/* + * 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()]); +} + +/* + * we hit ioq_reschedule when we are ready to enter the epoll ready-list + * we will hit mog_ioq_unblock eventually + */ +probe process("cmogstored").mark("ioq_reschedule") { + fd = @cast($mfd, "struct mog_fd")->fd; + 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 + * 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()]); +} + +/* + * HTTP client disconnected + */ +probe process("cmogstored").function("http_close") { + fd = @cast($mfd, "struct mog_fd")->fd; + 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; + 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); +} + +/* 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); +} + +/* 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); +} + +/* 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); +} + +/* 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); +} diff --git a/tapset/http_request.stp b/tapset/http_request.stp deleted file mode 100644 index ca0b85c..0000000 --- a/tapset/http_request.stp +++ /dev/null @@ -1,109 +0,0 @@ -/* keyed by: [pid(),fd] */ -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; - host = user_string($arg2); - serv = user_string($arg3); - listen = user_string($arg4); - host_serv = sprintf("%s%s", host, serv); - printf("% 6d % 6d accepted %s on %s\n", pid(), fd, host_serv, listen); - cmogstored_http_addr[pid(),fd] = host_serv; -} - -/* - * mog_ioq_ready..ioq_reschedule = time waiting for others to finish IO - * ioq_reschedule..mog_ioq_unblock = time inside epoll ready list - */ - -/* 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; -} - -/* - * 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()]); -} - -/* - * we hit ioq_reschedule when we are ready to enter the epoll ready-list - * we will hit mog_ioq_unblock eventually - */ -probe process("cmogstored").mark("ioq_reschedule") { - fd = @cast($mfd, "struct mog_fd")->fd; - 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 - * 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()]); -} - -/* - * HTTP client disconnected - */ -probe process("cmogstored").function("http_close") { - fd = @cast($mfd, "struct mog_fd")->fd; - 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; - 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); -} - -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").function("mgmt_rbuf_grow") { - fd = @cast($mfd, "struct mog_fd")->fd; - printf("% 6d % 6d mgmt_rbuf_grow %lu\n", pid(), fd, $buf_len); -} -- cgit v1.2.3-24-ge0c7