| OLD | NEW |
| (Empty) |
| 1 #!/usr/bin/env python | |
| 2 # | |
| 3 # Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. | |
| 4 # | |
| 5 # Use of this source code is governed by a BSD-style license | |
| 6 # that can be found in the LICENSE file in the root of the source | |
| 7 # tree. An additional intellectual property rights grant can be found | |
| 8 # in the file PATENTS. All contributing project authors may | |
| 9 # be found in the AUTHORS file in the root of the source tree. | |
| 10 | |
| 11 | |
| 12 import psutil | |
| 13 import sys | |
| 14 | |
| 15 import numpy | |
| 16 from matplotlib import pyplot | |
| 17 | |
| 18 | |
| 19 class CpuSnapshot(object): | |
| 20 def __init__(self, label): | |
| 21 self.label = label | |
| 22 self.samples = [] | |
| 23 | |
| 24 def Capture(self, sample_count): | |
| 25 print ('Capturing %d CPU samples for %s...' % | |
| 26 ((sample_count - len(self.samples)), self.label)) | |
| 27 while len(self.samples) < sample_count: | |
| 28 self.samples.append(psutil.cpu_percent(1.0, False)) | |
| 29 | |
| 30 def Text(self): | |
| 31 return ('%s: avg=%s, median=%s, min=%s, max=%s' % | |
| 32 (self.label, numpy.average(self.samples), | |
| 33 numpy.median(self.samples), | |
| 34 numpy.min(self.samples), numpy.max(self.samples))) | |
| 35 | |
| 36 def Max(self): | |
| 37 return numpy.max(self.samples) | |
| 38 | |
| 39 | |
| 40 def GrabCpuSamples(sample_count): | |
| 41 print 'Label for snapshot (enter to quit): ' | |
| 42 label = raw_input().strip() | |
| 43 if len(label) == 0: | |
| 44 return None | |
| 45 | |
| 46 snapshot = CpuSnapshot(label) | |
| 47 snapshot.Capture(sample_count) | |
| 48 | |
| 49 return snapshot | |
| 50 | |
| 51 | |
| 52 def main(): | |
| 53 print 'How many seconds to capture per snapshot (enter for 60)?' | |
| 54 sample_count = raw_input().strip() | |
| 55 if len(sample_count) > 0 and int(sample_count) > 0: | |
| 56 sample_count = int(sample_count) | |
| 57 else: | |
| 58 print 'Defaulting to 60 samples.' | |
| 59 sample_count = 60 | |
| 60 | |
| 61 snapshots = [] | |
| 62 while True: | |
| 63 snapshot = GrabCpuSamples(sample_count) | |
| 64 if snapshot == None: | |
| 65 break | |
| 66 snapshots.append(snapshot) | |
| 67 | |
| 68 if len(snapshots) == 0: | |
| 69 print 'no samples captured' | |
| 70 return -1 | |
| 71 | |
| 72 pyplot.title('CPU usage') | |
| 73 | |
| 74 for s in snapshots: | |
| 75 pyplot.plot(s.samples, label=s.Text(), linewidth=2) | |
| 76 | |
| 77 pyplot.legend() | |
| 78 | |
| 79 pyplot.show() | |
| 80 return 0 | |
| 81 | |
| 82 if __name__ == '__main__': | |
| 83 sys.exit(main()) | |
| OLD | NEW |