2626from .profilers .cpu_profiler import CPUProfiler
2727from .profilers .allocation_profiler import AllocationProfiler
2828from .profilers .block_profiler import BlockProfiler
29+ from .profilers .tf_profiler import TFProfiler
2930
3031
31- class Span :
32+ class Span ( object ) :
3233
3334 def __init__ (self , stop_func = None ):
3435 if stop_func :
@@ -48,9 +49,9 @@ def __exit__(self, exc_type, exc_value, traceback):
4849 self .stop ()
4950
5051
51- class Agent :
52+ class Agent ( object ) :
5253
53- AGENT_VERSION = "1.2.2 "
54+ AGENT_VERSION = "1.2.3 "
5455 SAAS_DASHBOARD_ADDRESS = "https://agent-api.stackimpact.com"
5556
5657 def __init__ (self , ** kwargs ):
@@ -99,11 +100,19 @@ def __init__(self, **kwargs):
99100 config .report_interval = 120
100101 self .block_reporter = ProfileReporter (self , BlockProfiler (self ), config )
101102
103+ config = ProfilerConfig ()
104+ config .log_prefix = 'TensorFlow profiler'
105+ config .max_profile_duration = 20
106+ config .max_span_duration = 5
107+ config .max_span_count = 30
108+ config .span_interval = 20
109+ config .report_interval = 120
110+ self .tf_reporter = ProfileReporter (self , TFProfiler (self ), config )
102111
103112 self .options = None
104113
105114
106- def get_option (self , name , default_val = None ):
115+ def get_option (self , name , default_val = None ):
107116 if name not in self .options :
108117 return default_val
109118 else :
@@ -151,6 +160,7 @@ def start(self, **kwargs):
151160 self .cpu_reporter .setup ()
152161 self .allocation_reporter .setup ()
153162 self .block_reporter .setup ()
163+ self .tf_reporter .setup ()
154164 self .span_reporter .setup ()
155165 self .error_reporter .setup ()
156166 self .process_reporter .setup ()
@@ -201,6 +211,7 @@ def enable(self):
201211 self .cpu_reporter .start ()
202212 self .allocation_reporter .start ()
203213 self .block_reporter .start ()
214+ self .tf_reporter .start ()
204215 self .span_reporter .start ()
205216 self .error_reporter .start ()
206217 self .process_reporter .start ()
@@ -212,13 +223,14 @@ def disable(self):
212223 self .cpu_reporter .stop ()
213224 self .allocation_reporter .stop ()
214225 self .block_reporter .stop ()
226+ self .tf_reporter .stop ()
215227 self .span_reporter .stop ()
216228 self .error_reporter .stop ()
217229 self .process_reporter .stop ()
218230 self .config .set_agent_enabled (False )
219231
220232
221- def profile (self , name = 'Default' ):
233+ def profile (self , name = 'Default' ):
222234 if not self .agent_started or self .span_active :
223235 return Span (None )
224236
@@ -232,19 +244,21 @@ def profile(self, name = 'Default'):
232244 active_reporters .append (self .allocation_reporter )
233245 if self .block_reporter .started :
234246 active_reporters .append (self .block_reporter )
247+ if self .tf_reporter .started :
248+ active_reporters .append (self .tf_reporter )
235249
236250 if len (active_reporters ) > 0 :
237251 selected_reporter = active_reporters [int (math .floor (random .random () * len (active_reporters )))]
238252 if not selected_reporter .start_profiling (True , True ):
239253 selected_reporter = None
240254
241- start_timestamp = timestamp ()
255+ start_timestamp = time . time ()
242256
243257 def stop_func ():
244258 if selected_reporter :
245259 selected_reporter .stop_profiling ()
246260
247- duration = timestamp () - start_timestamp
261+ duration = time . time () - start_timestamp
248262 self .span_reporter .record_span (name , duration )
249263
250264 self .span_active = False
@@ -298,15 +312,24 @@ def stop_block_profiler(self):
298312 self ._stop_profiler (self .block_reporter )
299313
300314
315+ def start_tf_profiler (self ):
316+ self ._start_profiler (self .tf_reporter )
317+
318+
319+ def stop_tf_profiler (self ):
320+ self ._stop_profiler (self .tf_reporter )
321+
322+
301323 def report (self ):
302324 if not self .agent_started or self .get_option ('auto_profiling' ):
303325 return
304326
305- self .configLoader .load (True )
327+ self .config_loader .load (True )
306328
307- self .cpuReporter .report (True );
308- self .allocationReporter .report (True );
309- self .asyncReporter .report (True );
329+ self .cpu_reporter .report (True );
330+ self .allocation_reporter .report (True );
331+ self .block_reporter .report (True );
332+ self .tf_reporter .report (True );
310333
311334 self .messageQueue .flush (True )
312335
@@ -325,13 +348,15 @@ def destroy(self):
325348 self .cpu_reporter .stop ()
326349 self .allocation_reporter .stop ()
327350 self .block_reporter .stop ()
351+ self .tf_reporter .stop ()
328352 self .error_reporter .stop ()
329353 self .span_reporter .stop ()
330354 self .process_reporter .stop ()
331355
332356 self .cpu_reporter .destroy ()
333357 self .allocation_reporter .destroy ()
334358 self .block_reporter .destroy ()
359+ self .tf_reporter .destroy ()
335360 self .error_reporter .destroy ()
336361 self .span_reporter .destroy ()
337362 self .process_reporter .destroy ()
@@ -421,7 +446,7 @@ def run_in_main_thread(self, func):
421446
422447
423448
424- class TimerWraper ():
449+ class TimerWraper (object ):
425450 def __init__ (self ):
426451 self .timer = None
427452 self .cancel_lock = threading .Lock ()
0 commit comments