DynamoRIO / DynamoRIO/drmemory

Umbra slows down Dr. Memory by 15%+

Open
#1,244 2 comments 0 reactions 0 assignees View on GitHub
Migrated Performance Priority-High
Dominant language
C
Stars
2.7k
Forks
290
PR merge metrics
No merged PRs in 30d

Description

_From [bruen...@google.com](https://code.google.com/u/109494838902877177630/) on May 18, 2013 00:50:25_

r1357 , which refactored Dr. Memory to use Umbra, has slowed the tool down noticeably.

Here's r1356 on cfrac on Linux:

# for ((i=0; i<3; i++)); do /usr/bin/time /work/drmemory/git/build_x86_rel/bin/drmemory.pl -quiet -dr /work/dr/git/exports -- ./cfrac 41757646
30.56user 0.04system 0:30.70elapsed 99%CPU (0avgtext+0avgdata 11172maxresident)k
31.55user 0.05system 0:31.73elapsed 99%CPU (0avgtext+0avgdata 11192maxresident)k
28.61user 0.05system 0:28.75elapsed 99%CPU (0avgtext+0avgdata 11228maxresident)k
29.31user 0.04system 0:29.44elapsed 99%CPU (0avgtext+0avgdata 11188maxresident)k
# for ((i=0; i<3; i++)); do /usr/bin/time /work/drmemory/git/build_x86_rel/bin/drmemory.pl -delay_frees_stack -quiet -dr /work/dr/git/exports -- ./cfrac 41757646344123832613190542166099121; done
37.65user 0.04system 0:37.81elapsed 99%CPU (0avgtext+0avgdata 11228maxresident)k
39.87user 0.05system 0:40.04elapsed 99%CPU (0avgtext+0avgdata 11196maxresident)k
40.02user 0.05system 0:40.19elapsed 99%CPU (0avgtext+0avgdata 11196maxresident)k
37.76user 0.04system 0:37.93elapsed 99%CPU (0avgtext+0avgdata 11232maxresident)k

Now here's r1387 (TOT) which has Umbra:
defaults:
32.72user 0.06system 0:33.86elapsed 96%CPU (0avgtext+0avgdata 12524maxresident)k
32.86user 0.05system 0:33.01elapsed 99%CPU (0avgtext+0avgdata 11684maxresident)k
34.40user 0.05system 0:34.56elapsed 99%CPU (0avgtext+0avgdata 11680maxresident)k

-delay_frees_stack:
46.72user 0.04system 0:47.09elapsed 99%CPU (0avgtext+0avgdata 11704maxresident)k
46.92user 0.04system 0:47.15elapsed 99%CPU (0avgtext+0avgdata 11704maxresident)k
46.65user 0.05system 0:47.25elapsed 98%CPU (0avgtext+0avgdata 11704maxresident)k

Profiling r1356 (pre-Umbra) with -delay_frees_stack:

ITIMER distribution (3897):
0.4% of time in INTERPRETER (15)
1.4% of time in INDIRECT BRANCH LOOKUP (56)
23.2% of time in FRAGMENT CACHE (906)
74.9% of time in UNKNOWN (2920)
RES-pcsamples.0.29067.html
20 packed_callstack_add_ref
23 rb_node_fields
24 replace_native_xfer
25 shadow_get_dword
25 ??
26 find_next_fp.constprop.11
39 packed_callstack_free
40 __x86.get_pc_thunk.bx
50 replace_alloc_common
62 shadow_set_range
65 rb_in_node
66 safe_read
69 replace_free_common
108 packed_callstack_record
127 address_to_frame.isra.8.constprop.14

Profiling post-Umbra with -delay_frees_stack:

ITIMER distribution (4429):
0.0% of time in APPLICATION (1)
1.4% of time in INTERPRETER (62)
1.4% of time in INDIRECT BRANCH LOOKUP (60)
21.0% of time in FRAGMENT CACHE (931)
76.2% of time in UNKNOWN (3375)
RES-pcsamples.0.23951.html
31 umbra_get_shadow_memory
38 packed_callstack_free
38 shadow_set_range
47 rb_in_node
47 shadow_get_dword
53 replace_alloc_common
67 umbra_map_scale_app_to_shadow
67 safe_read
68 __x86.get_pc_thunk.bx
71 replace_free_common
93 zero_stack
103 packed_callstack_record
114 address_to_frame.isra.8.constprop.14
123 umbra_get_shadow_memory_arch
125 umbra_shadow_set_range_arch.part.2

So umbra_get_shadow_memory_arch and umbra_shadow_set_range are causing a significant slowdown.

_Original issue: http://code.google.com/p/drmemory/issues/detail?id=1244_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.