Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.62 KB | None | 0 0
  1. #!/usr/bin/dtrace -s
  2. #pragma D option quiet
  3.  
  4. BEGIN
  5. {
  6. printf("Tracing... Hit Ctrl-c to end ,\n");
  7.  
  8. r = 0;
  9. w = 0;
  10. bytes["read"] = 0;
  11. bytes["write"] = 0;
  12.  
  13. }
  14.  
  15.  
  16.  
  17.  
  18.  
  19. syscall::read:entry
  20. /execname == "iozone" & r == 0 / {
  21. time_start_ns[probefunc] = timestamp;
  22. r = 1;
  23.  
  24. }
  25. syscall::write:entry
  26. /execname == "iozone" & w == 0 / {
  27. time_start_ns[probefunc] = timestamp;
  28. w = 1;
  29.  
  30. }
  31.  
  32. syscall::read:return,
  33. syscall::write:return
  34. /execname == "iozone" & time_start_ns[probefunc] != 0/ {
  35. /*
  36. timestamp :: nanoseconds
  37. ns = nanoseconds; us = microseconds; ms = milliseconds
  38. 1 ns == 1,000 us == 1,000,000ms
  39. */
  40.  
  41. time_finish_ns[probefunc] = timestamp;
  42. }
  43.  
  44. syscall::read:entry,syscall::write:entry /execname == "iozone"/ {
  45.  
  46. bytes[probefunc] = bytes[probefunc] + arg2;
  47. printf("At %Y file %s by %d bytes\n", walltimestamp, probefunc, arg2);
  48.  
  49. @[probefunc] = count();
  50. }
  51.  
  52. END
  53. {
  54. time_ns_write = time_finish_ns["write"] - time_start_ns["write"];
  55. time_ns_read = time_finish_ns["read"] - time_start_ns["read"];
  56.  
  57. byte_second_write = ((bytes["write"] * 1000000000) / time_ns_write) / 1000;
  58. byte_second_read = ((bytes["read"] * 1000000000) / time_ns_read) / 1000;
  59.  
  60. printf(" %d %7d %d %7d\n", bytes["read"], time_ns_read, bytes["write"], time_ns_write);
  61. printf(" %d %d\n", byte_second_write, byte_second_read);
  62.  
  63. printf(" %-16s %7s\n", "SYSCALL", "COUNT");
  64. printa(" %-16s %@7d %@7d\n", @ );
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement