|
|
<?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="390" onload="init(evt)" viewBox="0 0 1200 390" 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="390.0" fill="url(#background)" /> <text id="title" x="600.00" y="24" >Flame Graph</text> <text id="details" x="10.00" y="373" > </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="373" > </text> <g id="frames"> <g > <title>[[kernel.kallsyms]] (164,773,295 samples, 0.02%)</title><rect x="291.2" y="117" width="0.3" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="294.21" y="127.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (6,264,017,816 samples, 0.83%)</title><rect x="295.9" y="133" width="9.8" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="298.93" y="143.5" ></text> </g> <g > <title>std::mersenne_twister_engine<unsigned long, 32ul, 624ul, 397ul, 31ul, 2567483615ul, 11ul, 4294967295ul, 7ul, 2636928640ul, 15ul, 4022730752ul, 18ul, 1812433253ul>::_M_gen_rand (1,700,492,276 samples, 0.22%)</title><rect x="316.7" y="197" width="2.7" height="15.0" fill="rgb(207,12,3)" rx="2" ry="2" /> <text x="319.74" y="207.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (182,533,535 samples, 0.02%)</title><rect x="291.2" y="229" width="0.3" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="294.19" y="239.5" ></text> </g> <g > <title>__GI___mmap64 (116,704,759 samples, 0.02%)</title><rect x="290.8" y="309" width="0.2" height="15.0" fill="rgb(221,77,18)" rx="2" ry="2" /> <text x="293.80" y="319.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (98,455,521 samples, 0.01%)</title><rect x="1189.8" y="261" width="0.1" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1192.79" y="271.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (114,352,088 samples, 0.02%)</title><rect x="291.0" y="229" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="294.01" y="239.5" ></text> </g> <g > <title>dml_wait_busy_poll (552,915,159,655 samples, 72.96%)</title><rect x="323.3" y="213" width="860.9" height="15.0" fill="rgb(252,218,52)" rx="2" ry="2" /> <text x="326.28" y="223.5" >dml_wait_busy_poll</text> </g> <g > <title>unsigned long std::uniform_int_distribution<unsigned long>::operator (8,803,762,515 samples, 1.16%)</title><rect x="305.7" y="261" width="13.7" height="15.0" fill="rgb(252,216,51)" rx="2" ry="2" /> <text x="308.68" y="271.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (114,699,631 samples, 0.02%)</title><rect x="291.0" y="261" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="294.01" y="271.5" ></text> </g> <g > <title>syscall (100,069,976 samples, 0.01%)</title><rect x="1189.8" y="309" width="0.1" height="15.0" fill="rgb(234,136,32)" rx="2" ry="2" /> <text x="1192.78" y="319.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (7,633,978,792 samples, 1.01%)</title><rect x="293.8" y="181" width="11.9" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="296.79" y="191.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (182,533,535 samples, 0.02%)</title><rect x="291.2" y="261" width="0.3" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="294.19" y="271.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (182,533,535 samples, 0.02%)</title><rect x="291.2" y="245" width="0.3" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="294.19" y="255.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (98,455,521 samples, 0.01%)</title><rect x="1189.8" y="277" width="0.1" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1192.79" y="287.5" ></text> </g> <g > <title>scan_a (3,561,308,091 samples, 0.47%)</title><rect x="1184.2" y="277" width="5.6" height="15.0" fill="rgb(253,223,53)" rx="2" ry="2" /> <text x="1187.23" y="287.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (91,913,626 samples, 0.01%)</title><rect x="1189.8" y="213" width="0.1" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1192.80" y="223.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (7,640,030,208 samples, 1.01%)</title><rect x="293.8" y="213" width="11.9" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="296.78" y="223.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (346,481,323 samples, 0.05%)</title><rect x="1189.2" y="197" width="0.6" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1192.23" y="207.5" ></text> </g> <g > <title>__libc_start_call_main (17,898,607,643 samples, 2.36%)</title><rect x="291.5" y="309" width="27.9" height="15.0" fill="rgb(210,26,6)" rx="2" ry="2" /> <text x="294.52" y="319.5" >_..</text> </g> <g > <title>[[kernel.kallsyms]] (69,787,492 samples, 0.01%)</title><rect x="290.9" y="181" width="0.1" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="293.88" y="191.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (86,066,528 samples, 0.01%)</title><rect x="291.1" y="181" width="0.1" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="294.05" y="191.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (166,112,140 samples, 0.02%)</title><rect x="1184.0" y="101" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1186.97" y="111.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (77,375,623 samples, 0.01%)</title><rect x="291.1" y="165" width="0.1" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="294.07" y="175.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (343,998,424 samples, 0.05%)</title><rect x="1189.2" y="165" width="0.6" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1192.24" y="175.5" ></text> </g> <g > <title>[libstdc++.so.6.0.32] (557,603,884,217 samples, 73.58%)</title><rect x="321.5" y="293" width="868.3" height="15.0" fill="rgb(222,81,19)" rx="2" ry="2" /> <text x="324.54" y="303.5" >[libstdc++.so.6.0.32]</text> </g> <g > <title>Sum<unsigned long>::simd_agg (362,439,246 samples, 0.05%)</title><rect x="321.7" y="245" width="0.6" height="15.0" fill="rgb(228,107,25)" rx="2" ry="2" /> <text x="324.74" y="255.5" ></text> </g> <g > <title>dml::handler<dml::mem_copy_operation, std::allocator<unsigned char> >::get (552,916,888,398 samples, 72.96%)</title><rect x="323.3" y="245" width="860.9" height="15.0" fill="rgb(237,150,35)" rx="2" ry="2" /> <text x="326.28" y="255.5" >dml::handler<dml::mem_copy_operation, std::allocator<unsigned char> >::get</text> </g> <g > <title>_mm512_stream_load_si512 (615,603,507 samples, 0.08%)</title><rect x="322.3" y="229" width="1.0" height="15.0" fill="rgb(216,52,12)" rx="2" ry="2" /> <text x="325.31" y="239.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (99,241,564 samples, 0.01%)</title><rect x="1184.1" y="37" width="0.1" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1187.07" y="47.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (116,704,759 samples, 0.02%)</title><rect x="290.8" y="277" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="293.80" y="287.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (191,939,483 samples, 0.03%)</title><rect x="1183.9" y="181" width="0.3" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1186.93" y="191.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (110,991,220 samples, 0.01%)</title><rect x="286.5" y="293" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="289.51" y="303.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (129,110,077 samples, 0.02%)</title><rect x="286.5" y="309" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="289.49" y="319.5" ></text> </g> <g > <title>start_thread (557,605,749,020 samples, 73.58%)</title><rect x="321.5" y="309" width="868.3" height="15.0" fill="rgb(212,34,8)" rx="2" ry="2" /> <text x="324.53" y="319.5" >start_thread</text> </g> <g > <title>__GI_mprotect (115,105,071 samples, 0.02%)</title><rect x="291.0" y="309" width="0.2" height="15.0" fill="rgb(220,71,17)" rx="2" ry="2" /> <text x="294.01" y="319.5" ></text> </g> <g > <title>aggr_j (554,037,578,817 samples, 73.11%)</title><rect x="321.5" y="277" width="862.7" height="15.0" fill="rgb(221,75,17)" rx="2" ry="2" /> <text x="324.54" y="287.5" >aggr_j</text> </g> <g > <title>[[kernel.kallsyms]] (347,561,693 samples, 0.05%)</title><rect x="1189.2" y="229" width="0.6" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1192.23" y="239.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (176,008,215 samples, 0.02%)</title><rect x="291.2" y="149" width="0.3" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="294.20" y="159.5" ></text> </g> <g > <title>dsacache::CacheData::WaitOnCompletion (552,916,888,398 samples, 72.96%)</title><rect x="323.3" y="229" width="860.9" height="15.0" fill="rgb(234,134,32)" rx="2" ry="2" /> <text x="326.28" y="239.5" >dsacache::CacheData::WaitOnCompletion</text> </g> <g > <title>[[kernel.kallsyms]] (114,699,631 samples, 0.02%)</title><rect x="291.0" y="277" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="294.01" y="287.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (7,543,227,017 samples, 1.00%)</title><rect x="293.9" y="149" width="11.8" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="296.93" y="159.5" ></text> </g> <g > <title>_mm512_mask_add_epi64 (362,439,246 samples, 0.05%)</title><rect x="321.7" y="229" width="0.6" height="15.0" fill="rgb(246,189,45)" rx="2" ry="2" /> <text x="324.74" y="239.5" ></text> </g> <g > <title>QDPBench (757,788,785,986 samples, 100.00%)</title><rect x="10.0" y="325" width="1180.0" height="15.0" fill="rgb(233,131,31)" rx="2" ry="2" /> <text x="13.00" y="335.5" >QDPBench</text> </g> <g > <title>unsigned long std::uniform_int_distribution<unsigned long>::operator (7,725,758,978 samples, 1.02%)</title><rect x="307.4" y="245" width="12.0" height="15.0" fill="rgb(252,216,51)" rx="2" ry="2" /> <text x="310.36" y="255.5" ></text> </g> <g > <title>unsigned long std::uniform_int_distribution<unsigned long>::operator (1,175,539,845 samples, 0.16%)</title><rect x="286.7" y="293" width="1.8" height="15.0" fill="rgb(252,216,51)" rx="2" ry="2" /> <text x="289.69" y="303.5" ></text> </g> <g > <title>unsigned int std::uniform_int_distribution<unsigned long>::_S_nd<unsigned long, std::mersenne_twister_engine<unsigned long, 32ul, 624ul, 397ul, 31ul, 2567483615ul, 11ul, 4294967295ul, 7ul, 2636928640ul, 15ul, 4022730752ul, 18ul, 1812433253ul>, unsigned int> (5,226,322,414 samples, 0.69%)</title><rect x="311.3" y="229" width="8.1" height="15.0" fill="rgb(237,147,35)" rx="2" ry="2" /> <text x="314.25" y="239.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (115,105,071 samples, 0.02%)</title><rect x="291.0" y="293" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="294.01" y="303.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (145,397,537 samples, 0.02%)</title><rect x="1184.0" y="69" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1187.00" y="79.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (253,156,329 samples, 0.03%)</title><rect x="1189.4" y="117" width="0.4" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1192.38" y="127.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (181,506,971 samples, 0.02%)</title><rect x="291.2" y="197" width="0.3" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="294.19" y="207.5" ></text> </g> <g > <title>dsacache::CacheData::WaitOnCompletion (552,919,479,804 samples, 72.96%)</title><rect x="323.3" y="261" width="860.9" height="15.0" fill="rgb(234,134,32)" rx="2" ry="2" /> <text x="326.28" y="271.5" >dsacache::CacheData::WaitOnCompletion</text> </g> <g > <title>[[kernel.kallsyms]] (348,415,844 samples, 0.05%)</title><rect x="1189.2" y="245" width="0.6" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1192.23" y="255.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (344,498,559 samples, 0.05%)</title><rect x="1189.2" y="181" width="0.6" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1192.24" y="191.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (188,486,660 samples, 0.02%)</title><rect x="1183.9" y="165" width="0.3" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1186.93" y="175.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (170,827,651 samples, 0.02%)</title><rect x="291.2" y="133" width="0.3" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="294.20" y="143.5" ></text> </g> <g > <title>unsigned long std::uniform_int_distribution<unsigned long>::operator (1,249,330,771 samples, 0.16%)</title><rect x="288.8" y="293" width="1.9" height="15.0" fill="rgb(252,216,51)" rx="2" ry="2" /> <text x="291.76" y="303.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (343,489,960 samples, 0.05%)</title><rect x="1189.2" y="149" width="0.6" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1192.24" y="159.5" ></text> </g> <g > <title>main (17,898,607,643 samples, 2.36%)</title><rect x="291.5" y="293" width="27.9" height="15.0" fill="rgb(243,179,42)" rx="2" ry="2" /> <text x="294.52" y="303.5" >m..</text> </g> <g > <title>[[kernel.kallsyms]] (7,632,251,240 samples, 1.01%)</title><rect x="293.8" y="165" width="11.9" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="296.80" y="175.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (180,634,037 samples, 0.02%)</title><rect x="291.2" y="181" width="0.3" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="294.19" y="191.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (71,765,486 samples, 0.01%)</title><rect x="1189.8" y="197" width="0.1" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1192.83" y="207.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (230,646,684 samples, 0.03%)</title><rect x="1189.4" y="85" width="0.4" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1192.41" y="95.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (97,231,694 samples, 0.01%)</title><rect x="1189.8" y="229" width="0.1" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1192.79" y="239.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (7,642,626,030 samples, 1.01%)</title><rect x="293.8" y="261" width="11.9" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="296.78" y="271.5" ></text> </g> <g > <title>all (757,816,916,904 samples, 100%)</title><rect x="10.0" y="341" width="1180.0" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="13.00" y="351.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (115,836,601 samples, 0.02%)</title><rect x="290.8" y="261" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="293.80" y="271.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (114,158,567 samples, 0.02%)</title><rect x="290.8" y="213" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="293.81" y="223.5" ></text> </g> <g > <title>Filter<unsigned long, LT, (3,559,948,229 samples, 0.47%)</title><rect x="1184.2" y="261" width="5.6" height="15.0" fill="rgb(234,136,32)" rx="2" ry="2" /> <text x="1187.23" y="271.5" ></text> </g> <g > <title>[[stack]] (1,180,363,823 samples, 0.16%)</title><rect x="286.7" y="309" width="1.8" height="15.0" fill="rgb(236,145,34)" rx="2" ry="2" /> <text x="289.69" y="319.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (185,073,337 samples, 0.02%)</title><rect x="1183.9" y="149" width="0.3" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1186.94" y="159.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (5,223,135,053 samples, 0.69%)</title><rect x="297.5" y="101" width="8.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="300.55" y="111.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (346,513,089 samples, 0.05%)</title><rect x="1189.2" y="213" width="0.6" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1192.23" y="223.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (163,513,075 samples, 0.02%)</title><rect x="1184.0" y="85" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1186.97" y="95.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (114,537,443 samples, 0.02%)</title><rect x="290.8" y="229" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="293.81" y="239.5" ></text> </g> <g > <title>Vector_Loader<unsigned long, (3,012,574,731 samples, 0.40%)</title><rect x="1184.5" y="245" width="4.7" height="15.0" fill="rgb(242,170,40)" rx="2" ry="2" /> <text x="1187.54" y="255.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (104,729,407 samples, 0.01%)</title><rect x="290.8" y="197" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="293.82" y="207.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (98,831,700 samples, 0.01%)</title><rect x="1189.8" y="293" width="0.1" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1192.79" y="303.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (6,258,830,703 samples, 0.83%)</title><rect x="295.9" y="117" width="9.8" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="298.93" y="127.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (114,699,631 samples, 0.02%)</title><rect x="291.0" y="245" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="294.01" y="255.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (124,808,299 samples, 0.02%)</title><rect x="1184.0" y="53" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1187.03" y="63.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (108,026,851 samples, 0.01%)</title><rect x="286.5" y="261" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="289.52" y="271.5" ></text> </g> <g > <title>unsigned int std::uniform_int_distribution<unsigned long>::_S_nd<unsigned long, std::mersenne_twister_engine<unsigned long, 32ul, 624ul, 397ul, 31ul, 2567483615ul, 11ul, 4294967295ul, 7ul, 2636928640ul, 15ul, 4022730752ul, 18ul, 1812433253ul>, unsigned int> (949,996,590 samples, 0.13%)</title><rect x="287.0" y="277" width="1.5" height="15.0" fill="rgb(237,147,35)" rx="2" ry="2" /> <text x="290.05" y="287.5" ></text> </g> <g > <title>main (1,309,211,173 samples, 0.17%)</title><rect x="319.5" y="309" width="2.0" height="15.0" fill="rgb(243,179,42)" rx="2" ry="2" /> <text x="322.49" y="319.5" ></text> </g> <g > <title>void fill_mt<unsigned long> (17,898,607,643 samples, 2.36%)</title><rect x="291.5" y="277" width="27.9" height="15.0" fill="rgb(206,5,1)" rx="2" ry="2" /> <text x="294.52" y="287.5" >v..</text> </g> <g > <title>[[kernel.kallsyms]] (179,769,803 samples, 0.02%)</title><rect x="291.2" y="165" width="0.3" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="294.19" y="175.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (111,528,792 samples, 0.01%)</title><rect x="291.0" y="213" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="294.01" y="223.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (100,647,350 samples, 0.01%)</title><rect x="286.5" y="229" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="289.53" y="239.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (250,139,930 samples, 0.03%)</title><rect x="1189.4" y="101" width="0.4" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1192.38" y="111.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (7,638,302,454 samples, 1.01%)</title><rect x="293.8" y="197" width="11.9" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="296.79" y="207.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (97,990,880 samples, 0.01%)</title><rect x="1189.8" y="245" width="0.1" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1192.79" y="255.5" ></text> </g> <g > <title>Aggregation<unsigned long, Sum, (1,111,031,257 samples, 0.15%)</title><rect x="321.5" y="261" width="1.8" height="15.0" fill="rgb(251,215,51)" rx="2" ry="2" /> <text x="324.54" y="271.5" ></text> </g> <g > <title>sum_check (1,295,796,749 samples, 0.17%)</title><rect x="319.5" y="293" width="2.0" height="15.0" fill="rgb(252,218,52)" rx="2" ry="2" /> <text x="322.50" y="303.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (7,640,895,829 samples, 1.01%)</title><rect x="293.8" y="229" width="11.9" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="296.78" y="239.5" ></text> </g> <g > <title>__GI___mmap64 (116,704,759 samples, 0.02%)</title><rect x="290.8" y="293" width="0.2" height="15.0" fill="rgb(221,77,18)" rx="2" ry="2" /> <text x="293.80" y="303.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (339,109,648 samples, 0.04%)</title><rect x="1189.2" y="133" width="0.6" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1192.25" y="143.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (70,085,427 samples, 0.01%)</title><rect x="291.1" y="149" width="0.1" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="294.08" y="159.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (192,731,474 samples, 0.03%)</title><rect x="1183.9" y="197" width="0.3" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1186.92" y="207.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (88,390,565 samples, 0.01%)</title><rect x="286.5" y="181" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="289.55" y="191.5" ></text> </g> <g > <title>__GI_munmap (182,533,535 samples, 0.02%)</title><rect x="291.2" y="309" width="0.3" height="15.0" fill="rgb(217,57,13)" rx="2" ry="2" /> <text x="294.19" y="319.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (176,361,920 samples, 0.02%)</title><rect x="1184.0" y="117" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1186.95" y="127.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (182,533,535 samples, 0.02%)</title><rect x="291.2" y="277" width="0.3" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="294.19" y="287.5" ></text> </g> <g > <title>Vector_Loader<unsigned long, (615,603,507 samples, 0.08%)</title><rect x="322.3" y="245" width="1.0" height="15.0" fill="rgb(242,170,40)" rx="2" ry="2" /> <text x="325.31" y="255.5" ></text> </g> <g > <title>std::mersenne_twister_engine<unsigned long, 32ul, 624ul, 397ul, 31ul, 2567483615ul, 11ul, 4294967295ul, 7ul, 2636928640ul, 15ul, 4022730752ul, 18ul, 1812433253ul>::operator (4,108,353,659 samples, 0.54%)</title><rect x="313.0" y="213" width="6.4" height="15.0" fill="rgb(235,139,33)" rx="2" ry="2" /> <text x="315.99" y="223.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (97,991,797 samples, 0.01%)</title><rect x="286.5" y="213" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="289.53" y="223.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (71,178,655 samples, 0.01%)</title><rect x="286.6" y="165" width="0.1" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="289.58" y="175.5" ></text> </g> <g > <title>_mm512_stream_load_si512 (3,012,574,731 samples, 0.40%)</title><rect x="1184.5" y="229" width="4.7" height="15.0" fill="rgb(216,52,12)" rx="2" ry="2" /> <text x="1187.54" y="239.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (181,571,536 samples, 0.02%)</title><rect x="1183.9" y="133" width="0.3" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="1186.94" y="143.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (105,272,333 samples, 0.01%)</title><rect x="286.5" y="245" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="289.52" y="255.5" ></text> </g> <g > <title>[unknown] (1,358,752,193 samples, 0.18%)</title><rect x="288.6" y="309" width="2.1" height="15.0" fill="rgb(210,24,5)" rx="2" ry="2" /> <text x="291.59" y="319.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (115,401,998 samples, 0.02%)</title><rect x="290.8" y="245" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="293.80" y="255.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (110,122,437 samples, 0.01%)</title><rect x="286.5" y="277" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="289.52" y="287.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (182,533,535 samples, 0.02%)</title><rect x="291.2" y="213" width="0.3" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="294.19" y="223.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (182,533,535 samples, 0.02%)</title><rect x="291.2" y="293" width="0.3" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="294.19" y="303.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (105,922,725 samples, 0.01%)</title><rect x="291.0" y="197" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="294.02" y="207.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (92,658,484 samples, 0.01%)</title><rect x="286.5" y="197" width="0.2" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="289.54" y="207.5" ></text> </g> <g > <title>[[kernel.kallsyms]] (7,642,626,030 samples, 1.01%)</title><rect x="293.8" y="245" width="11.9" height="15.0" fill="rgb(213,39,9)" rx="2" ry="2" /> <text x="296.78" y="255.5" ></text> </g> </g> </svg>
|