Skip to content

Instantly share code, notes, and snippets.

@heatd
Created October 4, 2022 00:51
Show Gist options
  • Save heatd/facfa90fe9ec6d914a2e20771ab54ca2 to your computer and use it in GitHub Desktop.
Save heatd/facfa90fe9ec6d914a2e20771ab54ca2 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="1200" height="342" onload="init(evt)" viewBox="0 0 1200 342" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Flame graph stack visualization. See https://github.com/brendangregg/FlameGraph for latest version, and http://www.brendangregg.com/flamegraphs.html for examples. -->
<!-- NOTES: -->
<defs>
<linearGradient id="background" y1="0" y2="1" x1="0" x2="0" >
<stop stop-color="#eeeeee" offset="5%" />
<stop stop-color="#eeeeb0" offset="95%" />
</linearGradient>
</defs>
<style type="text/css">
text { font-family:Verdana; font-size:12px; fill:rgb(0,0,0); }
#search, #ignorecase { opacity:0.1; cursor:pointer; }
#search:hover, #search.show, #ignorecase:hover, #ignorecase.show { opacity:1; }
#subtitle { text-anchor:middle; font-color:rgb(160,160,160); }
#title { text-anchor:middle; font-size:17px}
#unzoom { cursor:pointer; }
#frames > *:hover { stroke:black; stroke-width:0.5; cursor:pointer; }
.hide { display:none; }
.parent { opacity:0.5; }
</style>
<script type="text/ecmascript">
<![CDATA[
"use strict";
var details, searchbtn, unzoombtn, matchedtxt, svg, searching, currentSearchTerm, ignorecase, ignorecaseBtn;
function init(evt) {
details = document.getElementById("details").firstChild;
searchbtn = document.getElementById("search");
ignorecaseBtn = document.getElementById("ignorecase");
unzoombtn = document.getElementById("unzoom");
matchedtxt = document.getElementById("matched");
svg = document.getElementsByTagName("svg")[0];
searching = 0;
currentSearchTerm = null;
// use GET parameters to restore a flamegraphs state.
var params = get_params();
if (params.x && params.y)
zoom(find_group(document.querySelector('[x="' + params.x + '"][y="' + params.y + '"]')));
if (params.s) search(params.s);
}
// event listeners
window.addEventListener("click", function(e) {
var target = find_group(e.target);
if (target) {
if (target.nodeName == "a") {
if (e.ctrlKey === false) return;
e.preventDefault();
}
if (target.classList.contains("parent")) unzoom(true);
zoom(target);
if (!document.querySelector('.parent')) {
// we have basically done a clearzoom so clear the url
var params = get_params();
if (params.x) delete params.x;
if (params.y) delete params.y;
history.replaceState(null, null, parse_params(params));
unzoombtn.classList.add("hide");
return;
}
// set parameters for zoom state
var el = target.querySelector("rect");
if (el && el.attributes && el.attributes.y && el.attributes._orig_x) {
var params = get_params()
params.x = el.attributes._orig_x.value;
params.y = el.attributes.y.value;
history.replaceState(null, null, parse_params(params));
}
}
else if (e.target.id == "unzoom") clearzoom();
else if (e.target.id == "search") search_prompt();
else if (e.target.id == "ignorecase") toggle_ignorecase();
}, false)
// mouse-over for info
// show
window.addEventListener("mouseover", function(e) {
var target = find_group(e.target);
if (target) details.nodeValue = "Function: " + g_to_text(target);
}, false)
// clear
window.addEventListener("mouseout", function(e) {
var target = find_group(e.target);
if (target) details.nodeValue = ' ';
}, false)
// ctrl-F for search
// ctrl-I to toggle case-sensitive search
window.addEventListener("keydown",function (e) {
if (e.keyCode === 114 || (e.ctrlKey && e.keyCode === 70)) {
e.preventDefault();
search_prompt();
}
else if (e.ctrlKey && e.keyCode === 73) {
e.preventDefault();
toggle_ignorecase();
}
}, false)
// functions
function get_params() {
var params = {};
var paramsarr = window.location.search.substr(1).split('&');
for (var i = 0; i < paramsarr.length; ++i) {
var tmp = paramsarr[i].split("=");
if (!tmp[0] || !tmp[1]) continue;
params[tmp[0]] = decodeURIComponent(tmp[1]);
}
return params;
}
function parse_params(params) {
var uri = "?";
for (var key in params) {
uri += key + '=' + encodeURIComponent(params[key]) + '&';
}
if (uri.slice(-1) == "&")
uri = uri.substring(0, uri.length - 1);
if (uri == '?')
uri = window.location.href.split('?')[0];
return uri;
}
function find_child(node, selector) {
var children = node.querySelectorAll(selector);
if (children.length) return children[0];
}
function find_group(node) {
var parent = node.parentElement;
if (!parent) return;
if (parent.id == "frames") return node;
return find_group(parent);
}
function orig_save(e, attr, val) {
if (e.attributes["_orig_" + attr] != undefined) return;
if (e.attributes[attr] == undefined) return;
if (val == undefined) val = e.attributes[attr].value;
e.setAttribute("_orig_" + attr, val);
}
function orig_load(e, attr) {
if (e.attributes["_orig_"+attr] == undefined) return;
e.attributes[attr].value = e.attributes["_orig_" + attr].value;
e.removeAttribute("_orig_"+attr);
}
function g_to_text(e) {
var text = find_child(e, "title").firstChild.nodeValue;
return (text)
}
function g_to_func(e) {
var func = g_to_text(e);
// if there's any manipulation we want to do to the function
// name before it's searched, do it here before returning.
return (func);
}
function update_text(e) {
var r = find_child(e, "rect");
var t = find_child(e, "text");
var w = parseFloat(r.attributes.width.value) -3;
var txt = find_child(e, "title").textContent.replace(/\([^(]*\)$/,"");
t.attributes.x.value = parseFloat(r.attributes.x.value) + 3;
// Smaller than this size won't fit anything
if (w < 2 * 12 * 0.59) {
t.textContent = "";
return;
}
t.textContent = txt;
var sl = t.getSubStringLength(0, txt.length);
// check if only whitespace or if we can fit the entire string into width w
if (/^ *$/.test(txt) || sl < w)
return;
// this isn't perfect, but gives a good starting point
// and avoids calling getSubStringLength too often
var start = Math.floor((w/sl) * txt.length);
for (var x = start; x > 0; x = x-2) {
if (t.getSubStringLength(0, x + 2) <= w) {
t.textContent = txt.substring(0, x) + "..";
return;
}
}
t.textContent = "";
}
// zoom
function zoom_reset(e) {
if (e.attributes != undefined) {
orig_load(e, "x");
orig_load(e, "width");
}
if (e.childNodes == undefined) return;
for (var i = 0, c = e.childNodes; i < c.length; i++) {
zoom_reset(c[i]);
}
}
function zoom_child(e, x, ratio) {
if (e.attributes != undefined) {
if (e.attributes.x != undefined) {
orig_save(e, "x");
e.attributes.x.value = (parseFloat(e.attributes.x.value) - x - 10) * ratio + 10;
if (e.tagName == "text")
e.attributes.x.value = find_child(e.parentNode, "rect[x]").attributes.x.value + 3;
}
if (e.attributes.width != undefined) {
orig_save(e, "width");
e.attributes.width.value = parseFloat(e.attributes.width.value) * ratio;
}
}
if (e.childNodes == undefined) return;
for (var i = 0, c = e.childNodes; i < c.length; i++) {
zoom_child(c[i], x - 10, ratio);
}
}
function zoom_parent(e) {
if (e.attributes) {
if (e.attributes.x != undefined) {
orig_save(e, "x");
e.attributes.x.value = 10;
}
if (e.attributes.width != undefined) {
orig_save(e, "width");
e.attributes.width.value = parseInt(svg.width.baseVal.value) - (10 * 2);
}
}
if (e.childNodes == undefined) return;
for (var i = 0, c = e.childNodes; i < c.length; i++) {
zoom_parent(c[i]);
}
}
function zoom(node) {
var attr = find_child(node, "rect").attributes;
var width = parseFloat(attr.width.value);
var xmin = parseFloat(attr.x.value);
var xmax = parseFloat(xmin + width);
var ymin = parseFloat(attr.y.value);
var ratio = (svg.width.baseVal.value - 2 * 10) / width;
// XXX: Workaround for JavaScript float issues (fix me)
var fudge = 0.0001;
unzoombtn.classList.remove("hide");
var el = document.getElementById("frames").children;
for (var i = 0; i < el.length; i++) {
var e = el[i];
var a = find_child(e, "rect").attributes;
var ex = parseFloat(a.x.value);
var ew = parseFloat(a.width.value);
var upstack;
// Is it an ancestor
if (0 == 0) {
upstack = parseFloat(a.y.value) > ymin;
} else {
upstack = parseFloat(a.y.value) < ymin;
}
if (upstack) {
// Direct ancestor
if (ex <= xmin && (ex+ew+fudge) >= xmax) {
e.classList.add("parent");
zoom_parent(e);
update_text(e);
}
// not in current path
else
e.classList.add("hide");
}
// Children maybe
else {
// no common path
if (ex < xmin || ex + fudge >= xmax) {
e.classList.add("hide");
}
else {
zoom_child(e, xmin, ratio);
update_text(e);
}
}
}
search();
}
function unzoom(dont_update_text) {
unzoombtn.classList.add("hide");
var el = document.getElementById("frames").children;
for(var i = 0; i < el.length; i++) {
el[i].classList.remove("parent");
el[i].classList.remove("hide");
zoom_reset(el[i]);
if(!dont_update_text) update_text(el[i]);
}
search();
}
function clearzoom() {
unzoom();
// remove zoom state
var params = get_params();
if (params.x) delete params.x;
if (params.y) delete params.y;
history.replaceState(null, null, parse_params(params));
}
// search
function toggle_ignorecase() {
ignorecase = !ignorecase;
if (ignorecase) {
ignorecaseBtn.classList.add("show");
} else {
ignorecaseBtn.classList.remove("show");
}
reset_search();
search();
}
function reset_search() {
var el = document.querySelectorAll("#frames rect");
for (var i = 0; i < el.length; i++) {
orig_load(el[i], "fill")
}
var params = get_params();
delete params.s;
history.replaceState(null, null, parse_params(params));
}
function search_prompt() {
if (!searching) {
var term = prompt("Enter a search term (regexp " +
"allowed, eg: ^ext4_)"
+ (ignorecase ? ", ignoring case" : "")
+ "\nPress Ctrl-i to toggle case sensitivity", "");
if (term != null) search(term);
} else {
reset_search();
searching = 0;
currentSearchTerm = null;
searchbtn.classList.remove("show");
searchbtn.firstChild.nodeValue = "Search"
matchedtxt.classList.add("hide");
matchedtxt.firstChild.nodeValue = ""
}
}
function search(term) {
if (term) currentSearchTerm = term;
var re = new RegExp(currentSearchTerm, ignorecase ? 'i' : '');
var el = document.getElementById("frames").children;
var matches = new Object();
var maxwidth = 0;
for (var i = 0; i < el.length; i++) {
var e = el[i];
var func = g_to_func(e);
var rect = find_child(e, "rect");
if (func == null || rect == null)
continue;
// Save max width. Only works as we have a root frame
var w = parseFloat(rect.attributes.width.value);
if (w > maxwidth)
maxwidth = w;
if (func.match(re)) {
// highlight
var x = parseFloat(rect.attributes.x.value);
orig_save(rect, "fill");
rect.attributes.fill.value = "rgb(230,0,230)";
// remember matches
if (matches[x] == undefined) {
matches[x] = w;
} else {
if (w > matches[x]) {
// overwrite with parent
matches[x] = w;
}
}
searching = 1;
}
}
if (!searching)
return;
var params = get_params();
params.s = currentSearchTerm;
history.replaceState(null, null, parse_params(params));
searchbtn.classList.add("show");
searchbtn.firstChild.nodeValue = "Reset Search";
// calculate percent matched, excluding vertical overlap
var count = 0;
var lastx = -1;
var lastw = 0;
var keys = Array();
for (k in matches) {
if (matches.hasOwnProperty(k))
keys.push(k);
}
// sort the matched frames by their x location
// ascending, then width descending
keys.sort(function(a, b){
return a - b;
});
// Step through frames saving only the biggest bottom-up frames
// thanks to the sort order. This relies on the tree property
// where children are always smaller than their parents.
var fudge = 0.0001; // JavaScript floating point
for (var k in keys) {
var x = parseFloat(keys[k]);
var w = matches[keys[k]];
if (x >= lastx + lastw - fudge) {
count += w;
lastx = x;
lastw = w;
}
}
// display matched percent
matchedtxt.classList.remove("hide");
var pct = 100 * count / maxwidth;
if (pct != 100) pct = pct.toFixed(1)
matchedtxt.firstChild.nodeValue = "Matched: " + pct + "%";
}
]]>
</script>
<rect x="0.0" y="0" width="1200.0" height="342.0" fill="url(#background)" />
<text id="title" x="600.00" y="24" >Flame Graph</text>
<text id="details" x="10.00" y="325" > </text>
<text id="unzoom" x="10.00" y="24" class="hide">Reset Zoom</text>
<text id="search" x="1090.00" y="24" >Search</text>
<text id="ignorecase" x="1174.00" y="24" >ic</text>
<text id="matched" x="1090.00" y="325" > </text>
<g id="frames">
<g >
<title>netbsd`fd_close (1,562 samples, 14.20%)</title><rect x="47.6" y="229" width="167.6" height="15.0" fill="rgb(225,81,11)" rx="2" ry="2" />
<text x="50.65" y="239.5" >netbsd`fd_close</text>
</g>
<g >
<title>netbsd`rw_enter (29 samples, 0.26%)</title><rect x="191.5" y="149" width="3.1" height="15.0" fill="rgb(242,74,38)" rx="2" ry="2" />
<text x="194.49" y="159.5" ></text>
</g>
<g >
<title>netbsd`mutex_enter (20 samples, 0.18%)</title><rect x="49.8" y="197" width="2.1" height="15.0" fill="rgb(208,187,54)" rx="2" ry="2" />
<text x="52.79" y="207.5" ></text>
</g>
<g >
<title>netbsd`fd_affix (10 samples, 0.09%)</title><rect x="221.7" y="197" width="1.1" height="15.0" fill="rgb(220,225,24)" rx="2" ry="2" />
<text x="224.74" y="207.5" ></text>
</g>
<g >
<title>netbsd`acpicpu_cstate_idle (921 samples, 8.37%)</title><rect x="1087.0" y="245" width="98.8" height="15.0" fill="rgb(242,220,9)" rx="2" ry="2" />
<text x="1090.03" y="255.5" >netbsd`acpi..</text>
</g>
<g >
<title>netbsd`ufs_access (10 samples, 0.09%)</title><rect x="813.1" y="85" width="1.1" height="15.0" fill="rgb(248,42,35)" rx="2" ry="2" />
<text x="816.08" y="95.5" ></text>
</g>
<g >
<title>netbsd`_atomic_cas_32 (20 samples, 0.18%)</title><rect x="54.1" y="181" width="2.1" height="15.0" fill="rgb(221,229,6)" rx="2" ry="2" />
<text x="57.09" y="191.5" ></text>
</g>
<g >
<title>netbsd`pool_cache_put_paddr (10 samples, 0.09%)</title><rect x="1001.2" y="213" width="1.1" height="15.0" fill="rgb(236,187,36)" rx="2" ry="2" />
<text x="1004.22" y="223.5" ></text>
</g>
<g >
<title>netbsd`rw_vector_enter (1,257 samples, 11.43%)</title><rect x="634.2" y="53" width="134.8" height="15.0" fill="rgb(216,102,43)" rx="2" ry="2" />
<text x="637.16" y="63.5" >netbsd`rw_vector_..</text>
</g>
<g >
<title>netbsd`VOP_UNLOCK (30 samples, 0.27%)</title><rect x="955.2" y="133" width="3.2" height="15.0" fill="rgb(235,168,21)" rx="2" ry="2" />
<text x="958.20" y="143.5" ></text>
</g>
<g >
<title>netbsd`Xspllower (351 samples, 3.19%)</title><rect x="582.6" y="37" width="37.6" height="15.0" fill="rgb(243,193,9)" rx="2" ry="2" />
<text x="585.57" y="47.5" >net..</text>
</g>
<g >
<title>netbsd`rw_enter (10 samples, 0.09%)</title><rect x="954.1" y="117" width="1.1" height="15.0" fill="rgb(242,61,52)" rx="2" ry="2" />
<text x="957.13" y="127.5" ></text>
</g>
<g >
<title>netbsd`genfs_lock (11 samples, 0.10%)</title><rect x="207.5" y="149" width="1.2" height="15.0" fill="rgb(210,121,28)" rx="2" ry="2" />
<text x="210.47" y="159.5" ></text>
</g>
<g >
<title>netbsd`rw_exit (10 samples, 0.09%)</title><rect x="204.3" y="149" width="1.0" height="15.0" fill="rgb(235,103,12)" rx="2" ry="2" />
<text x="207.25" y="159.5" ></text>
</g>
<g >
<title>netbsd`tmpfs_inactive (10 samples, 0.09%)</title><rect x="206.4" y="165" width="1.1" height="15.0" fill="rgb(249,119,13)" rx="2" ry="2" />
<text x="209.40" y="175.5" ></text>
</g>
<g >
<title>netbsd`rw_oncpu.part.0 (30 samples, 0.27%)</title><rect x="188.3" y="117" width="3.2" height="15.0" fill="rgb(209,51,18)" rx="2" ry="2" />
<text x="191.27" y="127.5" ></text>
</g>
<g >
<title>netbsd`preempt (50 samples, 0.45%)</title><rect x="1004.4" y="245" width="5.4" height="15.0" fill="rgb(248,171,51)" rx="2" ry="2" />
<text x="1007.44" y="255.5" ></text>
</g>
<g >
<title>netbsd`vput (30 samples, 0.27%)</title><rect x="882.6" y="133" width="3.2" height="15.0" fill="rgb(230,142,4)" rx="2" ry="2" />
<text x="885.58" y="143.5" ></text>
</g>
<g >
<title>netbsd`kmem_intr_alloc (10 samples, 0.09%)</title><rect x="987.4" y="197" width="1.1" height="15.0" fill="rgb(241,181,28)" rx="2" ry="2" />
<text x="990.38" y="207.5" ></text>
</g>
<g >
<title>netbsd`vrele (30 samples, 0.27%)</title><rect x="885.8" y="133" width="3.2" height="15.0" fill="rgb(221,204,7)" rx="2" ry="2" />
<text x="888.80" y="143.5" ></text>
</g>
<g >
<title>netbsd`syscall (19 samples, 0.17%)</title><rect x="1188.0" y="277" width="2.0" height="15.0" fill="rgb(240,28,41)" rx="2" ry="2" />
<text x="1190.96" y="287.5" ></text>
</g>
<g >
<title>netbsd`fd_allocfile (80 samples, 0.73%)</title><rect x="222.8" y="197" width="8.6" height="15.0" fill="rgb(212,37,5)" rx="2" ry="2" />
<text x="225.81" y="207.5" ></text>
</g>
<g >
<title>netbsd`kauth_cred_get (10 samples, 0.09%)</title><rect x="232.5" y="197" width="1.0" height="15.0" fill="rgb(242,144,3)" rx="2" ry="2" />
<text x="235.46" y="207.5" ></text>
</g>
<g >
<title>netbsd`secmodel_securelevel_vnode_cb (10 samples, 0.09%)</title><rect x="243.2" y="165" width="1.1" height="15.0" fill="rgb(212,168,36)" rx="2" ry="2" />
<text x="246.19" y="175.5" ></text>
</g>
<g >
<title>netbsd`sys_close (10 samples, 0.09%)</title><rect x="35.9" y="261" width="1.0" height="15.0" fill="rgb(227,7,49)" rx="2" ry="2" />
<text x="38.85" y="271.5" ></text>
</g>
<g >
<title>netbsd`x86_stihlt (671 samples, 6.10%)</title><rect x="1113.8" y="213" width="72.0" height="15.0" fill="rgb(244,102,36)" rx="2" ry="2" />
<text x="1116.84" y="223.5" >netbsd`x..</text>
</g>
<g >
<title>netbsd`sys_close (1,562 samples, 14.20%)</title><rect x="47.6" y="245" width="167.6" height="15.0" fill="rgb(233,181,14)" rx="2" ry="2" />
<text x="50.65" y="255.5" >netbsd`sys_close</text>
</g>
<g >
<title>netbsd`kmem_intr_alloc (20 samples, 0.18%)</title><rect x="988.5" y="181" width="2.1" height="15.0" fill="rgb(240,177,7)" rx="2" ry="2" />
<text x="991.45" y="191.5" ></text>
</g>
<g >
<title>netbsd`sys_open (7,358 samples, 66.88%)</title><rect x="215.2" y="245" width="789.2" height="15.0" fill="rgb(230,181,0)" rx="2" ry="2" />
<text x="218.19" y="255.5" >netbsd`sys_open</text>
</g>
<g >
<title>netbsd`fd_alloc (40 samples, 0.36%)</title><rect x="225.0" y="181" width="4.2" height="15.0" fill="rgb(230,160,44)" rx="2" ry="2" />
<text x="227.96" y="191.5" ></text>
</g>
<g >
<title>netbsd`namei (6,898 samples, 62.70%)</title><rect x="247.5" y="181" width="739.9" height="15.0" fill="rgb(234,165,29)" rx="2" ry="2" />
<text x="250.48" y="191.5" >netbsd`namei</text>
</g>
<g >
<title>netbsd`rw_exit (10 samples, 0.09%)</title><rect x="882.6" y="101" width="1.1" height="15.0" fill="rgb(226,2,35)" rx="2" ry="2" />
<text x="885.58" y="111.5" ></text>
</g>
<g >
<title>netbsd`mutex_enter (10 samples, 0.09%)</title><rect x="229.2" y="181" width="1.1" height="15.0" fill="rgb(252,187,54)" rx="2" ry="2" />
<text x="232.25" y="191.5" ></text>
</g>
<g >
<title>netbsd`rw_enter (59 samples, 0.54%)</title><rect x="876.3" y="101" width="6.3" height="15.0" fill="rgb(207,161,20)" rx="2" ry="2" />
<text x="879.26" y="111.5" ></text>
</g>
<g >
<title>netbsd`_atomic_inc_32 (20 samples, 0.18%)</title><rect x="438.7" y="85" width="2.2" height="15.0" fill="rgb(246,219,43)" rx="2" ry="2" />
<text x="441.73" y="95.5" ></text>
</g>
<g >
<title>netbsd`fstrans_done (10 samples, 0.09%)</title><rect x="956.3" y="117" width="1.0" height="15.0" fill="rgb(249,50,2)" rx="2" ry="2" />
<text x="959.27" y="127.5" ></text>
</g>
<g >
<title>netbsd`genfs_lock (1,267 samples, 11.52%)</title><rect x="633.1" y="69" width="135.9" height="15.0" fill="rgb(226,219,25)" rx="2" ry="2" />
<text x="636.09" y="79.5" >netbsd`genfs_lock</text>
</g>
<g >
<title>netbsd`rw_vector_enter (528 samples, 4.80%)</title><rect x="897.5" y="101" width="56.6" height="15.0" fill="rgb(210,169,6)" rx="2" ry="2" />
<text x="900.49" y="111.5" >netbs..</text>
</g>
<g >
<title>netbsd`memcmp (60 samples, 0.55%)</title><rect x="418.4" y="101" width="6.4" height="15.0" fill="rgb(228,44,29)" rx="2" ry="2" />
<text x="421.35" y="111.5" ></text>
</g>
<g >
<title>netbsd`tmpfs_lookup (362 samples, 3.29%)</title><rect x="770.1" y="117" width="38.8" height="15.0" fill="rgb(243,58,37)" rx="2" ry="2" />
<text x="773.07" y="127.5" >net..</text>
</g>
<g >
<title>netbsd`memcmp (40 samples, 0.36%)</title><rect x="784.0" y="85" width="4.3" height="15.0" fill="rgb(216,93,1)" rx="2" ry="2" />
<text x="787.01" y="95.5" ></text>
</g>
<g >
<title>netbsd`pool_cache_get_paddr (20 samples, 0.18%)</title><rect x="988.5" y="165" width="2.1" height="15.0" fill="rgb(235,119,0)" rx="2" ry="2" />
<text x="991.45" y="175.5" ></text>
</g>
<g >
<title>netbsd`mutex_oncpu.part.0 (10 samples, 0.09%)</title><rect x="800.1" y="69" width="1.1" height="15.0" fill="rgb(243,112,45)" rx="2" ry="2" />
<text x="803.10" y="79.5" ></text>
</g>
<g >
<title>netbsd`Xspllower (10 samples, 0.09%)</title><rect x="46.6" y="181" width="1.0" height="15.0" fill="rgb(243,169,32)" rx="2" ry="2" />
<text x="49.58" y="191.5" ></text>
</g>
<g >
<title>netbsd`VOP_UNLOCK (30 samples, 0.27%)</title><rect x="218.5" y="197" width="3.2" height="15.0" fill="rgb(252,143,13)" rx="2" ry="2" />
<text x="221.52" y="207.5" ></text>
</g>
<g >
<title>netbsd`mutex_enter (20 samples, 0.18%)</title><rect x="965.0" y="133" width="2.1" height="15.0" fill="rgb(229,122,18)" rx="2" ry="2" />
<text x="967.96" y="143.5" ></text>
</g>
<g >
<title>netbsd`fstrans_done (10 samples, 0.09%)</title><rect x="197.8" y="149" width="1.1" height="15.0" fill="rgb(240,160,13)" rx="2" ry="2" />
<text x="200.82" y="159.5" ></text>
</g>
<g >
<title>netbsd`mutex_exit (10 samples, 0.09%)</title><rect x="235.7" y="197" width="1.1" height="15.0" fill="rgb(214,66,29)" rx="2" ry="2" />
<text x="238.68" y="207.5" ></text>
</g>
<g >
<title>netbsd`kpause (10 samples, 0.09%)</title><rect x="46.6" y="213" width="1.0" height="15.0" fill="rgb(228,154,14)" rx="2" ry="2" />
<text x="49.58" y="223.5" ></text>
</g>
<g >
<title>netbsd`mutex_enter (100 samples, 0.91%)</title><rect x="424.8" y="101" width="10.7" height="15.0" fill="rgb(240,175,4)" rx="2" ry="2" />
<text x="427.79" y="111.5" ></text>
</g>
<g >
<title>netbsd`vrelel (180 samples, 1.64%)</title><rect x="960.6" y="149" width="19.3" height="15.0" fill="rgb(254,116,8)" rx="2" ry="2" />
<text x="963.56" y="159.5" ></text>
</g>
<g >
<title>netbsd`VFS_ROOT (3,279 samples, 29.81%)</title><rect x="417.3" y="133" width="351.7" height="15.0" fill="rgb(241,202,8)" rx="2" ry="2" />
<text x="420.28" y="143.5" >netbsd`VFS_ROOT</text>
</g>
<g >
<title>netbsd`secmodel_suser_vnode_cb (10 samples, 0.09%)</title><rect x="773.3" y="69" width="1.1" height="15.0" fill="rgb(232,183,6)" rx="2" ry="2" />
<text x="776.28" y="79.5" ></text>
</g>
<g >
<title>netbsd`mutex_enter (20 samples, 0.18%)</title><rect x="889.0" y="149" width="2.2" height="15.0" fill="rgb(213,162,1)" rx="2" ry="2" />
<text x="892.02" y="159.5" ></text>
</g>
<g >
<title>netbsd`cache_lookup (79 samples, 0.72%)</title><rect x="814.2" y="101" width="8.4" height="15.0" fill="rgb(205,220,1)" rx="2" ry="2" />
<text x="817.15" y="111.5" ></text>
</g>
<g >
<title>netbsd`tmpfs_root (3,279 samples, 29.81%)</title><rect x="417.3" y="117" width="351.7" height="15.0" fill="rgb(248,123,37)" rx="2" ry="2" />
<text x="420.28" y="127.5" >netbsd`tmpfs_root</text>
</g>
<g >
<title>netbsd`spllower (20 samples, 0.18%)</title><rect x="213.0" y="213" width="2.2" height="15.0" fill="rgb(243,20,19)" rx="2" ry="2" />
<text x="216.05" y="223.5" ></text>
</g>
<g >
<title>netbsd`rw_exit (20 samples, 0.18%)</title><rect x="219.6" y="181" width="2.1" height="15.0" fill="rgb(233,102,51)" rx="2" ry="2" />
<text x="222.59" y="191.5" ></text>
</g>
<g >
<title>netbsd`mutex_enter (30 samples, 0.27%)</title><rect x="788.3" y="85" width="3.2" height="15.0" fill="rgb(224,192,18)" rx="2" ry="2" />
<text x="791.30" y="95.5" ></text>
</g>
<g >
<title>netbsd`namei_tryemulroot (6,758 samples, 61.43%)</title><rect x="255.0" y="165" width="724.9" height="15.0" fill="rgb(212,159,0)" rx="2" ry="2" />
<text x="257.99" y="175.5" >netbsd`namei_tryemulroot</text>
</g>
<g >
<title>all (11,001 samples, 100%)</title><rect x="10.0" y="293" width="1180.0" height="15.0" fill="rgb(210,181,26)" rx="2" ry="2" />
<text x="13.00" y="303.5" ></text>
</g>
<g >
<title>netbsd`genfs_lock (10 samples, 0.09%)</title><rect x="194.6" y="165" width="1.1" height="15.0" fill="rgb(234,67,34)" rx="2" ry="2" />
<text x="197.60" y="175.5" ></text>
</g>
<g >
<title>netbsd`yield (20 samples, 0.18%)</title><rect x="1185.8" y="245" width="2.2" height="15.0" fill="rgb(216,227,9)" rx="2" ry="2" />
<text x="1188.82" y="255.5" ></text>
</g>
<g >
<title>netbsd`mutex_vector_enter (80 samples, 0.73%)</title><rect x="792.6" y="85" width="8.6" height="15.0" fill="rgb(243,202,19)" rx="2" ry="2" />
<text x="795.59" y="95.5" ></text>
</g>
<g >
<title>netbsd`do_open (7,168 samples, 65.16%)</title><rect x="218.5" y="213" width="768.9" height="15.0" fill="rgb(232,134,0)" rx="2" ry="2" />
<text x="221.52" y="223.5" >netbsd`do_open</text>
</g>
<g >
<title>netbsd`_atomic_cas_32 (60 samples, 0.55%)</title><rect x="830.1" y="133" width="6.5" height="15.0" fill="rgb(248,38,31)" rx="2" ry="2" />
<text x="833.13" y="143.5" ></text>
</g>
<g >
<title>netbsd`mutex_vector_enter (10 samples, 0.09%)</title><rect x="57.3" y="181" width="1.1" height="15.0" fill="rgb(228,101,9)" rx="2" ry="2" />
<text x="60.30" y="191.5" ></text>
</g>
<g >
<title>netbsd`VOP_ACCESS (50 samples, 0.45%)</title><rect x="240.0" y="181" width="5.3" height="15.0" fill="rgb(236,67,15)" rx="2" ry="2" />
<text x="242.97" y="191.5" ></text>
</g>
<g >
<title>netbsd`rw_vector_enter (1,221 samples, 11.10%)</title><rect x="60.5" y="133" width="131.0" height="15.0" fill="rgb(213,49,46)" rx="2" ry="2" />
<text x="63.52" y="143.5" >netbsd`rw_vector..</text>
</g>
<g >
<title>netbsd`spllower (10 samples, 0.09%)</title><rect x="845.1" y="133" width="1.1" height="15.0" fill="rgb(238,88,44)" rx="2" ry="2" />
<text x="848.15" y="143.5" ></text>
</g>
<g >
<title>netbsd`VOP_ACCESS (10 samples, 0.09%)</title><rect x="813.1" y="101" width="1.1" height="15.0" fill="rgb(239,56,41)" rx="2" ry="2" />
<text x="816.08" y="111.5" ></text>
</g>
<g >
<title>netbsd`_atomic_inc_32 (10 samples, 0.09%)</title><rect x="816.3" y="85" width="1.1" height="15.0" fill="rgb(242,192,52)" rx="2" ry="2" />
<text x="819.30" y="95.5" ></text>
</g>
<g >
<title>netbsd`VOP_ACCESS (50 samples, 0.45%)</title><rect x="771.1" y="101" width="5.4" height="15.0" fill="rgb(228,128,15)" rx="2" ry="2" />
<text x="774.14" y="111.5" ></text>
</g>
<g >
<title>netbsd`_atomic_dec_32_nv (20 samples, 0.18%)</title><rect x="836.6" y="133" width="2.1" height="15.0" fill="rgb(235,43,18)" rx="2" ry="2" />
<text x="839.57" y="143.5" ></text>
</g>
<g >
<title>netbsd`syscall (9,020 samples, 81.99%)</title><rect x="36.9" y="261" width="967.5" height="15.0" fill="rgb(224,198,8)" rx="2" ry="2" />
<text x="39.92" y="271.5" >netbsd`syscall</text>
</g>
<g >
<title>netbsd`ufs_lookup (178 samples, 1.62%)</title><rect x="808.9" y="117" width="19.1" height="15.0" fill="rgb(252,71,34)" rx="2" ry="2" />
<text x="811.89" y="127.5" ></text>
</g>
<g >
<title>netbsd`mutex_enter (50 samples, 0.45%)</title><rect x="822.6" y="101" width="5.4" height="15.0" fill="rgb(254,135,33)" rx="2" ry="2" />
<text x="825.62" y="111.5" ></text>
</g>
<g >
<title>netbsd`mutex_vector_enter (110 samples, 1.00%)</title><rect x="620.2" y="69" width="11.8" height="15.0" fill="rgb(227,157,23)" rx="2" ry="2" />
<text x="623.22" y="79.5" ></text>
</g>
<g >
<title>netbsd`fd_getfile (10 samples, 0.09%)</title><rect x="45.5" y="245" width="1.1" height="15.0" fill="rgb(221,108,52)" rx="2" ry="2" />
<text x="48.50" y="255.5" ></text>
</g>
<g >
<title>netbsd`vn_close (1,451 samples, 13.19%)</title><rect x="53.0" y="197" width="155.7" height="15.0" fill="rgb(249,102,51)" rx="2" ry="2" />
<text x="56.01" y="207.5" >netbsd`vn_close</text>
</g>
<g >
<title>netbsd`AcpiHwRead (250 samples, 2.27%)</title><rect x="1087.0" y="181" width="26.8" height="15.0" fill="rgb(218,192,29)" rx="2" ry="2" />
<text x="1090.03" y="191.5" >n..</text>
</g>
<g >
<title>netbsd`nanosleep1 (10 samples, 0.09%)</title><rect x="46.6" y="229" width="1.0" height="15.0" fill="rgb(217,225,15)" rx="2" ry="2" />
<text x="49.58" y="239.5" ></text>
</g>
<g >
<title>netbsd`vfs_unbusy (10 samples, 0.09%)</title><rect x="892.2" y="149" width="1.1" height="15.0" fill="rgb(248,129,7)" rx="2" ry="2" />
<text x="895.24" y="159.5" ></text>
</g>
<g >
<title>netbsd`tmpfs_access (10 samples, 0.09%)</title><rect x="775.4" y="85" width="1.1" height="15.0" fill="rgb(228,160,15)" rx="2" ry="2" />
<text x="778.43" y="95.5" ></text>
</g>
<g >
<title>netbsd`cache_lookup (10 samples, 0.09%)</title><rect x="769.0" y="117" width="1.1" height="15.0" fill="rgb(243,12,51)" rx="2" ry="2" />
<text x="771.99" y="127.5" ></text>
</g>
<g >
<title>netbsd`kauth_authorize_vnode (30 samples, 0.27%)</title><rect x="240.0" y="165" width="3.2" height="15.0" fill="rgb(241,64,1)" rx="2" ry="2" />
<text x="242.97" y="175.5" ></text>
</g>
<g >
<title>netbsd`acpitimer_read_fast (250 samples, 2.27%)</title><rect x="1087.0" y="213" width="26.8" height="15.0" fill="rgb(230,167,28)" rx="2" ry="2" />
<text x="1090.03" y="223.5" >n..</text>
</g>
<g >
<title>netbsd`pool_cache_get_paddr (49 samples, 0.45%)</title><rect x="990.6" y="181" width="5.3" height="15.0" fill="rgb(222,49,26)" rx="2" ry="2" />
<text x="993.60" y="191.5" ></text>
</g>
<g >
<title>netbsd`sleepq_block (351 samples, 3.19%)</title><rect x="582.6" y="53" width="37.6" height="15.0" fill="rgb(205,157,15)" rx="2" ry="2" />
<text x="585.57" y="63.5" >net..</text>
</g>
<g >
<title>netbsd`rw_exit (20 samples, 0.18%)</title><rect x="961.6" y="117" width="2.2" height="15.0" fill="rgb(207,216,38)" rx="2" ry="2" />
<text x="964.64" y="127.5" ></text>
</g>
<g >
<title>netbsd`mutex_exit (30 samples, 0.27%)</title><rect x="209.8" y="213" width="3.2" height="15.0" fill="rgb(248,169,33)" rx="2" ry="2" />
<text x="212.83" y="223.5" ></text>
</g>
<g >
<title>netbsd`vn_lock (329 samples, 2.99%)</title><rect x="847.3" y="133" width="35.3" height="15.0" fill="rgb(224,28,5)" rx="2" ry="2" />
<text x="850.29" y="143.5" >ne..</text>
</g>
<g >
<title>netbsd`pathbuf_stringcopy_get (10 samples, 0.09%)</title><rect x="995.9" y="213" width="1.0" height="15.0" fill="rgb(211,71,39)" rx="2" ry="2" />
<text x="998.85" y="223.5" ></text>
</g>
<g >
<title>netbsd`spllower (20 samples, 0.18%)</title><rect x="883.7" y="117" width="2.1" height="15.0" fill="rgb(239,2,47)" rx="2" ry="2" />
<text x="886.66" y="127.5" ></text>
</g>
<g >
<title>netbsd`_atomic_inc_32 (60 samples, 0.55%)</title><rect x="247.5" y="165" width="6.4" height="15.0" fill="rgb(226,27,42)" rx="2" ry="2" />
<text x="250.48" y="175.5" ></text>
</g>
<g >
<title>netbsd`acpicpu_cstate_idle_enter (921 samples, 8.37%)</title><rect x="1087.0" y="229" width="98.8" height="15.0" fill="rgb(247,41,11)" rx="2" ry="2" />
<text x="1090.03" y="239.5" >netbsd`acpi..</text>
</g>
<g >
<title>netbsd`mutex_exit (10 samples, 0.09%)</title><rect x="891.2" y="149" width="1.0" height="15.0" fill="rgb(226,166,12)" rx="2" ry="2" />
<text x="894.17" y="159.5" ></text>
</g>
<g >
<title>netbsd`Xspllower (1,423 samples, 12.94%)</title><rect x="262.5" y="149" width="152.6" height="15.0" fill="rgb(221,142,19)" rx="2" ry="2" />
<text x="265.50" y="159.5" >netbsd`Xspllower</text>
</g>
<g >
<title>netbsd`namei_hash (20 samples, 0.18%)</title><rect x="781.9" y="69" width="2.1" height="15.0" fill="rgb(247,94,54)" rx="2" ry="2" />
<text x="784.86" y="79.5" ></text>
</g>
<g >
<title>netbsd`do_sys_openat (7,338 samples, 66.70%)</title><rect x="215.2" y="229" width="787.1" height="15.0" fill="rgb(236,172,49)" rx="2" ry="2" />
<text x="218.19" y="239.5" >netbsd`do_sys_openat</text>
</g>
<g >
<title>netbsd`rw_oncpu.part.0 (10 samples, 0.09%)</title><rect x="767.9" y="37" width="1.1" height="15.0" fill="rgb(248,216,46)" rx="2" ry="2" />
<text x="770.92" y="47.5" ></text>
</g>
<g >
<title>netbsd`AcpiGetTimer (250 samples, 2.27%)</title><rect x="1087.0" y="197" width="26.8" height="15.0" fill="rgb(243,197,19)" rx="2" ry="2" />
<text x="1090.03" y="207.5" >n..</text>
</g>
<g >
<title>netbsd`pool_cache_put_paddr (20 samples, 0.18%)</title><rect x="999.1" y="197" width="2.1" height="15.0" fill="rgb(227,135,21)" rx="2" ry="2" />
<text x="1002.07" y="207.5" ></text>
</g>
<g >
<title>netbsd`cv_wait (351 samples, 3.19%)</title><rect x="582.6" y="69" width="37.6" height="15.0" fill="rgb(225,183,32)" rx="2" ry="2" />
<text x="585.57" y="79.5" >net..</text>
</g>
<g >
<title>netbsd`Xspllower (720 samples, 6.54%)</title><rect x="1009.8" y="245" width="77.2" height="15.0" fill="rgb(216,109,20)" rx="2" ry="2" />
<text x="1012.80" y="255.5" >netbsd`X..</text>
</g>
<g >
<title>netbsd`sleepq_block (10 samples, 0.09%)</title><rect x="46.6" y="197" width="1.0" height="15.0" fill="rgb(254,150,16)" rx="2" ry="2" />
<text x="49.58" y="207.5" ></text>
</g>
<g >
<title>netbsd`vn_open (6,998 samples, 63.61%)</title><rect x="236.8" y="197" width="750.6" height="15.0" fill="rgb(214,109,33)" rx="2" ry="2" />
<text x="239.75" y="207.5" >netbsd`vn_open</text>
</g>
<g >
<title>netbsd`pool_cache_put_paddr (10 samples, 0.09%)</title><rect x="51.9" y="197" width="1.1" height="15.0" fill="rgb(206,120,52)" rx="2" ry="2" />
<text x="54.94" y="207.5" ></text>
</g>
<g >
<title>netbsd`VOP_UNLOCK (60 samples, 0.55%)</title><rect x="195.7" y="165" width="6.4" height="15.0" fill="rgb(218,41,42)" rx="2" ry="2" />
<text x="198.67" y="175.5" ></text>
</g>
<g >
<title>netbsd`rw_exit (30 samples, 0.27%)</title><rect x="984.2" y="165" width="3.2" height="15.0" fill="rgb(233,55,48)" rx="2" ry="2" />
<text x="987.16" y="175.5" ></text>
</g>
<g >
<title>netbsd`genfs_lock (1,221 samples, 11.10%)</title><rect x="60.5" y="149" width="131.0" height="15.0" fill="rgb(216,211,7)" rx="2" ry="2" />
<text x="63.52" y="159.5" >netbsd`genfs_lock</text>
</g>
<g >
<title>netbsd`pool_cache_get_paddr (10 samples, 0.09%)</title><rect x="230.3" y="181" width="1.1" height="15.0" fill="rgb(244,169,49)" rx="2" ry="2" />
<text x="233.32" y="191.5" ></text>
</g>
<g >
<title>netbsd`cache_lookup (240 samples, 2.18%)</title><rect x="776.5" y="101" width="25.7" height="15.0" fill="rgb(222,91,30)" rx="2" ry="2" />
<text x="779.50" y="111.5" >n..</text>
</g>
<g >
<title>netbsd`VOP_UNLOCK (30 samples, 0.27%)</title><rect x="960.6" y="133" width="3.2" height="15.0" fill="rgb(243,112,14)" rx="2" ry="2" />
<text x="963.56" y="143.5" ></text>
</g>
<g >
<title>netbsd`Xspllower (50 samples, 0.45%)</title><rect x="1004.4" y="229" width="5.4" height="15.0" fill="rgb(227,92,26)" rx="2" ry="2" />
<text x="1007.44" y="239.5" ></text>
</g>
<g >
<title>netbsd`fstrans_done (10 samples, 0.09%)</title><rect x="960.6" y="117" width="1.0" height="15.0" fill="rgb(207,94,19)" rx="2" ry="2" />
<text x="963.56" y="127.5" ></text>
</g>
<g >
<title>netbsd`vn_lock (1,280 samples, 11.64%)</title><rect x="58.4" y="181" width="137.3" height="15.0" fill="rgb(216,180,15)" rx="2" ry="2" />
<text x="61.38" y="191.5" >netbsd`vn_lock</text>
</g>
<g >
<title>netbsd`VOP_OPEN (20 samples, 0.18%)</title><rect x="245.3" y="181" width="2.2" height="15.0" fill="rgb(211,67,34)" rx="2" ry="2" />
<text x="248.33" y="191.5" ></text>
</g>
<g >
<title>netbsd`genfs_unlock (11 samples, 0.10%)</title><rect x="963.8" y="133" width="1.2" height="15.0" fill="rgb(219,229,38)" rx="2" ry="2" />
<text x="966.78" y="143.5" ></text>
</g>
<g >
<title>netbsd`sys___nanosleep50 (10 samples, 0.09%)</title><rect x="46.6" y="245" width="1.0" height="15.0" fill="rgb(206,5,13)" rx="2" ry="2" />
<text x="49.58" y="255.5" ></text>
</g>
<g >
<title>netbsd`pool_cache_get_paddr (10 samples, 0.09%)</title><rect x="995.9" y="197" width="1.0" height="15.0" fill="rgb(254,119,50)" rx="2" ry="2" />
<text x="998.85" y="207.5" ></text>
</g>
<g >
<title>netbsd`rw_exit (30 samples, 0.27%)</title><rect x="198.9" y="149" width="3.2" height="15.0" fill="rgb(212,45,41)" rx="2" ry="2" />
<text x="201.89" y="159.5" ></text>
</g>
<g >
<title>netbsd`Xspllower (20 samples, 0.18%)</title><rect x="1185.8" y="229" width="2.2" height="15.0" fill="rgb(248,24,10)" rx="2" ry="2" />
<text x="1188.82" y="239.5" ></text>
</g>
<g >
<title>netbsd`vrele (10 samples, 0.09%)</title><rect x="959.5" y="149" width="1.1" height="15.0" fill="rgb(238,8,11)" rx="2" ry="2" />
<text x="962.49" y="159.5" ></text>
</g>
<g >
<title>netbsd`pathbuf_create_raw (69 samples, 0.63%)</title><rect x="988.5" y="197" width="7.4" height="15.0" fill="rgb(243,13,28)" rx="2" ry="2" />
<text x="991.45" y="207.5" ></text>
</g>
<g >
<title>netbsd`pathbuf_stringcopy_put.part.5 (40 samples, 0.36%)</title><rect x="996.9" y="213" width="4.3" height="15.0" fill="rgb(221,159,31)" rx="2" ry="2" />
<text x="999.93" y="223.5" ></text>
</g>
<g >
<title>netbsd`inl (250 samples, 2.27%)</title><rect x="1087.0" y="149" width="26.8" height="15.0" fill="rgb(228,23,46)" rx="2" ry="2" />
<text x="1090.03" y="159.5" >n..</text>
</g>
<g >
<title>netbsd`vcache_tryvget (10 samples, 0.09%)</title><rect x="801.2" y="85" width="1.0" height="15.0" fill="rgb(225,228,39)" rx="2" ry="2" />
<text x="804.17" y="95.5" ></text>
</g>
<g >
<title>netbsd`mutex_vector_enter (110 samples, 1.00%)</title><rect x="967.1" y="133" width="11.8" height="15.0" fill="rgb(227,120,4)" rx="2" ry="2" />
<text x="970.11" y="143.5" ></text>
</g>
<g >
<title>netbsd`AcpiHwReadPort (250 samples, 2.27%)</title><rect x="1087.0" y="165" width="26.8" height="15.0" fill="rgb(240,98,19)" rx="2" ry="2" />
<text x="1090.03" y="175.5" >n..</text>
</g>
<g >
<title>netbsd`VOP_LOCK (558 samples, 5.07%)</title><rect x="895.3" y="133" width="59.9" height="15.0" fill="rgb(254,130,39)" rx="2" ry="2" />
<text x="898.35" y="143.5" >netbsd..</text>
</g>
<g >
<title>netbsd`vn_lock (1,277 samples, 11.61%)</title><rect x="632.0" y="101" width="137.0" height="15.0" fill="rgb(208,36,50)" rx="2" ry="2" />
<text x="635.02" y="111.5" >netbsd`vn_lock</text>
</g>
<g >
<title>netbsd`rw_exit (10 samples, 0.09%)</title><rect x="829.1" y="117" width="1.0" height="15.0" fill="rgb(207,221,46)" rx="2" ry="2" />
<text x="832.06" y="127.5" ></text>
</g>
<g >
<title>netbsd`memcmp (10 samples, 0.09%)</title><rect x="819.5" y="85" width="1.1" height="15.0" fill="rgb(214,45,31)" rx="2" ry="2" />
<text x="822.51" y="95.5" ></text>
</g>
<g >
<title>netbsd`_atomic_cas_64 (10 samples, 0.09%)</title><rect x="633.1" y="53" width="1.1" height="15.0" fill="rgb(208,165,8)" rx="2" ry="2" />
<text x="636.09" y="63.5" ></text>
</g>
<g >
<title>netbsd`genfs_lock (270 samples, 2.45%)</title><rect x="847.3" y="101" width="29.0" height="15.0" fill="rgb(211,141,40)" rx="2" ry="2" />
<text x="850.29" y="111.5" >ne..</text>
</g>
<g >
<title>netbsd`lookup_once (4,418 samples, 40.16%)</title><rect x="415.1" y="149" width="473.9" height="15.0" fill="rgb(244,143,46)" rx="2" ry="2" />
<text x="418.13" y="159.5" >netbsd`lookup_once</text>
</g>
<g >
<title>netbsd`secmodel_suser_vnode_cb (10 samples, 0.09%)</title><rect x="774.4" y="85" width="1.0" height="15.0" fill="rgb(214,55,18)" rx="2" ry="2" />
<text x="777.36" y="95.5" ></text>
</g>
<g >
<title>netbsd`rw_oncpu.part.0 (10 samples, 0.09%)</title><rect x="875.2" y="69" width="1.1" height="15.0" fill="rgb(243,91,2)" rx="2" ry="2" />
<text x="878.18" y="79.5" ></text>
</g>
<g >
<title>netbsd`mutex_enter (11 samples, 0.10%)</title><rect x="208.7" y="213" width="1.1" height="15.0" fill="rgb(254,26,22)" rx="2" ry="2" />
<text x="211.65" y="223.5" ></text>
</g>
<g >
<title>netbsd`lwp_trampoline (1,661 samples, 15.10%)</title><rect x="1009.8" y="277" width="178.2" height="15.0" fill="rgb(251,37,17)" rx="2" ry="2" />
<text x="1012.80" y="287.5" >netbsd`lwp_trampoline</text>
</g>
<g >
<title>netbsd`VOP_LOCK (329 samples, 2.99%)</title><rect x="847.3" y="117" width="35.3" height="15.0" fill="rgb(208,139,41)" rx="2" ry="2" />
<text x="850.29" y="127.5" >ne..</text>
</g>
<g >
<title>netbsd`handle_syscall (9,321 samples, 84.73%)</title><rect x="10.0" y="277" width="999.8" height="15.0" fill="rgb(205,35,19)" rx="2" ry="2" />
<text x="13.00" y="287.5" >netbsd`handle_syscall</text>
</g>
<g >
<title>netbsd`genfs_unlock (10 samples, 0.09%)</title><rect x="231.4" y="197" width="1.1" height="15.0" fill="rgb(233,100,1)" rx="2" ry="2" />
<text x="234.39" y="207.5" ></text>
</g>
<g >
<title>netbsd`mutex_enter (10 samples, 0.09%)</title><rect x="205.3" y="165" width="1.1" height="15.0" fill="rgb(217,201,53)" rx="2" ry="2" />
<text x="208.33" y="175.5" ></text>
</g>
<g >
<title>netbsd`fstrans_start (10 samples, 0.09%)</title><rect x="896.4" y="117" width="1.1" height="15.0" fill="rgb(207,79,23)" rx="2" ry="2" />
<text x="899.42" y="127.5" ></text>
</g>
<g >
<title>netbsd`vput (30 samples, 0.27%)</title><rect x="955.2" y="149" width="3.2" height="15.0" fill="rgb(223,145,26)" rx="2" ry="2" />
<text x="958.20" y="159.5" ></text>
</g>
<g >
<title>netbsd`_atomic_inc_32 (10 samples, 0.09%)</title><rect x="778.6" y="85" width="1.1" height="15.0" fill="rgb(212,6,30)" rx="2" ry="2" />
<text x="781.65" y="95.5" ></text>
</g>
<g >
<title>netbsd`rw_exit (10 samples, 0.09%)</title><rect x="957.3" y="117" width="1.1" height="15.0" fill="rgb(240,52,47)" rx="2" ry="2" />
<text x="960.35" y="127.5" ></text>
</g>
<g >
<title>netbsd`VOP_LOCK (1,277 samples, 11.61%)</title><rect x="632.0" y="85" width="137.0" height="15.0" fill="rgb(243,145,29)" rx="2" ry="2" />
<text x="635.02" y="95.5" >netbsd`VOP_LOCK</text>
</g>
<g >
<title>netbsd`mutex_enter (62 samples, 0.56%)</title><rect x="802.2" y="101" width="6.7" height="15.0" fill="rgb(230,204,46)" rx="2" ry="2" />
<text x="805.24" y="111.5" ></text>
</g>
<g >
<title>netbsd`rw_enter (40 samples, 0.36%)</title><rect x="979.9" y="165" width="4.3" height="15.0" fill="rgb(228,37,30)" rx="2" ry="2" />
<text x="982.87" y="175.5" ></text>
</g>
<g >
<title>netbsd`VOP_LOOKUP (550 samples, 5.00%)</title><rect x="769.0" y="133" width="59.0" height="15.0" fill="rgb(246,112,4)" rx="2" ry="2" />
<text x="771.99" y="143.5" >netbsd..</text>
</g>
<g >
<title>netbsd`kauth_authorize_vnode (30 samples, 0.27%)</title><rect x="771.1" y="85" width="3.3" height="15.0" fill="rgb(242,47,46)" rx="2" ry="2" />
<text x="774.14" y="95.5" ></text>
</g>
<g >
<title>netbsd`closef (1,481 samples, 13.46%)</title><rect x="49.8" y="213" width="158.9" height="15.0" fill="rgb(224,129,45)" rx="2" ry="2" />
<text x="52.79" y="223.5" >netbsd`closef</text>
</g>
<g >
<title>netbsd`namei_cleanup.part.1 (10 samples, 0.09%)</title><rect x="253.9" y="165" width="1.1" height="15.0" fill="rgb(214,5,6)" rx="2" ry="2" />
<text x="256.92" y="175.5" ></text>
</g>
<g >
<title>netbsd`vn_lock (577 samples, 5.24%)</title><rect x="893.3" y="149" width="61.9" height="15.0" fill="rgb(224,104,12)" rx="2" ry="2" />
<text x="896.31" y="159.5" >netbsd..</text>
</g>
<g >
<title>netbsd`vput (60 samples, 0.55%)</title><rect x="195.7" y="181" width="6.4" height="15.0" fill="rgb(243,229,16)" rx="2" ry="2" />
<text x="198.67" y="191.5" ></text>
</g>
<g >
<title>netbsd`mutex_enter (19 samples, 0.17%)</title><rect x="820.6" y="85" width="2.0" height="15.0" fill="rgb(221,41,21)" rx="2" ry="2" />
<text x="823.59" y="95.5" ></text>
</g>
<g >
<title>netbsd`_atomic_inc_32 (60 samples, 0.55%)</title><rect x="838.7" y="133" width="6.4" height="15.0" fill="rgb(241,65,7)" rx="2" ry="2" />
<text x="841.71" y="143.5" ></text>
</g>
<g >
<title>netbsd`mutex_exit (10 samples, 0.09%)</title><rect x="791.5" y="85" width="1.1" height="15.0" fill="rgb(254,81,44)" rx="2" ry="2" />
<text x="794.52" y="95.5" ></text>
</g>
<g >
<title>netbsd`tmpfs_access (10 samples, 0.09%)</title><rect x="244.3" y="165" width="1.0" height="15.0" fill="rgb(229,97,33)" rx="2" ry="2" />
<text x="247.26" y="175.5" ></text>
</g>
<g >
<title>netbsd`vref (10 samples, 0.09%)</title><rect x="958.4" y="149" width="1.1" height="15.0" fill="rgb(210,102,10)" rx="2" ry="2" />
<text x="961.42" y="159.5" ></text>
</g>
<g >
<title>netbsd`VOP_UNLOCK (10 samples, 0.09%)</title><rect x="882.6" y="117" width="1.1" height="15.0" fill="rgb(230,226,50)" rx="2" ry="2" />
<text x="885.58" y="127.5" ></text>
</g>
<g >
<title>netbsd`VOP_UNLOCK (20 samples, 0.18%)</title><rect x="203.2" y="165" width="2.1" height="15.0" fill="rgb(248,136,52)" rx="2" ry="2" />
<text x="206.18" y="175.5" ></text>
</g>
<g >
<title>netbsd`VOP_UNLOCK (20 samples, 0.18%)</title><rect x="828.0" y="133" width="2.1" height="15.0" fill="rgb(253,216,11)" rx="2" ry="2" />
<text x="830.99" y="143.5" ></text>
</g>
<g >
<title>netbsd`tmpfs_inactive (9 samples, 0.08%)</title><rect x="978.9" y="133" width="1.0" height="15.0" fill="rgb(249,52,35)" rx="2" ry="2" />
<text x="981.91" y="143.5" ></text>
</g>
<g >
<title>netbsd`vrelel (61 samples, 0.55%)</title><rect x="202.1" y="181" width="6.6" height="15.0" fill="rgb(209,139,8)" rx="2" ry="2" />
<text x="205.11" y="191.5" ></text>
</g>
<g >
<title>netbsd`vrele (10 samples, 0.09%)</title><rect x="253.9" y="149" width="1.1" height="15.0" fill="rgb(253,112,48)" rx="2" ry="2" />
<text x="256.92" y="159.5" ></text>
</g>
<g >
<title>netbsd`vn_lock (11 samples, 0.10%)</title><rect x="207.5" y="165" width="1.2" height="15.0" fill="rgb(248,213,54)" rx="2" ry="2" />
<text x="210.47" y="175.5" ></text>
</g>
<g >
<title>netbsd`mutex_vector_enter (10 samples, 0.09%)</title><rect x="959.5" y="133" width="1.1" height="15.0" fill="rgb(207,97,34)" rx="2" ry="2" />
<text x="962.49" y="143.5" ></text>
</g>
<g >
<title>netbsd`cache_lookup_entry (20 samples, 0.18%)</title><rect x="817.4" y="85" width="2.1" height="15.0" fill="rgb(247,112,39)" rx="2" ry="2" />
<text x="820.37" y="95.5" ></text>
</g>
<g >
<title>netbsd`VOP_LOCK (1,260 samples, 11.45%)</title><rect x="59.4" y="165" width="135.2" height="15.0" fill="rgb(207,139,37)" rx="2" ry="2" />
<text x="62.45" y="175.5" >netbsd`VOP_LOCK</text>
</g>
<g >
<title>netbsd`copyinstr (21 samples, 0.19%)</title><rect x="216.3" y="213" width="2.2" height="15.0" fill="rgb(240,96,6)" rx="2" ry="2" />
<text x="219.27" y="223.5" ></text>
</g>
<g >
<title>netbsd`spllower (20 samples, 0.18%)</title><rect x="1002.3" y="229" width="2.1" height="15.0" fill="rgb(234,133,23)" rx="2" ry="2" />
<text x="1005.29" y="239.5" ></text>
</g>
<g >
<title>netbsd`rw_vector_enter (260 samples, 2.36%)</title><rect x="848.4" y="85" width="27.9" height="15.0" fill="rgb(205,148,19)" rx="2" ry="2" />
<text x="851.37" y="95.5" >n..</text>
</g>
<g >
<title>netbsd`mutex_enter (20 samples, 0.18%)</title><rect x="233.5" y="197" width="2.2" height="15.0" fill="rgb(247,17,46)" rx="2" ry="2" />
<text x="236.54" y="207.5" ></text>
</g>
<g >
<title>netbsd`tmpfs_root (10 samples, 0.09%)</title><rect x="846.2" y="133" width="1.1" height="15.0" fill="rgb(231,155,19)" rx="2" ry="2" />
<text x="849.22" y="143.5" ></text>
</g>
<g >
<title>netbsd`mutex_vector_enter (1,311 samples, 11.92%)</title><rect x="440.9" y="85" width="140.6" height="15.0" fill="rgb(208,202,6)" rx="2" ry="2" />
<text x="443.88" y="95.5" >netbsd`mutex_vect..</text>
</g>
<g >
<title>netbsd`tmpfs_open (10 samples, 0.09%)</title><rect x="246.4" y="165" width="1.1" height="15.0" fill="rgb(246,146,25)" rx="2" ry="2" />
<text x="249.41" y="175.5" ></text>
</g>
<g >
<title>netbsd`idle_loop (1,641 samples, 14.92%)</title><rect x="1009.8" y="261" width="176.0" height="15.0" fill="rgb(214,143,34)" rx="2" ry="2" />
<text x="1012.80" y="271.5" >netbsd`idle_loop</text>
</g>
<g >
<title>netbsd`genfs_lock (528 samples, 4.80%)</title><rect x="897.5" y="117" width="56.6" height="15.0" fill="rgb(221,49,48)" rx="2" ry="2" />
<text x="900.49" y="127.5" >netbs..</text>
</g>
<g >
<title>netbsd`_atomic_dec_32_nv (10 samples, 0.09%)</title><rect x="56.2" y="181" width="1.1" height="15.0" fill="rgb(238,48,15)" rx="2" ry="2" />
<text x="59.23" y="191.5" ></text>
</g>
<g >
<title>netbsd`vcache_get (1,832 samples, 16.65%)</title><rect x="435.5" y="101" width="196.5" height="15.0" fill="rgb(230,221,12)" rx="2" ry="2" />
<text x="438.51" y="111.5" >netbsd`vcache_get</text>
</g>
<g >
<title>netbsd`vcache_vget (471 samples, 4.28%)</title><rect x="581.5" y="85" width="50.5" height="15.0" fill="rgb(240,186,28)" rx="2" ry="2" />
<text x="584.50" y="95.5" >netbs..</text>
</g>
<g >
<title>netbsd`pathbuf_copyin (79 samples, 0.72%)</title><rect x="987.4" y="213" width="8.5" height="15.0" fill="rgb(234,191,35)" rx="2" ry="2" />
<text x="990.38" y="223.5" ></text>
</g>
<g >
<title>netbsd`vdrain_thread (20 samples, 0.18%)</title><rect x="1185.8" y="261" width="2.2" height="15.0" fill="rgb(212,220,16)" rx="2" ry="2" />
<text x="1188.82" y="271.5" ></text>
</g>
<g >
<title>netbsd`trap (50 samples, 0.45%)</title><rect x="1004.4" y="261" width="5.4" height="15.0" fill="rgb(219,46,44)" rx="2" ry="2" />
<text x="1007.44" y="271.5" ></text>
</g>
<g >
<title>netbsd`cache_lookup_entry (40 samples, 0.36%)</title><rect x="779.7" y="85" width="4.3" height="15.0" fill="rgb(215,142,39)" rx="2" ry="2" />
<text x="782.72" y="95.5" ></text>
</g>
</g>
</svg>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment