@@ -130,6 +130,16 @@ def pre_process(text, args):
130130 return text
131131
132132
133+ def output (bpf , fmt = "plain" ):
134+ if fmt == "plain" :
135+ print ()
136+ for (k , v ) in bpf .get_table ('query_stacks' ).items ():
137+ if stack_from_wal (bpf , k .user_stack_id , k .pid ):
138+ print ("[{}:{}], {}, len: {}" .format (
139+ k .pid , k .namespace , k .name , utils .size (v .value )))
140+ print_stack (bpf , k .user_stack_id , k .pid )
141+
142+
133143def run (args ):
134144 print ("Attaching..." )
135145 debug = 4 if args .debug else 0
@@ -140,7 +150,10 @@ def run(args):
140150 print ("Listening..." )
141151 while True :
142152 try :
143- sleep (1 )
153+ sleep (args .interval )
154+ output (bpf )
155+ bpf .get_table ('query_stacks' ).clear ()
156+
144157 if args .debug :
145158 bpf .perf_buffer_poll ()
146159 except KeyboardInterrupt :
@@ -154,11 +167,7 @@ def run(args):
154167 print ()
155168 break
156169
157- for (k , v ) in bpf .get_table ('query_stacks' ).items ():
158- if stack_from_wal (bpf , k .user_stack_id , k .pid ):
159- print ("[{}:{}], {}, len: {}" .format (
160- k .pid , k .namespace , k .name , size (v .value )))
161- print_stack (bpf , k .user_stack_id , k .pid )
170+ output (bpf )
162171
163172
164173def parse_args ():
@@ -172,6 +181,8 @@ def parse_args():
172181 help = "trace this container only" )
173182 parser .add_argument ("-n" , "--namespace" , type = int ,
174183 help = "trace this namespace only" )
184+ parser .add_argument ("-i" , "--interval" , type = int , default = 5 ,
185+ help = "after how many seconds output the result" )
175186 parser .add_argument ("-d" , "--debug" , action = 'store_true' , default = False ,
176187 help = "debug mode" )
177188 return parser .parse_args ()
0 commit comments