Skip to content

Commit

Permalink
Add an option to strip leading zeros from histograms (iovisor#1226)
Browse files Browse the repository at this point in the history
  • Loading branch information
Taekho Nam authored and goldshtn committed Jun 29, 2017
1 parent 1ffe18f commit 0bd1a6d
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 11 deletions.
29 changes: 19 additions & 10 deletions src/python/bcc/table.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ def _stars(val, val_max, width):
return text


def _print_log2_hist(vals, val_type):
def _print_log2_hist(vals, val_type, strip_leading_zero):
global stars_max
log2_dist_max = 64
idx_max = -1
Expand All @@ -74,15 +74,23 @@ def _print_log2_hist(vals, val_type):
stars = int(stars_max / 2)

if idx_max > 0:
print(header % val_type);
print(header % val_type)

for i in range(1, idx_max + 1):
low = (1 << i) >> 1
high = (1 << i) - 1
if (low == high):
low -= 1
val = vals[i]
print(body % (low, high, val, stars,
_stars(val, val_max, stars)))

if strip_leading_zero:
if val:
print(body % (low, high, val, stars,
_stars(val, val_max, stars)))
strip_leading_zero = False
else:
print(body % (low, high, val, stars,
_stars(val, val_max, stars)))

def _print_linear_hist(vals, val_type):
global stars_max
Expand Down Expand Up @@ -281,7 +289,7 @@ def next(self, key):
return next_key

def print_log2_hist(self, val_type="value", section_header="Bucket ptr",
section_print_fn=None, bucket_fn=None):
section_print_fn=None, bucket_fn=None, strip_leading_zero=None):
"""print_log2_hist(val_type="value", section_header="Bucket ptr",
section_print_fn=None, bucket_fn=None)
Expand All @@ -292,8 +300,10 @@ def print_log2_hist(self, val_type="value", section_header="Bucket ptr",
If section_print_fn is not None, it will be passed the bucket value
to format into a string as it sees fit. If bucket_fn is not None,
it will be used to produce a bucket value for the histogram keys.
The maximum index allowed is log2_index_max (65), which will
accomodate any 64-bit integer in the histogram.
If the value of strip_leading_zero is not False, prints a histogram
that is omitted leading zeros from the beginning. The maximum index
allowed is log2_index_max (65), which will accomodate any 64-bit
integer in the histogram.
"""
if isinstance(self.Key(), ct.Structure):
tmp = {}
Expand All @@ -312,12 +322,12 @@ def print_log2_hist(self, val_type="value", section_header="Bucket ptr",
section_print_fn(bucket)))
else:
print("\n%s = %r" % (section_header, bucket))
_print_log2_hist(vals, val_type)
_print_log2_hist(vals, val_type, strip_leading_zero)
else:
vals = [0] * log2_index_max
for k, v in self.items():
vals[k.value] = v.value
_print_log2_hist(vals, val_type)
_print_log2_hist(vals, val_type, strip_leading_zero)

def print_linear_hist(self, val_type="value", section_header="Bucket ptr",
section_print_fn=None, bucket_fn=None):
Expand Down Expand Up @@ -709,4 +719,3 @@ def __delitem__(self, key):

def clear(self):
pass

2 changes: 1 addition & 1 deletion tools/funclatency_example.txt
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ Tracing 1 function for "pthread:pthread_mutex_lock"... Hit Ctrl-C to end.
1048576 -> 2097151 : 9 | |
Detaching...

It seems that most calls to pthread_mutex_lock completed rather quickly (in
It seems that most calls to pthread_mutex_lock completed rather quickly (in
under 4us), but there were some cases of considerable contention, sometimes
over a full millisecond.

Expand Down

0 comments on commit 0bd1a6d

Please sign in to comment.