diff --git a/flamegraph.pl b/flamegraph.pl index 1cd9a56c..e9dbf4f7 100755 --- a/flamegraph.pl +++ b/flamegraph.pl @@ -335,8 +335,8 @@ sub color { $type = "yellow"; } elsif ($name =~ m:/:) { # Java (match "/" in path) $type = "green" - } elsif ($name =~ m: \[k\]:) { # kernel - $type = "purple" + } elsif ($name =~ m:_\[k\]:) { # kernel + $type = "orange" } else { # system $type = "red"; } @@ -347,8 +347,8 @@ sub color { $type = "yellow"; } elsif ($name =~ m:Perl: or $name =~ m:\.pl:) { # Perl $type = "green"; - } elsif ($name =~ m: \[k\]:) { # kernel - $type = "purple" + } elsif ($name =~ m:_\[k\]:) { # kernel + $type = "orange" } else { # system $type = "red"; } @@ -363,8 +363,8 @@ sub color { $type = "aqua" } elsif ($name =~ m/^ $/) { # Missing symbol $type = "green" - } elsif ($name =~ m: \[k\]:) { # kernel - $type = "purple" + } elsif ($name =~ m:_\[k\]:) { # kernel + $type = "orange" } else { # system $type = "red"; } @@ -1016,6 +1016,7 @@ sub flow { my $chars = int( ($x2 - $x1) / ($fontsize * $fontwidth)); my $text = ""; if ($chars >= 3) { # room for one char plus two dots + $func =~ s/_\[k\]$//; # strip any kernel annotation $text = substr $func, 0, $chars; substr($text, -2, 2) = ".." if $chars < length $func; $text =~ s/&/&/g; diff --git a/stackcollapse-perf.pl b/stackcollapse-perf.pl index cd8f0275..069ec1fe 100755 --- a/stackcollapse-perf.pl +++ b/stackcollapse-perf.pl @@ -92,7 +92,7 @@ sub remember_stack { --pid # include PID with process names [1] --tid # include TID and PID with process names [1] --inline # un-inline using addr2line - --kernel # annotate kernel functions with a [k] + --kernel # annotate kernel functions with a _[k] --context # include source context from addr2line\n [1] perf script must emit both PID and TIDs for these to work; eg: perf script -f comm,pid,tid,cpu,time,event,ip,sym,dso,trace @@ -203,7 +203,7 @@ sub inline { # stack line } elsif (/^\s*(\w+)\s*(.+) \((\S*)\)/) { my ($pc, $func, $mod) = ($1, $2, $3); - $func.=" [k]" if ($annotate_kernel == 1 && $mod =~ m/kernel.kall/); + $func.="_[k]" if ($annotate_kernel == 1 && $mod =~ m/kernel.kall/); if ($show_inline == 1 && index($mod, $target_pname) != -1) { unshift @stack, inline($pc, $mod); next;