Advertisement
Guest User

Untitled

a guest
Sep 29th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.16 KB | None | 0 0
  1. #!/usr/bin/env python
  2. from time import sleep
  3. import sys
  4.  
  5. from pyroute2 import TaskStats
  6. from pyroute2.netlink import NLM_F_REQUEST
  7. from pyroute2.netlink.taskstats import tcmd
  8. from pyroute2.netlink.taskstats import TASKSTATS_CMD_GET
  9. ts = TaskStats()
  10. ts.bind()
  11.  
  12. def do_request():
  13. return ts.nlm_request(msg, ts.prid, msg_flags=NLM_F_REQUEST)
  14.  
  15. def delaytop():
  16. msg = tcmd()
  17. msg['cmd'] = TASKSTATS_CMD_GET
  18. msg['version'] = 1
  19. msg['attrs'].append(['TASKSTATS_CMD_ATTR_TGID', sys.argv[1]])
  20.  
  21. delays = lambda a: (lambda attrs: (attrs['cpu_delay_total'], attrs['cpu_run_real_total']))(a[0]['attrs'][0][1]['attrs'][1][1])
  22. d = delays(do_request())
  23. while True:
  24. sleep(1)
  25. old_d = d
  26. d = delays(do_request())
  27. ran = d[1] - old_d[1]
  28. waited = d[0] - old_d[0]
  29. if ran > 0:
  30. print "{:b}".format(waited * 1024 / ran)
  31. else:
  32. print 0
  33.  
  34. def watchexits():
  35. ts.register_mask('0-23')
  36. while True:
  37. s = ts.get()
  38. ss = s[0]['attrs'][0][1]['attrs'][1][1]
  39. print((ss['ac_pid'], ss['ac_ppid'], ss['cpu_delay_total'], ss['cpu_run_real_total'], ss['ac_comm']))
  40.  
  41. watchexits()
  42. ts.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement