DynamoRIO / DynamoRIO/drmemory
Umbra slows down Dr. Memory by 15%+
- 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
Assessment
This issue has not been assessed yet.