xref: /aosp_15_r20/external/aws-crt-java/codebuild/CanaryWrapper_MetricFunctions.py (revision 3c7ae9de214676c52d19f01067dc1a404272dc11)
1*3c7ae9deSAndroid Build Coastguard Worker# Contains all of the metric reporting functions for the Canary Wrappers
2*3c7ae9deSAndroid Build Coastguard Worker
3*3c7ae9deSAndroid Build Coastguard Worker# Needs to be installed prior to running
4*3c7ae9deSAndroid Build Coastguard Workerimport psutil
5*3c7ae9deSAndroid Build Coastguard Worker
6*3c7ae9deSAndroid Build Coastguard Worker
7*3c7ae9deSAndroid Build Coastguard Workercache_cpu_psutil_process = None
8*3c7ae9deSAndroid Build Coastguard Workerdef get_metric_total_cpu_usage(psutil_process : psutil.Process):
9*3c7ae9deSAndroid Build Coastguard Worker    global cache_cpu_psutil_process
10*3c7ae9deSAndroid Build Coastguard Worker
11*3c7ae9deSAndroid Build Coastguard Worker    try:
12*3c7ae9deSAndroid Build Coastguard Worker        if (psutil_process == None):
13*3c7ae9deSAndroid Build Coastguard Worker            print ("ERROR - No psutil.process passed! Cannot gather metric!", flush=True)
14*3c7ae9deSAndroid Build Coastguard Worker            return None
15*3c7ae9deSAndroid Build Coastguard Worker        # We always need to skip the first CPU poll
16*3c7ae9deSAndroid Build Coastguard Worker        if (cache_cpu_psutil_process != psutil_process):
17*3c7ae9deSAndroid Build Coastguard Worker            psutil.cpu_percent(interval=None)
18*3c7ae9deSAndroid Build Coastguard Worker            cache_cpu_psutil_process = psutil_process
19*3c7ae9deSAndroid Build Coastguard Worker            return None
20*3c7ae9deSAndroid Build Coastguard Worker        return psutil.cpu_percent(interval=None)
21*3c7ae9deSAndroid Build Coastguard Worker    except Exception as e:
22*3c7ae9deSAndroid Build Coastguard Worker        print ("ERROR - exception occurred gathering metrics!")
23*3c7ae9deSAndroid Build Coastguard Worker        print ("Exception: " + str(e), flush=True)
24*3c7ae9deSAndroid Build Coastguard Worker        return None
25*3c7ae9deSAndroid Build Coastguard Worker
26*3c7ae9deSAndroid Build Coastguard Worker# Note: This value is in BYTES.
27*3c7ae9deSAndroid Build Coastguard Workerdef get_metric_total_memory_usage_value(psutil_process : psutil.Process):
28*3c7ae9deSAndroid Build Coastguard Worker    try:
29*3c7ae9deSAndroid Build Coastguard Worker        if (psutil_process == None):
30*3c7ae9deSAndroid Build Coastguard Worker            print ("ERROR - No psutil.process passed! Cannot gather metric!", flush=True)
31*3c7ae9deSAndroid Build Coastguard Worker            return None
32*3c7ae9deSAndroid Build Coastguard Worker        return psutil.virtual_memory()[3]
33*3c7ae9deSAndroid Build Coastguard Worker    except Exception as e:
34*3c7ae9deSAndroid Build Coastguard Worker        print ("ERROR - exception occurred gathering metrics!")
35*3c7ae9deSAndroid Build Coastguard Worker        print ("Exception: " + str(e), flush=True)
36*3c7ae9deSAndroid Build Coastguard Worker        return None
37*3c7ae9deSAndroid Build Coastguard Worker
38*3c7ae9deSAndroid Build Coastguard Worker
39*3c7ae9deSAndroid Build Coastguard Workerdef get_metric_total_memory_usage_percent(psutil_process : psutil.Process):
40*3c7ae9deSAndroid Build Coastguard Worker    try:
41*3c7ae9deSAndroid Build Coastguard Worker        if (psutil_process == None):
42*3c7ae9deSAndroid Build Coastguard Worker            print ("ERROR - No psutil.process passed! Cannot gather metric!", flush=True)
43*3c7ae9deSAndroid Build Coastguard Worker            return None
44*3c7ae9deSAndroid Build Coastguard Worker        return psutil.virtual_memory()[2]
45*3c7ae9deSAndroid Build Coastguard Worker    except Exception as e:
46*3c7ae9deSAndroid Build Coastguard Worker        print ("ERROR - exception occurred gathering metrics!")
47*3c7ae9deSAndroid Build Coastguard Worker        print ("Exception: " + str(e), flush=True)
48*3c7ae9deSAndroid Build Coastguard Worker        return None
49