-
-
Save heatd/cf6d1397c46c2f46b566a3d419627d6d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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="310" onload="init(evt)" viewBox="0 0 1200 310" 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="310.0" fill="url(#background)" /> | |
<text id="title" x="600.00" y="24" >Flame Graph</text> | |
<text id="details" x="10.00" y="293" > </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="293" > </text> | |
<g id="frames"> | |
<g > | |
<title>vmonyx`free_page(page*) (16 samples, 0.04%)</title><rect x="750.8" y="181" width="0.5" height="15.0" fill="rgb(248,221,26)" rx="2" ry="2" /> | |
<text x="753.84" y="191.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`__lock_page(page*, bool) (389 samples, 1.03%)</title><rect x="271.3" y="165" width="12.2" height="15.0" fill="rgb(234,89,33)" rx="2" ry="2" /> | |
<text x="274.32" y="175.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`sched_handle_preempt(bool) (9 samples, 0.02%)</title><rect x="972.5" y="213" width="0.3" height="15.0" fill="rgb(254,101,12)" rx="2" ry="2" /> | |
<text x="975.51" y="223.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`mutex_optimistic_spin(mutex*) (110 samples, 0.29%)</title><rect x="440.9" y="101" width="3.5" height="15.0" fill="rgb(214,102,44)" rx="2" ry="2" /> | |
<text x="443.93" y="111.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`bst_prev_next (21 samples, 0.06%)</title><rect x="1186.0" y="37" width="0.7" height="15.0" fill="rgb(230,140,38)" rx="2" ry="2" /> | |
<text x="1189.04" y="47.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`spin_lock_slow_path(spinlock*, unsigned int) (1,859 samples, 4.95%)</title><rect x="910.4" y="181" width="58.3" height="15.0" fill="rgb(250,199,23)" rx="2" ry="2" /> | |
<text x="913.38" y="191.5" >vmonyx..</text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8122d900 (10 samples, 0.03%)</title><rect x="35.2" y="245" width="0.3" height="15.0" fill="rgb(233,129,8)" rx="2" ry="2" /> | |
<text x="38.21" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`proc_event_exit_syscall(long, long) (9 samples, 0.02%)</title><rect x="988.9" y="245" width="0.3" height="15.0" fill="rgb(211,47,5)" rx="2" ry="2" /> | |
<text x="991.93" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8122d900 (20 samples, 0.05%)</title><rect x="84.4" y="213" width="0.6" height="15.0" fill="rgb(246,100,2)" rx="2" ry="2" /> | |
<text x="87.40" y="223.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8120c9bc (7 samples, 0.02%)</title><rect x="108.8" y="181" width="0.2" height="15.0" fill="rgb(241,98,20)" rx="2" ry="2" /> | |
<text x="111.76" y="191.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`is_in_panic (18 samples, 0.05%)</title><rect x="435.6" y="117" width="0.6" height="15.0" fill="rgb(227,5,52)" rx="2" ry="2" /> | |
<text x="438.63" y="127.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`vmalloc_allocate_base(vmalloc_tree*, unsigned long, unsigned long) [clone .constprop.0] (21 samples, 0.06%)</title><rect x="1186.0" y="53" width="0.7" height="15.0" fill="rgb(206,192,33)" rx="2" ry="2" /> | |
<text x="1189.04" y="63.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8120ea7b (7 samples, 0.02%)</title><rect x="34.7" y="245" width="0.3" height="15.0" fill="rgb(241,34,37)" rx="2" ry="2" /> | |
<text x="37.74" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`mutex_unlock(mutex*) (1,833 samples, 4.88%)</title><rect x="573.6" y="133" width="57.5" height="15.0" fill="rgb(218,127,44)" rx="2" ry="2" /> | |
<text x="576.60" y="143.5" >vmonyx..</text> | |
</g> | |
<g > | |
<title>vmonyx`__spin_lock (53 samples, 0.14%)</title><rect x="444.7" y="85" width="1.6" height="15.0" fill="rgb(211,65,2)" rx="2" ry="2" /> | |
<text x="447.67" y="95.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`vmo_get(vm_object*, unsigned long, unsigned int, page**) (33 samples, 0.09%)</title><rect x="749.8" y="165" width="1.0" height="15.0" fill="rgb(243,176,47)" rx="2" ry="2" /> | |
<text x="752.81" y="175.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`__can_sleep_internal() (6 samples, 0.02%)</title><rect x="209.2" y="181" width="0.1" height="15.0" fill="rgb(237,203,43)" rx="2" ry="2" /> | |
<text x="212.16" y="191.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`sched_unlock(thread*, unsigned long) (47 samples, 0.13%)</title><rect x="629.1" y="117" width="1.5" height="15.0" fill="rgb(227,95,12)" rx="2" ry="2" /> | |
<text x="632.10" y="127.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8120ea3f (12 samples, 0.03%)</title><rect x="29.5" y="245" width="0.4" height="15.0" fill="rgb(229,11,22)" rx="2" ry="2" /> | |
<text x="32.53" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`spin_lock_slow_path(spinlock*, unsigned int) (894 samples, 2.38%)</title><rect x="598.2" y="101" width="28.0" height="15.0" fill="rgb(251,16,31)" rx="2" ry="2" /> | |
<text x="601.18" y="111.5" >v..</text> | |
</g> | |
<g > | |
<title>vmonyx`sched_handle_preempt(bool) (10 samples, 0.03%)</title><rect x="446.5" y="101" width="0.3" height="15.0" fill="rgb(239,1,16)" rx="2" ry="2" /> | |
<text x="449.46" y="111.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`flush_thr_init(void*) (422 samples, 1.12%)</title><rect x="1176.7" y="229" width="13.3" height="15.0" fill="rgb(252,152,53)" rx="2" ry="2" /> | |
<text x="1179.72" y="239.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff81213bf9 (13 samples, 0.03%)</title><rect x="446.8" y="85" width="0.4" height="15.0" fill="rgb(245,2,17)" rx="2" ry="2" /> | |
<text x="449.77" y="95.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8122d900 (8 samples, 0.02%)</title><rect x="874.1" y="197" width="0.2" height="15.0" fill="rgb(222,0,40)" rx="2" ry="2" /> | |
<text x="877.06" y="207.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`nvme_device::setup_prp (32 samples, 0.09%)</title><rect x="1185.7" y="133" width="1.0" height="15.0" fill="rgb(242,69,50)" rx="2" ry="2" /> | |
<text x="1188.70" y="143.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`__spin_lock (12 samples, 0.03%)</title><rect x="572.4" y="133" width="0.4" height="15.0" fill="rgb(215,73,3)" rx="2" ry="2" /> | |
<text x="575.37" y="143.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`pagecache_dirty_block(page_cache_block*) (10 samples, 0.03%)</title><rect x="751.5" y="181" width="0.3" height="15.0" fill="rgb(234,4,53)" rx="2" ry="2" /> | |
<text x="754.53" y="191.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`__sys_pwrite_thunk(unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long) (95 samples, 0.25%)</title><rect x="35.5" y="245" width="3.0" height="15.0" fill="rgb(212,123,48)" rx="2" ry="2" /> | |
<text x="38.52" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`__unlock_page(page*) (163 samples, 0.43%)</title><rect x="283.5" y="165" width="5.1" height="15.0" fill="rgb(231,59,2)" rx="2" ry="2" /> | |
<text x="286.53" y="175.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`radix_tree::get (1,478 samples, 3.93%)</title><rect x="631.1" y="133" width="46.4" height="15.0" fill="rgb(208,20,41)" rx="2" ry="2" /> | |
<text x="634.14" y="143.5" >vmon..</text> | |
</g> | |
<g > | |
<title>vmonyx`sched_handle_preempt(bool) (53 samples, 0.14%)</title><rect x="970.1" y="197" width="1.7" height="15.0" fill="rgb(225,62,43)" rx="2" ry="2" /> | |
<text x="973.09" y="207.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8120ea76 (4 samples, 0.01%)</title><rect x="34.6" y="245" width="0.1" height="15.0" fill="rgb(247,118,30)" rx="2" ry="2" /> | |
<text x="37.61" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`proc_event_exit_syscall(long, long) (94 samples, 0.25%)</title><rect x="63.3" y="229" width="2.9" height="15.0" fill="rgb(226,85,0)" rx="2" ry="2" /> | |
<text x="66.27" y="239.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`context_tracking_exit_kernel() (126 samples, 0.34%)</title><rect x="53.5" y="229" width="4.0" height="15.0" fill="rgb(253,97,4)" rx="2" ry="2" /> | |
<text x="56.54" y="239.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`proc_event_enter_syscall(syscall_frame*, unsigned long) (147 samples, 0.39%)</title><rect x="58.7" y="229" width="4.6" height="15.0" fill="rgb(214,171,4)" rx="2" ry="2" /> | |
<text x="61.66" y="239.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`write_vfs(unsigned long, unsigned long, void*, file*) (9 samples, 0.02%)</title><rect x="988.5" y="229" width="0.3" height="15.0" fill="rgb(236,9,33)" rx="2" ry="2" /> | |
<text x="991.49" y="239.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`do_actual_write(unsigned long, unsigned long, void*, file*) (24,395 samples, 64.90%)</title><rect x="85.9" y="213" width="765.8" height="15.0" fill="rgb(230,36,7)" rx="2" ry="2" /> | |
<text x="88.88" y="223.5" >vmonyx`do_actual_write(unsigned long, unsigned long, void*, file*)</text> | |
</g> | |
<g > | |
<title>vmonyx`spin_lock_slow_path(spinlock*, unsigned int) (114 samples, 0.30%)</title><rect x="437.3" y="85" width="3.6" height="15.0" fill="rgb(222,181,0)" rx="2" ry="2" /> | |
<text x="440.32" y="95.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`ext2_prepare_write(inode*, page*, unsigned long, unsigned long, unsigned long) (2,139 samples, 5.69%)</title><rect x="289.1" y="165" width="67.1" height="15.0" fill="rgb(223,44,7)" rx="2" ry="2" /> | |
<text x="292.08" y="175.5" >vmonyx`..</text> | |
</g> | |
<g > | |
<title>vmonyx`rw_lock_trywrite(rwlock*) (671 samples, 1.79%)</title><rect x="755.9" y="165" width="21.0" height="15.0" fill="rgb(231,28,51)" rx="2" ry="2" /> | |
<text x="758.87" y="175.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`file_write_cache(void*, unsigned long, inode*, unsigned long) (8 samples, 0.02%)</title><rect x="851.7" y="213" width="0.3" height="15.0" fill="rgb(229,126,4)" rx="2" ry="2" /> | |
<text x="854.71" y="223.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`inode_get_cache_block(inode*, unsigned long, long) (6 samples, 0.02%)</title><rect x="751.3" y="181" width="0.2" height="15.0" fill="rgb(229,171,5)" rx="2" ry="2" /> | |
<text x="754.35" y="191.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`sb_write_bio(superblock*, page_iov*, unsigned long, unsigned long) (417 samples, 1.11%)</title><rect x="1176.8" y="165" width="13.1" height="15.0" fill="rgb(211,74,30)" rx="2" ry="2" /> | |
<text x="1179.81" y="175.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8120c9a8 (36 samples, 0.10%)</title><rect x="107.4" y="181" width="1.1" height="15.0" fill="rgb(253,189,37)" rx="2" ry="2" /> | |
<text x="110.38" y="191.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`nvme_device::submit_request (415 samples, 1.10%)</title><rect x="1176.8" y="149" width="13.1" height="15.0" fill="rgb(252,10,52)" rx="2" ry="2" /> | |
<text x="1179.85" y="159.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`mutex_lock(mutex*) (12 samples, 0.03%)</title><rect x="373.2" y="149" width="0.4" height="15.0" fill="rgb(238,140,52)" rx="2" ry="2" /> | |
<text x="376.19" y="159.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8120ea4f (11 samples, 0.03%)</title><rect x="31.0" y="245" width="0.3" height="15.0" fill="rgb(244,80,10)" rx="2" ry="2" /> | |
<text x="33.97" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`thread_wake_up(thread*) (9 samples, 0.02%)</title><rect x="630.9" y="117" width="0.2" height="15.0" fill="rgb(206,213,10)" rx="2" ry="2" /> | |
<text x="633.86" y="127.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`thread_get_addr_limit (20 samples, 0.05%)</title><rect x="794.1" y="181" width="0.7" height="15.0" fill="rgb(247,75,48)" rx="2" ry="2" /> | |
<text x="797.13" y="191.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`sched_lock(thread*) (7 samples, 0.02%)</title><rect x="630.9" y="101" width="0.2" height="15.0" fill="rgb(216,116,29)" rx="2" ry="2" /> | |
<text x="633.92" y="111.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`inode_mark_dirty(inode*) (5 samples, 0.01%)</title><rect x="972.4" y="213" width="0.1" height="15.0" fill="rgb(218,86,40)" rx="2" ry="2" /> | |
<text x="975.35" y="223.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff81213bf9 (98 samples, 0.26%)</title><rect x="1186.7" y="117" width="3.1" height="15.0" fill="rgb(241,29,25)" rx="2" ry="2" /> | |
<text x="1189.74" y="127.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`file_write_cache_unlocked(void*, unsigned long, inode*, unsigned long) (17,106 samples, 45.51%)</title><rect x="213.8" y="181" width="537.0" height="15.0" fill="rgb(234,22,33)" rx="2" ry="2" /> | |
<text x="216.83" y="191.5" >vmonyx`file_write_cache_unlocked(void*, unsigned long, inode*, unsigned l..</text> | |
</g> | |
<g > | |
<title>vmonyx`sched_yield() (98 samples, 0.26%)</title><rect x="1186.7" y="133" width="3.1" height="15.0" fill="rgb(254,48,21)" rx="2" ry="2" /> | |
<text x="1189.74" y="143.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`block_buf_from_page(page*) (85 samples, 0.23%)</title><rect x="353.6" y="149" width="2.6" height="15.0" fill="rgb(227,173,7)" rx="2" ry="2" /> | |
<text x="356.56" y="159.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`softirq_pending() (9 samples, 0.02%)</title><rect x="630.6" y="117" width="0.3" height="15.0" fill="rgb(251,171,1)" rx="2" ry="2" /> | |
<text x="633.58" y="127.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff810131cd (6 samples, 0.02%)</title><rect x="94.3" y="197" width="0.1" height="15.0" fill="rgb(238,73,22)" rx="2" ry="2" /> | |
<text x="97.26" y="207.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8120ea6e (19 samples, 0.05%)</title><rect x="33.9" y="245" width="0.6" height="15.0" fill="rgb(211,70,44)" rx="2" ry="2" /> | |
<text x="36.92" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`mutex_optimistic_spin(mutex*) (3,988 samples, 10.61%)</title><rect x="447.2" y="117" width="125.2" height="15.0" fill="rgb(251,165,23)" rx="2" ry="2" /> | |
<text x="450.18" y="127.5" >vmonyx`mutex_op..</text> | |
</g> | |
<g > | |
<title>vmonyx`rw_unlock_write(rwlock*) (548 samples, 1.46%)</title><rect x="776.9" y="181" width="17.2" height="15.0" fill="rgb(225,187,6)" rx="2" ry="2" /> | |
<text x="779.93" y="191.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8120c9ae (5 samples, 0.01%)</title><rect x="108.5" y="181" width="0.2" height="15.0" fill="rgb(218,80,24)" rx="2" ry="2" /> | |
<text x="111.54" y="191.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`vmalloc(unsigned long, int, int) (27 samples, 0.07%)</title><rect x="1185.9" y="69" width="0.8" height="15.0" fill="rgb(213,144,19)" rx="2" ry="2" /> | |
<text x="1188.86" y="79.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8122d900 (4 samples, 0.01%)</title><rect x="372.7" y="149" width="0.1" height="15.0" fill="rgb(240,161,3)" rx="2" ry="2" /> | |
<text x="375.65" y="159.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`io_queue::submit_request (279 samples, 0.74%)</title><rect x="1176.9" y="133" width="8.8" height="15.0" fill="rgb(227,204,25)" rx="2" ry="2" /> | |
<text x="1179.94" y="143.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8120c9c7 (98 samples, 0.26%)</title><rect x="205.8" y="181" width="3.1" height="15.0" fill="rgb(206,137,48)" rx="2" ry="2" /> | |
<text x="208.80" y="191.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`vmo_get(vm_object*, unsigned long, unsigned int, page**) (9,652 samples, 25.68%)</title><rect x="374.6" y="149" width="303.0" height="15.0" fill="rgb(237,216,49)" rx="2" ry="2" /> | |
<text x="377.63" y="159.5" >vmonyx`vmo_get(vm_object*, unsigned long..</text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8120ea60 (9 samples, 0.02%)</title><rect x="31.7" y="245" width="0.3" height="15.0" fill="rgb(213,40,46)" rx="2" ry="2" /> | |
<text x="34.69" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`sys_pwrite(int, void const*, unsigned long, long) (29,378 samples, 78.16%)</title><rect x="66.2" y="229" width="922.3" height="15.0" fill="rgb(224,156,20)" rx="2" ry="2" /> | |
<text x="69.22" y="239.5" >vmonyx`sys_pwrite(int, void const*, unsigned long, long)</text> | |
</g> | |
<g > | |
<title>vmonyx`malloc (29 samples, 0.08%)</title><rect x="1185.8" y="117" width="0.9" height="15.0" fill="rgb(217,229,21)" rx="2" ry="2" /> | |
<text x="1188.79" y="127.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff810131cd (11 samples, 0.03%)</title><rect x="106.8" y="181" width="0.3" height="15.0" fill="rgb(230,9,52)" rx="2" ry="2" /> | |
<text x="109.78" y="191.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`get_file_description(int) (35 samples, 0.09%)</title><rect x="57.6" y="229" width="1.1" height="15.0" fill="rgb(240,20,6)" rx="2" ry="2" /> | |
<text x="60.56" y="239.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`__spin_lock (1,400 samples, 3.72%)</title><rect x="582.3" y="117" width="43.9" height="15.0" fill="rgb(211,191,39)" rx="2" ry="2" /> | |
<text x="585.29" y="127.5" >vmon..</text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8120ea47 (18 samples, 0.05%)</title><rect x="30.4" y="245" width="0.6" height="15.0" fill="rgb(227,171,33)" rx="2" ry="2" /> | |
<text x="33.41" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`mutex_lock_slow_path(mutex*, int) (350 samples, 0.93%)</title><rect x="436.2" y="117" width="11.0" height="15.0" fill="rgb(234,67,18)" rx="2" ry="2" /> | |
<text x="439.19" y="127.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`context_tracking_exit_kernel() (8 samples, 0.02%)</title><rect x="38.8" y="245" width="0.2" height="15.0" fill="rgb(228,215,13)" rx="2" ry="2" /> | |
<text x="41.79" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`context_tracking_enter_kernel() (9 samples, 0.02%)</title><rect x="38.5" y="245" width="0.3" height="15.0" fill="rgb(220,15,5)" rx="2" ry="2" /> | |
<text x="41.50" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`proc_event_enter_syscall(syscall_frame*, unsigned long) (5 samples, 0.01%)</title><rect x="988.8" y="245" width="0.1" height="15.0" fill="rgb(232,164,17)" rx="2" ry="2" /> | |
<text x="991.77" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`signal_is_pending (72 samples, 0.19%)</title><rect x="1170.8" y="245" width="2.3" height="15.0" fill="rgb(221,201,19)" rx="2" ry="2" /> | |
<text x="1173.82" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`sched_yield() (10 samples, 0.03%)</title><rect x="749.5" y="165" width="0.3" height="15.0" fill="rgb(239,196,42)" rx="2" ry="2" /> | |
<text x="752.49" y="175.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`__spin_unlock (9 samples, 0.02%)</title><rect x="85.3" y="213" width="0.3" height="15.0" fill="rgb(215,7,46)" rx="2" ry="2" /> | |
<text x="88.34" y="223.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`__spin_lock (120 samples, 0.32%)</title><rect x="437.1" y="101" width="3.8" height="15.0" fill="rgb(244,72,16)" rx="2" ry="2" /> | |
<text x="440.13" y="111.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`rw_unlock_write(rwlock*) (20 samples, 0.05%)</title><rect x="831.0" y="197" width="0.6" height="15.0" fill="rgb(233,43,13)" rx="2" ry="2" /> | |
<text x="834.02" y="207.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`inode_mark_dirty(inode*) (1,137 samples, 3.02%)</title><rect x="795.0" y="197" width="35.7" height="15.0" fill="rgb(236,62,2)" rx="2" ry="2" /> | |
<text x="797.98" y="207.5" >vmo..</text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8120ea56 (9 samples, 0.02%)</title><rect x="31.4" y="245" width="0.3" height="15.0" fill="rgb(215,93,10)" rx="2" ry="2" /> | |
<text x="34.38" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`softirq_pending() (17 samples, 0.05%)</title><rect x="971.8" y="197" width="0.5" height="15.0" fill="rgb(209,157,40)" rx="2" ry="2" /> | |
<text x="974.76" y="207.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`pagecache_dirty_block(page_cache_block*) (2,289 samples, 6.09%)</title><rect x="677.6" y="165" width="71.9" height="15.0" fill="rgb(236,159,44)" rx="2" ry="2" /> | |
<text x="680.63" y="175.5" >vmonyx`p..</text> | |
</g> | |
<g > | |
<title>vmonyx`sched_yield() (351 samples, 0.93%)</title><rect x="272.5" y="149" width="11.0" height="15.0" fill="rgb(237,41,25)" rx="2" ry="2" /> | |
<text x="275.51" y="159.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`__spin_unlock (14 samples, 0.04%)</title><rect x="572.8" y="133" width="0.4" height="15.0" fill="rgb(212,75,54)" rx="2" ry="2" /> | |
<text x="575.75" y="143.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`inode_get_cache_block(inode*, unsigned long, long) (10,009 samples, 26.63%)</title><rect x="363.4" y="165" width="314.2" height="15.0" fill="rgb(219,198,24)" rx="2" ry="2" /> | |
<text x="366.42" y="175.5" >vmonyx`inode_get_cache_block(inode*, unsig..</text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff810131af (9 samples, 0.02%)</title><rect x="10.0" y="245" width="0.3" height="15.0" fill="rgb(233,225,14)" rx="2" ry="2" /> | |
<text x="13.00" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`flush::flush_dev::sync (422 samples, 1.12%)</title><rect x="1176.7" y="197" width="13.3" height="15.0" fill="rgb(244,49,16)" rx="2" ry="2" /> | |
<text x="1179.72" y="207.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`context_tracking_enter_kernel() (185 samples, 0.49%)</title><rect x="47.7" y="229" width="5.8" height="15.0" fill="rgb(212,184,35)" rx="2" ry="2" /> | |
<text x="50.73" y="239.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`ext2_prepare_write(inode*, page*, unsigned long, unsigned long, unsigned long) (141 samples, 0.38%)</title><rect x="209.4" y="181" width="4.4" height="15.0" fill="rgb(233,66,14)" rx="2" ry="2" /> | |
<text x="212.41" y="191.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`write_vfs(unsigned long, unsigned long, void*, file*) (500 samples, 1.33%)</title><rect x="972.8" y="213" width="15.7" height="15.0" fill="rgb(229,18,40)" rx="2" ry="2" /> | |
<text x="975.79" y="223.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8120ea6c (53 samples, 0.14%)</title><rect x="32.3" y="245" width="1.6" height="15.0" fill="rgb(252,198,28)" rx="2" ry="2" /> | |
<text x="35.26" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`__mutex_lock(mutex*, int) (13 samples, 0.03%)</title><rect x="372.8" y="149" width="0.4" height="15.0" fill="rgb(208,220,43)" rx="2" ry="2" /> | |
<text x="375.78" y="159.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`__mutex_lock(mutex*, int) (5,112 samples, 13.60%)</title><rect x="411.9" y="133" width="160.5" height="15.0" fill="rgb(249,88,42)" rx="2" ry="2" /> | |
<text x="414.89" y="143.5" >vmonyx`__mutex_lock(..</text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8122d900 (6 samples, 0.02%)</title><rect x="271.1" y="165" width="0.2" height="15.0" fill="rgb(222,13,25)" rx="2" ry="2" /> | |
<text x="274.13" y="175.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`kmem_cache_create_slab(slab_cache*, unsigned int) [clone .constprop.0] (28 samples, 0.07%)</title><rect x="1185.8" y="85" width="0.9" height="15.0" fill="rgb(253,24,26)" rx="2" ry="2" /> | |
<text x="1188.82" y="95.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8122d900 (7 samples, 0.02%)</title><rect x="582.1" y="117" width="0.2" height="15.0" fill="rgb(251,116,31)" rx="2" ry="2" /> | |
<text x="585.07" y="127.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`mutex_prepare_sleep(mutex*, int) (66 samples, 0.18%)</title><rect x="444.4" y="101" width="2.1" height="15.0" fill="rgb(209,157,52)" rx="2" ry="2" /> | |
<text x="447.38" y="111.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`file_write_cache_unlocked(void*, unsigned long, inode*, unsigned long) (7 samples, 0.02%)</title><rect x="794.8" y="197" width="0.2" height="15.0" fill="rgb(211,37,31)" rx="2" ry="2" /> | |
<text x="797.76" y="207.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`thread_get_addr_limit (32 samples, 0.09%)</title><rect x="107.5" y="165" width="1.0" height="15.0" fill="rgb(224,50,14)" rx="2" ry="2" /> | |
<text x="110.51" y="175.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff810131bb (13 samples, 0.03%)</title><rect x="10.3" y="245" width="0.4" height="15.0" fill="rgb(215,209,16)" rx="2" ry="2" /> | |
<text x="13.28" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`is_in_panic (22 samples, 0.06%)</title><rect x="755.2" y="165" width="0.7" height="15.0" fill="rgb(217,202,46)" rx="2" ry="2" /> | |
<text x="758.18" y="175.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`file_write_cache(void*, unsigned long, inode*, unsigned long) (22,059 samples, 58.69%)</title><rect x="102.3" y="197" width="692.5" height="15.0" fill="rgb(209,147,23)" rx="2" ry="2" /> | |
<text x="105.26" y="207.5" >vmonyx`file_write_cache(void*, unsigned long, inode*, unsigned long)</text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8120ea3c (596 samples, 1.59%)</title><rect x="10.8" y="245" width="18.7" height="15.0" fill="rgb(247,105,31)" rx="2" ry="2" /> | |
<text x="13.75" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8120c9c4 (38 samples, 0.10%)</title><rect x="204.6" y="181" width="1.2" height="15.0" fill="rgb(237,95,46)" rx="2" ry="2" /> | |
<text x="207.61" y="191.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`x86::internal::kernel_thread_start (423 samples, 1.13%)</title><rect x="1176.7" y="245" width="13.3" height="15.0" fill="rgb(248,78,3)" rx="2" ry="2" /> | |
<text x="1179.72" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`sched_handle_preempt(bool) (57 samples, 0.15%)</title><rect x="627.3" y="117" width="1.8" height="15.0" fill="rgb(233,107,37)" rx="2" ry="2" /> | |
<text x="630.31" y="127.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`sched_yield() (13 samples, 0.03%)</title><rect x="446.8" y="101" width="0.4" height="15.0" fill="rgb(244,174,30)" rx="2" ry="2" /> | |
<text x="449.77" y="111.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`get_file_description(int) (3,835 samples, 10.20%)</title><rect x="852.0" y="213" width="120.4" height="15.0" fill="rgb(220,152,45)" rx="2" ry="2" /> | |
<text x="854.96" y="223.5" >vmonyx`get_file..</text> | |
</g> | |
<g > | |
<title>vmonyx`do_syscall64 (30,253 samples, 80.49%)</title><rect x="39.0" y="245" width="949.8" height="15.0" fill="rgb(216,199,51)" rx="2" ry="2" /> | |
<text x="42.04" y="255.5" >vmonyx`do_syscall64</text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8120ea81 (5 samples, 0.01%)</title><rect x="35.1" y="245" width="0.1" height="15.0" fill="rgb(210,189,24)" rx="2" ry="2" /> | |
<text x="38.05" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`__can_sleep_internal() (11 samples, 0.03%)</title><rect x="411.5" y="133" width="0.4" height="15.0" fill="rgb(205,21,25)" rx="2" ry="2" /> | |
<text x="414.55" y="143.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8120ea45 (16 samples, 0.04%)</title><rect x="29.9" y="245" width="0.5" height="15.0" fill="rgb(214,3,4)" rx="2" ry="2" /> | |
<text x="32.90" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`clock_get_posix_time() (8 samples, 0.02%)</title><rect x="85.6" y="213" width="0.3" height="15.0" fill="rgb(218,44,3)" rx="2" ry="2" /> | |
<text x="88.63" y="223.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`rw_lock_write(rwlock*) (789 samples, 2.10%)</title><rect x="752.2" y="181" width="24.7" height="15.0" fill="rgb(208,60,37)" rx="2" ry="2" /> | |
<text x="755.16" y="191.5" >v..</text> | |
</g> | |
<g > | |
<title>all (37,588 samples, 100%)</title><rect x="10.0" y="261" width="1180.0" height="15.0" fill="rgb(207,134,51)" rx="2" ry="2" /> | |
<text x="13.00" y="271.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`kmem_cache_alloc(slab_cache*, unsigned int) (28 samples, 0.07%)</title><rect x="1185.8" y="101" width="0.9" height="15.0" fill="rgb(245,177,16)" rx="2" ry="2" /> | |
<text x="1188.82" y="111.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`rw_lock_trywrite(rwlock*) (10 samples, 0.03%)</title><rect x="751.8" y="181" width="0.4" height="15.0" fill="rgb(225,21,5)" rx="2" ry="2" /> | |
<text x="754.85" y="191.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`radix_tree::get (17 samples, 0.05%)</title><rect x="374.1" y="149" width="0.5" height="15.0" fill="rgb(235,48,46)" rx="2" ry="2" /> | |
<text x="377.10" y="159.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`tsc_get_ns() (639 samples, 1.70%)</title><rect x="831.6" y="197" width="20.1" height="15.0" fill="rgb(208,208,43)" rx="2" ry="2" /> | |
<text x="834.65" y="207.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`clock_get_posix_time() (248 samples, 0.66%)</title><rect x="94.5" y="197" width="7.8" height="15.0" fill="rgb(224,51,0)" rx="2" ry="2" /> | |
<text x="97.48" y="207.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`__spin_unlock (34 samples, 0.09%)</title><rect x="626.2" y="117" width="1.1" height="15.0" fill="rgb(239,93,51)" rx="2" ry="2" /> | |
<text x="629.24" y="127.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`__spin_unlock (43 samples, 0.11%)</title><rect x="968.7" y="197" width="1.4" height="15.0" fill="rgb(214,229,26)" rx="2" ry="2" /> | |
<text x="971.74" y="207.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8122d900 (9 samples, 0.02%)</title><rect x="208.9" y="181" width="0.3" height="15.0" fill="rgb(207,67,35)" rx="2" ry="2" /> | |
<text x="211.87" y="191.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`mutex_optimistic_spin(mutex*) (13 samples, 0.03%)</title><rect x="573.2" y="133" width="0.4" height="15.0" fill="rgb(245,180,18)" rx="2" ry="2" /> | |
<text x="576.19" y="143.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8120c9a2 (7 samples, 0.02%)</title><rect x="107.1" y="181" width="0.2" height="15.0" fill="rgb(212,19,37)" rx="2" ry="2" /> | |
<text x="110.13" y="191.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`free_page(page*) (229 samples, 0.61%)</title><rect x="356.2" y="165" width="7.2" height="15.0" fill="rgb(238,47,5)" rx="2" ry="2" /> | |
<text x="359.23" y="175.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`mutex_unlock(mutex*) (17 samples, 0.05%)</title><rect x="373.6" y="149" width="0.5" height="15.0" fill="rgb(217,194,27)" rx="2" ry="2" /> | |
<text x="376.56" y="159.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`__can_sleep_internal() (59 samples, 0.16%)</title><rect x="753.3" y="165" width="1.9" height="15.0" fill="rgb(239,129,19)" rx="2" ry="2" /> | |
<text x="756.32" y="175.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8120ea69 (8 samples, 0.02%)</title><rect x="32.0" y="245" width="0.2" height="15.0" fill="rgb(228,177,53)" rx="2" ry="2" /> | |
<text x="34.98" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff8120c9c2 (3,046 samples, 8.10%)</title><rect x="109.0" y="181" width="95.6" height="15.0" fill="rgb(221,201,45)" rx="2" ry="2" /> | |
<text x="111.98" y="191.5" >vmonyx`0xff..</text> | |
</g> | |
<g > | |
<title>vmonyx`block_buf_from_page(page*) (14 samples, 0.04%)</title><rect x="288.6" y="165" width="0.5" height="15.0" fill="rgb(232,223,37)" rx="2" ry="2" /> | |
<text x="291.64" y="175.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`flush::flush_dev::run (422 samples, 1.12%)</title><rect x="1176.7" y="213" width="13.3" height="15.0" fill="rgb(231,9,1)" rx="2" ry="2" /> | |
<text x="1179.72" y="223.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`__can_sleep_internal() (25 samples, 0.07%)</title><rect x="434.8" y="117" width="0.8" height="15.0" fill="rgb(249,13,34)" rx="2" ry="2" /> | |
<text x="437.84" y="127.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`0xffffffff81213bf9 (350 samples, 0.93%)</title><rect x="272.5" y="133" width="11.0" height="15.0" fill="rgb(208,153,34)" rx="2" ry="2" /> | |
<text x="275.54" y="143.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`sched_idle(void*) (5,785 samples, 15.39%)</title><rect x="989.2" y="245" width="181.6" height="15.0" fill="rgb(254,91,23)" rx="2" ry="2" /> | |
<text x="992.21" y="255.5" >vmonyx`sched_idle(void*)</text> | |
</g> | |
<g > | |
<title>vmonyx`__spin_lock (10 samples, 0.03%)</title><rect x="85.0" y="213" width="0.3" height="15.0" fill="rgb(239,183,10)" rx="2" ry="2" /> | |
<text x="88.03" y="223.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`spin_lock_slow_path(spinlock*, unsigned int) (40 samples, 0.11%)</title><rect x="445.1" y="69" width="1.2" height="15.0" fill="rgb(245,120,46)" rx="2" ry="2" /> | |
<text x="448.08" y="79.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`sys_pwrite(int, void const*, unsigned long, long) (116 samples, 0.31%)</title><rect x="1173.1" y="245" width="3.6" height="15.0" fill="rgb(241,97,39)" rx="2" ry="2" /> | |
<text x="1176.08" y="255.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`__spin_lock (3,008 samples, 8.00%)</title><rect x="874.3" y="197" width="94.4" height="15.0" fill="rgb(231,97,52)" rx="2" ry="2" /> | |
<text x="877.31" y="207.5" >vmonyx`__sp..</text> | |
</g> | |
<g > | |
<title>vmonyx`rw_lock_write(rwlock*) (11 samples, 0.03%)</title><rect x="830.7" y="197" width="0.3" height="15.0" fill="rgb(221,119,39)" rx="2" ry="2" /> | |
<text x="833.68" y="207.5" ></text> | |
</g> | |
<g > | |
<title>vmonyx`ext2_writepage(page*, unsigned long, inode*) (417 samples, 1.11%)</title><rect x="1176.8" y="181" width="13.1" height="15.0" fill="rgb(240,173,24)" rx="2" ry="2" /> | |
<text x="1179.81" y="191.5" ></text> | |
</g> | |
</g> | |
</svg> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment