Skip to content

Instantly share code, notes, and snippets.

Created January 9, 2015 01:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save anonymous/195bd6631b50fa2eb90d to your computer and use it in GitHub Desktop.
Save anonymous/195bd6631b50fa2eb90d to your computer and use it in GitHub Desktop.
import json
import sys
import pandas as pd
import matplotlib.pyplot as plt
from optparse import OptionParser
def make_dataframe(raw_events, name):
#start_ts = {}
filtered = [ dict(e.items() + e["args"].items()) for e in raw_events if e["name"] == name ]
filtered = sorted(filtered, key=lambda i: i["ts"])
last_ts = 0
for r in filtered:
i = r.get("id")
if r["ph"] == "s":
r["step"] = 0
#start_ts[i] = r["ts"]
last_ts = r["ts"]
if r["ph"] == "f":
r["step"] = 6
#if not start_ts.get(i):
# continue
r["lap"] = r["ts"] - last_ts
last_ts = r["ts"]
df = pd.DataFrame(filtered).sort(["ts"])
return df
def analyse_sender(df):
print "Samples:", len(df)
steps = {
0: "Begin:",
1: "Post :",
2: "IOBeg:",
3: "WRBeg:",
4: "WREnd:",
5: "IOEnd:",
6: "End :"
}
for s in steps.keys():
laps = df[df["step"] == s]["lap"]
print s, steps[s], laps.median(), laps.std()
def analyse_receive_post(df):
print "Samples:", len(df)
laps = df[df["ph"] == "f"]["lap"]
print laps.median(), laps.std()
parser = OptionParser()
parser.add_option("-s", "--sender", dest="sname", metavar="FILE")
parser.add_option("-r", "--receiver", dest="rname", metavar="FILE")
(options, args) = parser.parse_args(sys.argv)
if options.sname:
raw_events = json.load(open(options.sname))["traceEvents"]
df = make_dataframe(raw_events, "SyncSend")
analyse_sender(df)
if options.rname:
raw_events = json.load(open(options.rname))["traceEvents"]
df = make_dataframe(raw_events, "SyncReceivePost")
analyse_receive_post(df)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment