Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/dtrace -s
- #pragma D option quiet
- BEGIN
- {
- printf("Tracing... Hit Ctrl-c to end ,\n");
- r = 0;
- w = 0;
- bytes["read"] = 0;
- bytes["write"] = 0;
- }
- syscall::read:entry
- /execname == "iozone" & r == 0 / {
- time_start_ns[probefunc] = timestamp;
- r = 1;
- }
- syscall::write:entry
- /execname == "iozone" & w == 0 / {
- time_start_ns[probefunc] = timestamp;
- w = 1;
- }
- syscall::read:return,
- syscall::write:return
- /execname == "iozone" & time_start_ns[probefunc] != 0/ {
- /*
- timestamp :: nanoseconds
- ns = nanoseconds; us = microseconds; ms = milliseconds
- 1 ns == 1,000 us == 1,000,000ms
- */
- time_finish_ns[probefunc] = timestamp;
- }
- syscall::read:entry,syscall::write:entry /execname == "iozone"/ {
- bytes[probefunc] = bytes[probefunc] + arg2;
- printf("At %Y file %s by %d bytes\n", walltimestamp, probefunc, arg2);
- @[probefunc] = count();
- }
- END
- {
- time_ns_write = time_finish_ns["write"] - time_start_ns["write"];
- time_ns_read = time_finish_ns["read"] - time_start_ns["read"];
- byte_second_write = ((bytes["write"] * 1000000000) / time_ns_write) / 1000;
- byte_second_read = ((bytes["read"] * 1000000000) / time_ns_read) / 1000;
- printf(" %d %7d %d %7d\n", bytes["read"], time_ns_read, bytes["write"], time_ns_write);
- printf(" %d %d\n", byte_second_write, byte_second_read);
- printf(" %-16s %7s\n", "SYSCALL", "COUNT");
- printa(" %-16s %@7d %@7d\n", @ );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement