From 0246c6ba4a08378c46c17617d831d6baf0f44989 Mon Sep 17 00:00:00 2001 From: William Cohen Date: Fri, 9 Jan 2015 16:44:09 -0500 Subject: [PATCH] Allow operf to track anon_hugepage mmap entries The perf mmap information for anon_huge pages has a different filename ("/anon_hugepage") than the mmap information for regions composed of normal sized pages ("//anon"). This results in opreport not being able to map samples collected by operf to Java methods when the Java VM uses statically allocated huge pages (rhbz1180512 and rhbz1180513). Signed-off-by: William Cohen --- libperf_events/operf_utils.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libperf_events/operf_utils.cpp b/libperf_events/operf_utils.cpp index a87524b..90a0765 100644 --- a/libperf_events/operf_utils.cpp +++ b/libperf_events/operf_utils.cpp @@ -295,6 +295,10 @@ static void __handle_mmap_event(event_t * event) strlen("//anon")) == 0)) { mapping->is_anon_mapping = true; strcpy(mapping->filename, "anon"); + } else if ((strncmp(mapping->filename, "/anon_hugepage", + strlen("/anon_hugepage")) == 0)) { + mapping->is_anon_mapping = true; + strcpy(mapping->filename, "anon"); } mapping->end_addr = (event->mmap.len == 0ULL)? 0ULL : mapping->start_addr + event->mmap.len - 1; mapping->pgoff = event->mmap.pgoff; -- 2.1.0