From ae40d58b9347479be7cdd8679f5837d8c50edfd9 Mon Sep 17 00:00:00 2001 From: Jacob Lorentzon <4ldo2@protonmail.com> Date: Sat, 30 Mar 2024 18:08:10 +0000 Subject: [PATCH] New kernel blog post --- content/news/kernel-10.md | 210 ++++++++ static/img/flamegraphs/boot-after.svg | 491 ++++++++++++++++++ .../flamegraphs/boot-and-netsurf-before.svg | 491 ++++++++++++++++++ static/img/flamegraphs/boot-before.svg | 491 ++++++++++++++++++ 4 files changed, 1683 insertions(+) create mode 100644 content/news/kernel-10.md create mode 100644 static/img/flamegraphs/boot-after.svg create mode 100644 static/img/flamegraphs/boot-and-netsurf-before.svg create mode 100644 static/img/flamegraphs/boot-before.svg diff --git a/content/news/kernel-10.md b/content/news/kernel-10.md new file mode 100644 index 00000000..ab2e4429 --- /dev/null +++ b/content/news/kernel-10.md @@ -0,0 +1,210 @@ ++++ +title = "Significant performance and correctness improvements to the kernel" +author = "Jacob Lorentzon (4lDO2)" +date = "2024-03-29T17:00:00+01:00" ++++ + +# Introduction + +Ever since my demand paging RSoC project was completed last summer, there have +been numerous additional incremental improvements to the kernel, including +fixes, simplifications, and some significant optimizations. The changes can be +divided into the "correctness" and "performance" categories, even though there +is a relatively large overlap. + +# Correctness + +## Physalloc replacement and complete frame bookkeeping + +Although the demand paging MR did formalize the different types of grants, +which previously merely indicated _where_ user memory areas were, and frames +got proper bookkeeping such as the refcount, that __was very much not the case +for physallocated frames.__ Requiring root, they were simply treated as "borrowed +physical memory" (`PhysBorrowed`), which is intended to be used by drivers to +map device memory or other pages, not controlled by the frame allocator. As a +result, some checks had to be worked around, and __driver bugs could cause kernel +memory corruption__. + +This was fixed in the [phys_contiguous mmap +MR](https://gitlab.redox-os.org/redox-os/kernel/-/merge_requests/265), which +replaces the physalloc syscalls with a special memory scheme file, +`/scheme/memory/phys_contiguous?<memory type>`, instead used together with +regular mmap. As a result, deallocation is fully automatic, and most +importantly, the kernel will now __deny any attempt to map allocator-owned +memory as "physically borrowed"__! This should protect against e.g. faulty ACPI +AML code, but if this rule turns out to be too restrictive, it only requires +one line of code to disable. + +## TLB shootdown + +Virtually all CPUs supporting virtual memory, have a Translation Lookaside +Buffer to cache commonly used mappings. This makes page unmaps in multithreaded +programs more complex, as they need to ensure the TLB is up-to-date in all +other threads before they can free the frames, a mechanism called _TLB +shootdown_. That involves interrupting the other CPUs to get them to flush +their TLBs, in a synchronized way. The signals MR described below +initially did not work due to double frees elsewhere, caused by the lack of TLB +shootdown. This has now been fixed. + +## Improved signal handling + +The previous signal code was problematic, in that it simply implemented +userspace-like signals except also in the kernel, by copying and restoring the +kernel stacks. This meant that a Ctrl-C interrupt could cause a thread to +`exit()` before running destructors, for example resulting in a bug [where +Orbital windows were not properly +closed](https://gitlab.redox-os.org/redox-os/kernel/-/issues/117). + +This was fixed in the [signals +MR](https://gitlab.redox-os.org/redox-os/kernel/-/merge_requests/283). Some +schemes need to implement scheme call cancellation, however, before interrupted +syscalls can fully work. + +## Misc + +Additionally, bjorn3 has fixed a lot of UB and other bugs in the kernel, +including the part that bootstraps into userspace, as well as deduplicate most +i686 and x86_64 code. The userspace-bootstrap change makes it easier to add +support for other bootloaders, such as GRUB, by integrating the bootstrap +executable (which is responsible for setting up a stack, opening standard file +descriptors, and creating the environment necessary to start the relibc +userspace, and execute init) into the initfs image. + +An important fix as part of that, is that the initfs image including bootstrap, +is no longer mapped to address 0x0. This proves once again how important it is +not to create any Rust reference to NULL, which in this case confused bootstrap +thinking a `Some(&initfs_memory)` was `None`, as the slice pointed to NULL! + +# Performance + +## Kernel profiling + +Normally when optimizing userspace applications, profiling can be done easily +using e.g. `perf record` or an integrated tool such as `cargo flamegraph`. When +profiling a kernel however, the sampling part needs to be implemented from +scratch. The current implementation uses non-maskable interrupt IPIs to +interrupt other CPUs at scheduled intervals, which is necessary since +interrupts are disabled almost everywhere in kernel mode. The NMI handler +tracks whether the CPU was interrupted in user or kernel mode, and in the +latter case, performs a stack trace and sends it to a ring buffer, which a new +daemon `profiled` reads from, and extracts into a `perf`-compatible text +format. + +Profiling userspace is yet to be implemented, possibly both as combined +userspace and kernel profiling, or just userspace. + +With profiling enabled, this allows producing awesome +[flamegraphs](https://brendangregg.com/flamegraphs.html), using +[inferno](https://github.com/jonhoo/inferno)! At the time profiling was +implemented, __the following is what it looked like when booting and starting +NetSurf:__ + +[](/img/flamegraphs/boot-and-netsurf-before.svg) + +(Click on the flamegraphs to open them interactively.) + +As the flamegraph suggests, a very significant part of the time spent in the +kernel, is spent allocating frames, in `rmm::BuddyAllocator`. In fact, in +some cases a massive performance boost from [demand paging](/news/kernel-9) may +have been strengthened in part because frame allocation was simply very slow. +But even with demand paging, __it accounted for roughly 35% of total boot +time__ (in the kernel, after the arch-specific initialization): + +[](/img/flamegraphs/boot-before.svg) + +## New p2buddy frame allocator + +The obvious optimization target, apart from context switching (which at the +time was blocked by the problematic signal handling code), was therefore the +frame allocator. + +Originally, pre-2020, the Redox kernel used a recycling allocator on top of a +bump allocator, which essentially stored an array (a `Vec`) of `(base, frame +count)` that could be merged or split. In 2020, the Redox Memory Manager (RMM) +[was +introduced](https://gitlab.redox-os.org/redox-os/kernel/-/merge_requests/155#5c18a8ea7df607b2fa2c8d143a8eced7e7449795), +which provided a more optimized _buddy allocator_. + +However, __both the recycling allocator and RMM's buddy allocator, were _O(n)___, +w.r.t. the __total number of allocatable frames__. The recycling allocator had +to iterate through an array that could theoretically grow to half of the +allocatable frames (maximum fragmentation), whereas the RMM buddy allocator had +to iterate through _usage arrays_ to find a sufficient number of contiguous +frames, without an optimized way to allocate in larger units. Since the +majority of frame allocations were only single-frame, as they had to be +allocatable and deallocatable independently, even the RMM buddy allocator +turned out to be relatively slow. + +Although the RMM buddy allocator could probably have been optimized further, it +would be advantegous to reuse the already existing `PageInfo`s, which store the +refcount of userspace-owned pages to implement both CoW `MAP_PRIVATE` and +`MAP_SHARED` mmaps. That space is __not used when the frame is free, so why not +use it as the frame allocator data structure__? + +The power-of-two buddy (p2buddy) allocator, uses the two words in each +`PageInfo` to implement a doubly-linked list per _order_, i.e. the +log<sub>2</sub> of the number of frames for an allocation, and stores that +order in the unused pointer bits. One bit is used to distinguish between used +and free frames, and must not be overwritten except by the allocator. The list +heads are stored as a global array. This p2buddy allocator is similar to buddy +allocators found in other kernels, such as Linux and FreeBSD. + +The allocator now only supports power-of-two allocation sizes, called +_p2frames_, where the orders can currently range from 0 to 10, inclusive. It +looks for the smallest possible p2frame large enough for the allocation, and +possibly splits it into smaller p2frames. Freeing frames makes it look for free +neighboring p2frames, merging them into a higher-order p2frame if possible. +This algorithm is guaranteed to take _O(k)_ steps, w.r.t. the (constant) number +of orders _k_. Thus, __the new allocator is _O(1)_ w.r.t. the total number +total frames available__. + +The new flamegraph when simply booting, is now instead: + +[](/img/flamegraphs/boot-after.svg) + +The time spent inside the frame allocator, has almost disappeared entirely, and +comprises only the 0.9% slice in the bottom-left corner. Additionally, NetSurf +now starts significantly faster, and the boot time has also been reduced. For +Jeremy, the boot time was reduced from 4s to 3s! + +Of course, memory allocation overhead can still be significant for other +workloads, and there are lots of future optimizations to be made. + +## Syscall optimization + +With the signal MR having flattened the kernel stacks, the syscall prologue and +epilogue code that kept track of where the userspace registers were, could be +removed. Most of the ptrace and debug logic was moved to the context switch +code, and some other improvements were made. On a CPU where the hardware +`syscall`+`sysret` latency is 56 cycles, the latency changed (roughly) as +follows, from these optimizations: + +- August 2023, initial: 344 cycles (-0%, cumulative) +- After signal MR: 236 cycles (-31%) +- Caching ptrace breakpoint state: 184 cycles (-47%) +- Using saved regs directly for syscall debugging: 116 cycles (-66%) + +Thus, the majority of the syscall latency on Redox __is now almost spent in the +syscall/sysret microcode itself__. It can probably be optimized further, even +though performance may be reduced slightly once Spectre mitigations are +properly implemented. Worth noting that this is the _base syscall latency_, +i.e. the time it takes to do an invalid syscall that returns `ENOSYS`, and not +the time spent in the various syscalls themselves. That said, most simple +syscalls, such as `sigprocmask`, do not take more than a few hundred cycles to +run. + +# Conclusion + +This year, there have been numerous improvements both to the kernel's +correctness, as well as raw performance. The signal and TLB shootdown MRs have +significantly improved kernel memory integrity and possibly eliminated many +hard-to-debug and nontrivial [heisenbugs](https://en.wikipedia.org/wiki/Heisenbug). Nevertheless, there is still a lot of +work to be done optimizing and fixing bugs in relibc, in order to improve +compatibility with ported applications, and most importantly of all, getting +closer to a self-hosted Redox. + +<style> +img[alt="Profiling SVG for boot and starting NetSurf"] { width: 100% } +img[alt="Profiling SVG for boot"] { width: 100% } +img[alt="Profiling SVG for boot, p2buddy"] { width: 100% } +</style> diff --git a/static/img/flamegraphs/boot-after.svg b/static/img/flamegraphs/boot-after.svg new file mode 100644 index 00000000..91e175d5 --- /dev/null +++ b/static/img/flamegraphs/boot-after.svg @@ -0,0 +1,491 @@ +<?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="278" onload="init(evt)" viewBox="0 0 1200 278" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:fg="http://github.com/jonhoo/inferno"><!--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:monospace; font-size:12px } +#title { text-anchor:middle; font-size:17px; } +#matched { text-anchor:end; } +#search { text-anchor:end; opacity:0.1; cursor:pointer; } +#search:hover, #search.show { opacity:1; } +#subtitle { text-anchor:middle; font-color:rgb(160,160,160); } +#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[ + var nametype = 'Function:'; + var fontsize = 12; + var fontwidth = 0.59; + var xpad = 10; + var inverted = false; + var searchcolor = 'rgb(230,0,230)'; + var fluiddrawing = true; + var truncate_text_right = false; + ]]><![CDATA["use strict"; +var details, searchbtn, unzoombtn, matchedtxt, svg, searching, frames, known_font_width; +function init(evt) { + details = document.getElementById("details").firstChild; + searchbtn = document.getElementById("search"); + unzoombtn = document.getElementById("unzoom"); + matchedtxt = document.getElementById("matched"); + svg = document.getElementsByTagName("svg")[0]; + frames = document.getElementById("frames"); + known_font_width = get_monospace_width(frames); + total_samples = parseInt(frames.attributes.total_samples.value); + searching = 0; + + // Use GET parameters to restore a flamegraph's state. + var restore_state = function() { + 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); + }; + + if (fluiddrawing) { + // Make width dynamic so the SVG fits its parent's width. + svg.removeAttribute("width"); + // Edge requires us to have a viewBox that gets updated with size changes. + var isEdge = /Edge\/\d./i.test(navigator.userAgent); + if (!isEdge) { + svg.removeAttribute("viewBox"); + } + var update_for_width_change = function() { + if (isEdge) { + svg.attributes.viewBox.value = "0 0 " + svg.width.baseVal.value + " " + svg.height.baseVal.value; + } + + // Keep consistent padding on left and right of frames container. + frames.attributes.width.value = svg.width.baseVal.value - xpad * 2; + + // Text truncation needs to be adjusted for the current width. + update_text_for_elements(frames.children); + + // Keep search elements at a fixed distance from right edge. + var svgWidth = svg.width.baseVal.value; + searchbtn.attributes.x.value = svgWidth - xpad; + matchedtxt.attributes.x.value = svgWidth - xpad; + }; + window.addEventListener('resize', function() { + update_for_width_change(); + }); + // This needs to be done asynchronously for Safari to work. + setTimeout(function() { + unzoom(); + update_for_width_change(); + restore_state(); + }, 0); + } else { + restore_state(); + } +} +// 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(); + zoom(target); + + // set parameters for zoom state + var el = target.querySelector("rect"); + if (el && el.attributes && el.attributes.y && el.attributes["fg:x"]) { + var params = get_params() + params.x = el.attributes["fg:x"].value; + params.y = el.attributes.y.value; + history.replaceState(null, null, parse_params(params)); + } + } + else if (e.target.id == "unzoom") { + 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)); + } + else if (e.target.id == "search") search_prompt(); +}, false) +// mouse-over for info +// show +window.addEventListener("mouseover", function(e) { + var target = find_group(e.target); + if (target) details.nodeValue = nametype + " " + 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 +window.addEventListener("keydown",function (e) { + if (e.keyCode === 114 || (e.ctrlKey && e.keyCode === 70)) { + e.preventDefault(); + search_prompt(); + } +}, 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]; + return; +} +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["fg:orig_" + attr] != undefined) return; + if (e.attributes[attr] == undefined) return; + if (val == undefined) val = e.attributes[attr].value; + e.setAttribute("fg:orig_" + attr, val); +} +function orig_load(e, attr) { + if (e.attributes["fg:orig_"+attr] == undefined) return; + e.attributes[attr].value = e.attributes["fg:orig_" + attr].value; + e.removeAttribute("fg: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 get_monospace_width(frames) { + // Given the id="frames" element, return the width of text characters if + // this is a monospace font, otherwise return 0. + text = find_child(frames.children[0], "text"); + originalContent = text.textContent; + text.textContent = "!"; + bangWidth = text.getComputedTextLength(); + text.textContent = "W"; + wWidth = text.getComputedTextLength(); + text.textContent = originalContent; + if (bangWidth === wWidth) { + return bangWidth; + } else { + return 0; + } +} +function update_text_for_elements(elements) { + // In order to render quickly in the browser, you want to do one pass of + // reading attributes, and one pass of mutating attributes. See + // https://web.dev/avoid-large-complex-layouts-and-layout-thrashing/ for details. + + // Fall back to inefficient calculation, if we're variable-width font. + // TODO This should be optimized somehow too. + if (known_font_width === 0) { + for (var i = 0; i < elements.length; i++) { + update_text(elements[i]); + } + return; + } + + var textElemNewAttributes = []; + for (var i = 0; i < elements.length; i++) { + var e = elements[i]; + var r = find_child(e, "rect"); + var t = find_child(e, "text"); + var w = parseFloat(r.attributes.width.value) * frames.attributes.width.value / 100 - 3; + var txt = find_child(e, "title").textContent.replace(/\([^(]*\)$/,""); + var newX = format_percent((parseFloat(r.attributes.x.value) + (100 * 3 / frames.attributes.width.value))); + + // Smaller than this size won't fit anything + if (w < 2 * known_font_width) { + textElemNewAttributes.push([newX, ""]); + continue; + } + + // Fit in full text width + if (txt.length * known_font_width < w) { + textElemNewAttributes.push([newX, txt]); + continue; + } + + var substringLength = Math.floor(w / known_font_width) - 2; + if (truncate_text_right) { + // Truncate the right side of the text. + textElemNewAttributes.push([newX, txt.substring(0, substringLength) + ".."]); + continue; + } else { + // Truncate the left side of the text. + textElemNewAttributes.push([newX, ".." + txt.substring(txt.length - substringLength, txt.length)]); + continue; + } + } + + console.assert(textElemNewAttributes.length === elements.length, "Resize failed, please file a bug at https://github.com/jonhoo/inferno/"); + + // Now that we know new textContent, set it all in one go so we don't refresh a bazillion times. + for (var i = 0; i < elements.length; i++) { + var e = elements[i]; + var values = textElemNewAttributes[i]; + var t = find_child(e, "text"); + t.attributes.x.value = values[0]; + t.textContent = values[1]; + } +} + +function update_text(e) { + var r = find_child(e, "rect"); + var t = find_child(e, "text"); + var w = parseFloat(r.attributes.width.value) * frames.attributes.width.value / 100 - 3; + var txt = find_child(e, "title").textContent.replace(/\([^(]*\)$/,""); + t.attributes.x.value = format_percent((parseFloat(r.attributes.x.value) + (100 * 3 / frames.attributes.width.value))); + + // Smaller than this size won't fit anything + if (w < 2 * fontsize * fontwidth) { + t.textContent = ""; + return; + } + t.textContent = txt; + // Fit in full text width + if (t.getComputedTextLength() < w) + return; + if (truncate_text_right) { + // Truncate the right side of the text. + for (var x = txt.length - 2; x > 0; x--) { + if (t.getSubStringLength(0, x + 2) <= w) { + t.textContent = txt.substring(0, x) + ".."; + return; + } + } + } else { + // Truncate the left side of the text. + for (var x = 2; x < txt.length; x++) { + if (t.getSubStringLength(x - 2, txt.length) <= w) { + t.textContent = ".." + txt.substring(x, txt.length); + return; + } + } + } + t.textContent = ""; +} +// zoom +function zoom_reset(e) { + if (e.tagName == "rect") { + e.attributes.x.value = format_percent(100 * parseInt(e.attributes["fg:x"].value) / total_samples); + e.attributes.width.value = format_percent(100 * parseInt(e.attributes["fg:w"].value) / total_samples); + } + 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, zoomed_width_samples) { + if (e.tagName == "text") { + var parent_x = parseFloat(find_child(e.parentNode, "rect[x]").attributes.x.value); + e.attributes.x.value = format_percent(parent_x + (100 * 3 / frames.attributes.width.value)); + } else if (e.tagName == "rect") { + e.attributes.x.value = format_percent(100 * (parseInt(e.attributes["fg:x"].value) - x) / zoomed_width_samples); + e.attributes.width.value = format_percent(100 * parseInt(e.attributes["fg:w"].value) / zoomed_width_samples); + } + if (e.childNodes == undefined) return; + for(var i = 0, c = e.childNodes; i < c.length; i++) { + zoom_child(c[i], x, zoomed_width_samples); + } +} +function zoom_parent(e) { + if (e.attributes) { + if (e.attributes.x != undefined) { + e.attributes.x.value = "0.0%"; + } + if (e.attributes.width != undefined) { + e.attributes.width.value = "100.0%"; + } + } + 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 = parseInt(attr["fg:w"].value); + var xmin = parseInt(attr["fg:x"].value); + var xmax = xmin + width; + var ymin = parseFloat(attr.y.value); + unzoombtn.classList.remove("hide"); + var el = frames.children; + var to_update_text = []; + for (var i = 0; i < el.length; i++) { + var e = el[i]; + var a = find_child(e, "rect").attributes; + var ex = parseInt(a["fg:x"].value); + var ew = parseInt(a["fg:w"].value); + // Is it an ancestor + if (!inverted) { + var upstack = parseFloat(a.y.value) > ymin; + } else { + var upstack = parseFloat(a.y.value) < ymin; + } + if (upstack) { + // Direct ancestor + if (ex <= xmin && (ex+ew) >= xmax) { + e.classList.add("parent"); + zoom_parent(e); + to_update_text.push(e); + } + // not in current path + else + e.classList.add("hide"); + } + // Children maybe + else { + // no common path + if (ex < xmin || ex >= xmax) { + e.classList.add("hide"); + } + else { + zoom_child(e, xmin, width); + to_update_text.push(e); + } + } + } + update_text_for_elements(to_update_text); +} +function unzoom() { + unzoombtn.classList.add("hide"); + var el = frames.children; + for(var i = 0; i < el.length; i++) { + el[i].classList.remove("parent"); + el[i].classList.remove("hide"); + zoom_reset(el[i]); + } + update_text_for_elements(el); +} +// 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_)", ""); + if (term != null) { + search(term) + } + } else { + reset_search(); + searching = 0; + searchbtn.classList.remove("show"); + searchbtn.firstChild.nodeValue = "Search" + matchedtxt.classList.add("hide"); + matchedtxt.firstChild.nodeValue = "" + } +} +function search(term) { + var re = new RegExp(term); + var el = frames.children; + var matches = new Object(); + var maxwidth = 0; + for (var i = 0; i < el.length; i++) { + var e = el[i]; + // Skip over frames which are either not visible, or below the zoomed-to frame + if (e.classList.contains("hide") || e.classList.contains("parent")) { + continue; + } + 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 = parseInt(rect.attributes["fg:w"].value); + if (w > maxwidth) + maxwidth = w; + if (func.match(re)) { + // highlight + var x = parseInt(rect.attributes["fg:x"].value); + orig_save(rect, "fill"); + rect.attributes.fill.value = searchcolor; + // 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 = term; + 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. + for (var k in keys) { + var x = parseInt(keys[k]); + var w = matches[keys[k]]; + if (x >= lastx + lastw) { + 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 + "%"; +} +function format_percent(n) { + return n.toFixed(4) + "%"; +} +]]></script><rect x="0" y="0" width="100%" height="278" fill="url(#background)"/><text id="title" fill="rgb(0,0,0)" x="50.0000%" y="24.00">Flame Graph</text><text id="details" fill="rgb(0,0,0)" x="10" y="261.00"> </text><text id="unzoom" class="hide" fill="rgb(0,0,0)" x="10" y="24.00">Reset Zoom</text><text id="search" fill="rgb(0,0,0)" x="1190" y="24.00">Search</text><text id="matched" fill="rgb(0,0,0)" x="1190" y="261.00"> </text><svg id="frames" x="10" width="1180" total_samples="6316"><g><title>[<alloc::collections::btree::map::Range<K,V> as core::iter::traits::iterator::Iterator>::next] (3 samples, 0.05%)</title><rect x="0.0000%" y="197" width="0.0475%" height="15" fill="rgb(227,0,7)" fg:x="0" fg:w="3"/><text x="0.2500%" y="207.50"></text></g><g><title>[__udivti3] (1 samples, 0.02%)</title><rect x="0.0475%" y="197" width="0.0158%" height="15" fill="rgb(217,0,24)" fg:x="3" fg:w="1"/><text x="0.2975%" y="207.50"></text></g><g><title>[alloc::collections::btree::map::BTreeMap<K,V,A>::range] (6 samples, 0.09%)</title><rect x="0.0633%" y="197" width="0.0950%" height="15" fill="rgb(221,193,54)" fg:x="4" fg:w="6"/><text x="0.3133%" y="207.50"></text></g><g><title>[kernel::context::memory::Flusher::flush] (1 samples, 0.02%)</title><rect x="0.3642%" y="165" width="0.0158%" height="15" fill="rgb(248,212,6)" fg:x="23" fg:w="1"/><text x="0.6142%" y="175.50"></text></g><g><title>[kernel::context::memory::Flusher::flush] (10 samples, 0.16%)</title><rect x="0.3958%" y="149" width="0.1583%" height="15" fill="rgb(208,68,35)" fg:x="25" fg:w="10"/><text x="0.6458%" y="159.50"></text></g><g><title>[memcpy] (4 samples, 0.06%)</title><rect x="0.4908%" y="133" width="0.0633%" height="15" fill="rgb(232,128,0)" fg:x="31" fg:w="4"/><text x="0.7408%" y="143.50"></text></g><g><title>[kernel::context::memory::Flusher::flush] (2 samples, 0.03%)</title><rect x="0.5541%" y="133" width="0.0317%" height="15" fill="rgb(207,160,47)" fg:x="35" fg:w="2"/><text x="0.8041%" y="143.50"></text></g><g><title>[memcpy] (1 samples, 0.02%)</title><rect x="0.5700%" y="117" width="0.0158%" height="15" fill="rgb(228,23,34)" fg:x="36" fg:w="1"/><text x="0.8200%" y="127.50"></text></g><g><title>[kernel::context::memory::correct_inner] (9 samples, 0.14%)</title><rect x="0.5541%" y="149" width="0.1425%" height="15" fill="rgb(218,30,26)" fg:x="35" fg:w="9"/><text x="0.8041%" y="159.50"></text></g><g><title>[kernel::context::memory::correct_inner] (7 samples, 0.11%)</title><rect x="0.5858%" y="133" width="0.1108%" height="15" fill="rgb(220,122,19)" fg:x="37" fg:w="7"/><text x="0.8358%" y="143.50"></text></g><g><title>[kernel::memory::init_frame] (6 samples, 0.09%)</title><rect x="0.6016%" y="117" width="0.0950%" height="15" fill="rgb(250,228,42)" fg:x="38" fg:w="6"/><text x="0.8516%" y="127.50"></text></g><g><title>[kernel::memory::allocate_frames] (6 samples, 0.09%)</title><rect x="0.6016%" y="101" width="0.0950%" height="15" fill="rgb(240,193,28)" fg:x="38" fg:w="6"/><text x="0.8516%" y="111.50"></text></g><g><title>[memset] (6 samples, 0.09%)</title><rect x="0.6016%" y="85" width="0.0950%" height="15" fill="rgb(216,20,37)" fg:x="38" fg:w="6"/><text x="0.8516%" y="95.50"></text></g><g><title>[kernel::context::memory::cow] (3 samples, 0.05%)</title><rect x="0.6966%" y="149" width="0.0475%" height="15" fill="rgb(206,188,39)" fg:x="44" fg:w="3"/><text x="0.9466%" y="159.50"></text></g><g><title>[kernel::memory::allocate_frames] (3 samples, 0.05%)</title><rect x="0.6966%" y="133" width="0.0475%" height="15" fill="rgb(217,207,13)" fg:x="44" fg:w="3"/><text x="0.9466%" y="143.50"></text></g><g><title>[memset] (3 samples, 0.05%)</title><rect x="0.6966%" y="117" width="0.0475%" height="15" fill="rgb(231,73,38)" fg:x="44" fg:w="3"/><text x="0.9466%" y="127.50"></text></g><g><title>[kernel::memory::get_page_info] (1 samples, 0.02%)</title><rect x="0.7441%" y="149" width="0.0158%" height="15" fill="rgb(225,20,46)" fg:x="47" fg:w="1"/><text x="0.9941%" y="159.50"></text></g><g><title>[kernel::memory::init_frame] (18 samples, 0.28%)</title><rect x="0.7600%" y="149" width="0.2850%" height="15" fill="rgb(210,31,41)" fg:x="48" fg:w="18"/><text x="1.0100%" y="159.50"></text></g><g><title>[kernel::memory::allocate_frames] (18 samples, 0.28%)</title><rect x="0.7600%" y="133" width="0.2850%" height="15" fill="rgb(221,200,47)" fg:x="48" fg:w="18"/><text x="1.0100%" y="143.50"></text></g><g><title>[memset] (18 samples, 0.28%)</title><rect x="0.7600%" y="117" width="0.2850%" height="15" fill="rgb(226,26,5)" fg:x="48" fg:w="18"/><text x="1.0100%" y="127.50"></text></g><g><title>[memcpy] (2 samples, 0.03%)</title><rect x="1.0450%" y="149" width="0.0317%" height="15" fill="rgb(249,33,26)" fg:x="66" fg:w="2"/><text x="1.2950%" y="159.50"></text></g><g><title>[rmm::page::mapper::PageMapper<A,F>::map_phys] (1 samples, 0.02%)</title><rect x="1.0766%" y="149" width="0.0158%" height="15" fill="rgb(235,183,28)" fg:x="68" fg:w="1"/><text x="1.3266%" y="159.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::exception::page] (61 samples, 0.97%)</title><rect x="0.1583%" y="197" width="0.9658%" height="15" fill="rgb(221,5,38)" fg:x="10" fg:w="61"/><text x="0.4083%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::exception::page::inner] (52 samples, 0.82%)</title><rect x="0.3008%" y="181" width="0.8233%" height="15" fill="rgb(247,18,42)" fg:x="19" fg:w="52"/><text x="0.5508%" y="191.50"></text></g><g><title>[kernel::context::memory::correct_inner] (47 samples, 0.74%)</title><rect x="0.3800%" y="165" width="0.7441%" height="15" fill="rgb(241,131,45)" fg:x="24" fg:w="47"/><text x="0.6300%" y="175.50"></text></g><g><title>[rmm::page::mapper::PageMapper<A,F>::translate] (2 samples, 0.03%)</title><rect x="1.0925%" y="149" width="0.0317%" height="15" fill="rgb(249,31,29)" fg:x="69" fg:w="2"/><text x="1.3425%" y="159.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::generic_irq::inner] (2 samples, 0.03%)</title><rect x="1.1241%" y="197" width="0.0317%" height="15" fill="rgb(225,111,53)" fg:x="71" fg:w="2"/><text x="1.3741%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pci2::inner] (1 samples, 0.02%)</title><rect x="1.1558%" y="197" width="0.0158%" height="15" fill="rgb(238,160,17)" fg:x="73" fg:w="1"/><text x="1.4058%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pci2] (5 samples, 0.08%)</title><rect x="1.1716%" y="197" width="0.0792%" height="15" fill="rgb(214,148,48)" fg:x="74" fg:w="5"/><text x="1.4216%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pci2::inner] (3 samples, 0.05%)</title><rect x="1.2033%" y="181" width="0.0475%" height="15" fill="rgb(232,36,49)" fg:x="76" fg:w="3"/><text x="1.4533%" y="191.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pit_stack::inner] (15 samples, 0.24%)</title><rect x="1.2508%" y="197" width="0.2375%" height="15" fill="rgb(209,103,24)" fg:x="79" fg:w="15"/><text x="1.5008%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pit_stack] (19 samples, 0.30%)</title><rect x="1.4883%" y="197" width="0.3008%" height="15" fill="rgb(229,88,8)" fg:x="94" fg:w="19"/><text x="1.7383%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pit_stack::inner] (15 samples, 0.24%)</title><rect x="1.5516%" y="181" width="0.2375%" height="15" fill="rgb(213,181,19)" fg:x="98" fg:w="15"/><text x="1.8016%" y="191.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (11 samples, 0.17%)</title><rect x="1.6149%" y="165" width="0.1742%" height="15" fill="rgb(254,191,54)" fg:x="102" fg:w="11"/><text x="1.8649%" y="175.50"></text></g><g><title>[<kernel::scheme::debug::DebugScheme as kernel::scheme::KernelScheme>::kwrite] (229 samples, 3.63%)</title><rect x="1.9474%" y="149" width="3.6257%" height="15" fill="rgb(241,83,37)" fg:x="123" fg:w="229"/><text x="2.1974%" y="159.50">[<ke..</text></g><g><title>[kernel::arch::x86_shared::debug::Writer::write] (227 samples, 3.59%)</title><rect x="1.9791%" y="133" width="3.5940%" height="15" fill="rgb(233,36,39)" fg:x="125" fg:w="227"/><text x="2.2291%" y="143.50">[ker..</text></g><g><title>[<kernel::scheme::event::EventScheme as kernel::scheme::KernelScheme>::kread] (129 samples, 2.04%)</title><rect x="5.5731%" y="149" width="2.0424%" height="15" fill="rgb(226,3,54)" fg:x="352" fg:w="129"/><text x="5.8231%" y="159.50">[..</text></g><g><title>[kernel::context::switch::switch] (129 samples, 2.04%)</title><rect x="5.5731%" y="133" width="2.0424%" height="15" fill="rgb(245,192,40)" fg:x="352" fg:w="129"/><text x="5.8231%" y="143.50">[..</text></g><g><title>[kernel::arch::x86_shared::time::counter] (42 samples, 0.66%)</title><rect x="6.9506%" y="117" width="0.6650%" height="15" fill="rgb(238,167,29)" fg:x="439" fg:w="42"/><text x="7.2006%" y="127.50"></text></g><g><title>[<kernel::scheme::irq::IrqScheme as kernel::scheme::KernelScheme>::kwrite] (2 samples, 0.03%)</title><rect x="7.6156%" y="149" width="0.0317%" height="15" fill="rgb(232,182,51)" fg:x="481" fg:w="2"/><text x="7.8656%" y="159.50"></text></g><g><title>[<kernel::scheme::pipe::PipeScheme as kernel::scheme::KernelScheme>::kread] (1 samples, 0.02%)</title><rect x="7.6472%" y="149" width="0.0158%" height="15" fill="rgb(231,60,39)" fg:x="483" fg:w="1"/><text x="7.8972%" y="159.50"></text></g><g><title>[kernel::sync::wait_condition::WaitCondition::wait] (1 samples, 0.02%)</title><rect x="7.6472%" y="133" width="0.0158%" height="15" fill="rgb(208,69,12)" fg:x="483" fg:w="1"/><text x="7.8972%" y="143.50"></text></g><g><title>[alloc::collections::btree::map::BTreeMap<K,V,A>::range] (1 samples, 0.02%)</title><rect x="7.6472%" y="117" width="0.0158%" height="15" fill="rgb(235,93,37)" fg:x="483" fg:w="1"/><text x="7.8972%" y="127.50"></text></g><g><title>[<alloc::collections::btree::map::Range<K,V> as core::iter::traits::iterator::Iterator>::next] (1 samples, 0.02%)</title><rect x="7.7264%" y="133" width="0.0158%" height="15" fill="rgb(213,116,39)" fg:x="488" fg:w="1"/><text x="7.9764%" y="143.50"></text></g><g><title>[<alloc::collections::btree::map::Range<K,V> as core::iter::traits::iterator::Iterator>::next] (1 samples, 0.02%)</title><rect x="13.2204%" y="117" width="0.0158%" height="15" fill="rgb(222,207,29)" fg:x="835" fg:w="1"/><text x="13.4704%" y="127.50"></text></g><g><title>[alloc::collections::btree::map::BTreeMap<K,V,A>::range] (1 samples, 0.02%)</title><rect x="13.2362%" y="117" width="0.0158%" height="15" fill="rgb(206,96,30)" fg:x="836" fg:w="1"/><text x="13.4862%" y="127.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (198 samples, 3.13%)</title><rect x="13.2521%" y="117" width="3.1349%" height="15" fill="rgb(218,138,4)" fg:x="837" fg:w="198"/><text x="13.5021%" y="127.50">[ke..</text></g><g><title>[<kernel::scheme::root::RootScheme as kernel::scheme::KernelScheme>::kread] (554 samples, 8.77%)</title><rect x="7.6631%" y="149" width="8.7714%" height="15" fill="rgb(250,191,14)" fg:x="484" fg:w="554"/><text x="7.9131%" y="159.50">[<kernel::sc..</text></g><g><title>[kernel::context::switch::switch] (549 samples, 8.69%)</title><rect x="7.7422%" y="133" width="8.6922%" height="15" fill="rgb(239,60,40)" fg:x="489" fg:w="549"/><text x="7.9922%" y="143.50">[kernel::con..</text></g><g><title>[kernel::context::switch::switch_finish_hook] (3 samples, 0.05%)</title><rect x="16.3870%" y="117" width="0.0475%" height="15" fill="rgb(206,27,48)" fg:x="1035" fg:w="3"/><text x="16.6370%" y="127.50"></text></g><g><title>[<kernel::scheme::root::RootScheme as kernel::scheme::KernelScheme>::kwrite] (42 samples, 0.66%)</title><rect x="16.4345%" y="149" width="0.6650%" height="15" fill="rgb(225,35,8)" fg:x="1038" fg:w="42"/><text x="16.6845%" y="159.50"></text></g><g><title>[kernel::scheme::user::UserInner::respond] (42 samples, 0.66%)</title><rect x="16.4345%" y="133" width="0.6650%" height="15" fill="rgb(250,213,24)" fg:x="1038" fg:w="42"/><text x="16.6845%" y="143.50"></text></g><g><title>[<alloc::sync::Weak<T,A> as core::ops::drop::Drop>::drop] (1 samples, 0.02%)</title><rect x="17.0836%" y="117" width="0.0158%" height="15" fill="rgb(247,123,22)" fg:x="1079" fg:w="1"/><text x="17.3336%" y="127.50"></text></g><g><title>[<kernel::scheme::time::TimeScheme as kernel::scheme::KernelScheme>::kread] (1 samples, 0.02%)</title><rect x="17.0994%" y="149" width="0.0158%" height="15" fill="rgb(231,138,38)" fg:x="1080" fg:w="1"/><text x="17.3494%" y="159.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (1 samples, 0.02%)</title><rect x="17.0994%" y="133" width="0.0158%" height="15" fill="rgb(231,145,46)" fg:x="1080" fg:w="1"/><text x="17.3494%" y="143.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::kfpath] (1 samples, 0.02%)</title><rect x="17.1153%" y="149" width="0.0158%" height="15" fill="rgb(251,118,11)" fg:x="1081" fg:w="1"/><text x="17.3653%" y="159.50"></text></g><g><title>[kernel::scheme::user::UserInner::call] (1 samples, 0.02%)</title><rect x="17.1153%" y="133" width="0.0158%" height="15" fill="rgb(217,147,25)" fg:x="1081" fg:w="1"/><text x="17.3653%" y="143.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner] (1 samples, 0.02%)</title><rect x="17.1153%" y="117" width="0.0158%" height="15" fill="rgb(247,81,37)" fg:x="1081" fg:w="1"/><text x="17.3653%" y="127.50"></text></g><g><title>[kernel::context::switch::switch] (1 samples, 0.02%)</title><rect x="17.1153%" y="101" width="0.0158%" height="15" fill="rgb(209,12,38)" fg:x="1081" fg:w="1"/><text x="17.3653%" y="111.50"></text></g><g><title>[kernel::context::switch::switch] (14 samples, 0.22%)</title><rect x="17.1311%" y="117" width="0.2217%" height="15" fill="rgb(227,1,9)" fg:x="1082" fg:w="14"/><text x="17.3811%" y="127.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (5 samples, 0.08%)</title><rect x="17.2736%" y="101" width="0.0792%" height="15" fill="rgb(248,47,43)" fg:x="1091" fg:w="5"/><text x="17.5236%" y="111.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::kopen] (15 samples, 0.24%)</title><rect x="17.1311%" y="149" width="0.2375%" height="15" fill="rgb(221,10,30)" fg:x="1082" fg:w="15"/><text x="17.3811%" y="159.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner] (15 samples, 0.24%)</title><rect x="17.1311%" y="133" width="0.2375%" height="15" fill="rgb(210,229,1)" fg:x="1082" fg:w="15"/><text x="17.3811%" y="143.50"></text></g><g><title>[kernel::sync::wait_condition::WaitCondition::notify] (1 samples, 0.02%)</title><rect x="17.3528%" y="117" width="0.0158%" height="15" fill="rgb(222,148,37)" fg:x="1096" fg:w="1"/><text x="17.6028%" y="127.50"></text></g><g><title>[core::ptr::drop_in_place<kernel::scheme::user::CaptureGuard<_,_>>] (1 samples, 0.02%)</title><rect x="17.3844%" y="133" width="0.0158%" height="15" fill="rgb(234,67,33)" fg:x="1098" fg:w="1"/><text x="17.6344%" y="143.50"></text></g><g><title>[<kernel::context::context::BorrowedHtBuf as core::ops::drop::Drop>::drop] (1 samples, 0.02%)</title><rect x="17.3844%" y="117" width="0.0158%" height="15" fill="rgb(247,98,35)" fg:x="1098" fg:w="1"/><text x="17.6344%" y="127.50"></text></g><g><title>[kernel::context::current] (1 samples, 0.02%)</title><rect x="17.3844%" y="101" width="0.0158%" height="15" fill="rgb(247,138,52)" fg:x="1098" fg:w="1"/><text x="17.6344%" y="111.50"></text></g><g><title>[kernel::arch::x86_64::arch_copy_to_user] (1 samples, 0.02%)</title><rect x="17.4003%" y="133" width="0.0158%" height="15" fill="rgb(213,79,30)" fg:x="1099" fg:w="1"/><text x="17.6503%" y="143.50"></text></g><g><title>[alloc::collections::btree::map::BTreeMap<K,V,A>::range] (1 samples, 0.02%)</title><rect x="17.4161%" y="85" width="0.0158%" height="15" fill="rgb(246,177,23)" fg:x="1100" fg:w="1"/><text x="17.6661%" y="95.50"></text></g><g><title>[kernel::context::memory::AddrSpace::munmap_inner] (3 samples, 0.05%)</title><rect x="17.4161%" y="101" width="0.0475%" height="15" fill="rgb(230,62,27)" fg:x="1100" fg:w="3"/><text x="17.6661%" y="111.50"></text></g><g><title>[kernel::context::memory::Flusher::flush] (2 samples, 0.03%)</title><rect x="17.4319%" y="85" width="0.0317%" height="15" fill="rgb(216,154,8)" fg:x="1101" fg:w="2"/><text x="17.6819%" y="95.50"></text></g><g><title>[kernel::context::memory::Flusher::flush] (7 samples, 0.11%)</title><rect x="17.4636%" y="101" width="0.1108%" height="15" fill="rgb(244,35,45)" fg:x="1103" fg:w="7"/><text x="17.7136%" y="111.50"></text></g><g><title>[kernel::scheme::user::CaptureGuard<_,_>::release_inner] (11 samples, 0.17%)</title><rect x="17.4161%" y="133" width="0.1742%" height="15" fill="rgb(251,115,12)" fg:x="1100" fg:w="11"/><text x="17.6661%" y="143.50"></text></g><g><title>[kernel::context::memory::AddrSpaceWrapper::munmap] (11 samples, 0.17%)</title><rect x="17.4161%" y="117" width="0.1742%" height="15" fill="rgb(240,54,50)" fg:x="1100" fg:w="11"/><text x="17.6661%" y="127.50"></text></g><g><title>[kernel::memory::get_page_info] (1 samples, 0.02%)</title><rect x="17.5744%" y="101" width="0.0158%" height="15" fill="rgb(233,84,52)" fg:x="1110" fg:w="1"/><text x="17.8244%" y="111.50"></text></g><g><title>[kernel::context::switch::switch] (41 samples, 0.65%)</title><rect x="17.6061%" y="101" width="0.6491%" height="15" fill="rgb(207,117,47)" fg:x="1112" fg:w="41"/><text x="17.8561%" y="111.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (18 samples, 0.28%)</title><rect x="17.9702%" y="85" width="0.2850%" height="15" fill="rgb(249,43,39)" fg:x="1135" fg:w="18"/><text x="18.2202%" y="95.50"></text></g><g><title>[kernel::scheme::user::UserInner::call] (43 samples, 0.68%)</title><rect x="17.5902%" y="133" width="0.6808%" height="15" fill="rgb(209,38,44)" fg:x="1111" fg:w="43"/><text x="17.8402%" y="143.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner] (43 samples, 0.68%)</title><rect x="17.5902%" y="117" width="0.6808%" height="15" fill="rgb(236,212,23)" fg:x="1111" fg:w="43"/><text x="17.8402%" y="127.50"></text></g><g><title>[kernel::event::trigger] (1 samples, 0.02%)</title><rect x="18.2552%" y="101" width="0.0158%" height="15" fill="rgb(242,79,21)" fg:x="1153" fg:w="1"/><text x="18.5052%" y="111.50"></text></g><g><title>[kernel::sync::wait_condition::WaitCondition::notify] (1 samples, 0.02%)</title><rect x="18.2552%" y="85" width="0.0158%" height="15" fill="rgb(211,96,35)" fg:x="1153" fg:w="1"/><text x="18.5052%" y="95.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::kread] (58 samples, 0.92%)</title><rect x="17.3686%" y="149" width="0.9183%" height="15" fill="rgb(253,215,40)" fg:x="1097" fg:w="58"/><text x="17.6186%" y="159.50"></text></g><g><title>[kernel::scheme::user::UserInner::capture_inner] (1 samples, 0.02%)</title><rect x="18.2711%" y="133" width="0.0158%" height="15" fill="rgb(211,81,21)" fg:x="1154" fg:w="1"/><text x="18.5211%" y="143.50"></text></g><g><title>[kernel::context::memory::AddrSpace::mmap] (1 samples, 0.02%)</title><rect x="18.2711%" y="117" width="0.0158%" height="15" fill="rgb(208,190,38)" fg:x="1154" fg:w="1"/><text x="18.5211%" y="127.50"></text></g><g><title>[kernel::context::memory::Flusher::flush] (1 samples, 0.02%)</title><rect x="18.2711%" y="101" width="0.0158%" height="15" fill="rgb(235,213,38)" fg:x="1154" fg:w="1"/><text x="18.5211%" y="111.50"></text></g><g><title>[core::ptr::drop_in_place<kernel::scheme::user::CaptureGuard<_,_>>] (2 samples, 0.03%)</title><rect x="18.3027%" y="133" width="0.0317%" height="15" fill="rgb(237,122,38)" fg:x="1156" fg:w="2"/><text x="18.5527%" y="143.50"></text></g><g><title>[<kernel::context::context::BorrowedHtBuf as core::ops::drop::Drop>::drop] (2 samples, 0.03%)</title><rect x="18.3027%" y="117" width="0.0317%" height="15" fill="rgb(244,218,35)" fg:x="1156" fg:w="2"/><text x="18.5527%" y="127.50"></text></g><g><title>[kernel::context::current] (2 samples, 0.03%)</title><rect x="18.3027%" y="101" width="0.0317%" height="15" fill="rgb(240,68,47)" fg:x="1156" fg:w="2"/><text x="18.5527%" y="111.50"></text></g><g><title>[kernel::arch::x86_64::arch_copy_to_user] (3 samples, 0.05%)</title><rect x="18.3344%" y="133" width="0.0475%" height="15" fill="rgb(210,16,53)" fg:x="1158" fg:w="3"/><text x="18.5844%" y="143.50"></text></g><g><title>[alloc::collections::btree::map::BTreeMap<K,V,A>::range] (1 samples, 0.02%)</title><rect x="18.4452%" y="85" width="0.0158%" height="15" fill="rgb(235,124,12)" fg:x="1165" fg:w="1"/><text x="18.6952%" y="95.50"></text></g><g><title>[alloc::collections::btree::map::BTreeMap<K,V,A>::remove] (3 samples, 0.05%)</title><rect x="18.4769%" y="69" width="0.0475%" height="15" fill="rgb(224,169,11)" fg:x="1167" fg:w="3"/><text x="18.7269%" y="79.50"></text></g><g><title>[alloc::collections::btree::remove::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::KV>>::remove_leaf_kv] (1 samples, 0.02%)</title><rect x="18.5085%" y="53" width="0.0158%" height="15" fill="rgb(250,166,2)" fg:x="1169" fg:w="1"/><text x="18.7585%" y="63.50"></text></g><g><title>[kernel::context::memory::UserGrants::remove] (5 samples, 0.08%)</title><rect x="18.4611%" y="85" width="0.0792%" height="15" fill="rgb(242,216,29)" fg:x="1166" fg:w="5"/><text x="18.7111%" y="95.50"></text></g><g><title>[alloc::collections::btree::remove::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::KV>>::remove_leaf_kv] (1 samples, 0.02%)</title><rect x="18.5244%" y="69" width="0.0158%" height="15" fill="rgb(230,116,27)" fg:x="1170" fg:w="1"/><text x="18.7744%" y="79.50"></text></g><g><title>[kernel::context::memory::AddrSpace::munmap_inner] (9 samples, 0.14%)</title><rect x="18.4136%" y="101" width="0.1425%" height="15" fill="rgb(228,99,48)" fg:x="1163" fg:w="9"/><text x="18.6636%" y="111.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (1 samples, 0.02%)</title><rect x="18.5402%" y="85" width="0.0158%" height="15" fill="rgb(253,11,6)" fg:x="1171" fg:w="1"/><text x="18.7902%" y="95.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (1 samples, 0.02%)</title><rect x="18.5402%" y="69" width="0.0158%" height="15" fill="rgb(247,143,39)" fg:x="1171" fg:w="1"/><text x="18.7902%" y="79.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (1 samples, 0.02%)</title><rect x="18.5402%" y="53" width="0.0158%" height="15" fill="rgb(236,97,10)" fg:x="1171" fg:w="1"/><text x="18.7902%" y="63.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (1 samples, 0.02%)</title><rect x="18.5402%" y="37" width="0.0158%" height="15" fill="rgb(233,208,19)" fg:x="1171" fg:w="1"/><text x="18.7902%" y="47.50"></text></g><g><title>[kernel::scheme::user::CaptureGuard<_,_>::release_inner] (48 samples, 0.76%)</title><rect x="18.3819%" y="133" width="0.7600%" height="15" fill="rgb(216,164,2)" fg:x="1161" fg:w="48"/><text x="18.6319%" y="143.50"></text></g><g><title>[kernel::context::memory::AddrSpaceWrapper::munmap] (48 samples, 0.76%)</title><rect x="18.3819%" y="117" width="0.7600%" height="15" fill="rgb(220,129,5)" fg:x="1161" fg:w="48"/><text x="18.6319%" y="127.50"></text></g><g><title>[kernel::context::memory::Flusher::flush] (37 samples, 0.59%)</title><rect x="18.5560%" y="101" width="0.5858%" height="15" fill="rgb(242,17,10)" fg:x="1172" fg:w="37"/><text x="18.8060%" y="111.50"></text></g><g><title>[memcpy] (1 samples, 0.02%)</title><rect x="19.1260%" y="85" width="0.0158%" height="15" fill="rgb(242,107,0)" fg:x="1208" fg:w="1"/><text x="19.3760%" y="95.50"></text></g><g><title>[kernel::event::trigger] (1 samples, 0.02%)</title><rect x="19.1419%" y="117" width="0.0158%" height="15" fill="rgb(251,28,31)" fg:x="1209" fg:w="1"/><text x="19.3919%" y="127.50"></text></g><g><title>[<alloc::collections::btree::map::Range<K,V> as core::iter::traits::iterator::Iterator>::next] (1 samples, 0.02%)</title><rect x="19.2052%" y="101" width="0.0158%" height="15" fill="rgb(233,223,10)" fg:x="1213" fg:w="1"/><text x="19.4552%" y="111.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (231 samples, 3.66%)</title><rect x="22.1976%" y="85" width="3.6574%" height="15" fill="rgb(215,21,27)" fg:x="1402" fg:w="231"/><text x="22.4476%" y="95.50">[ker..</text></g><g><title>[kernel::context::switch::switch] (426 samples, 6.74%)</title><rect x="19.2210%" y="101" width="6.7448%" height="15" fill="rgb(232,23,21)" fg:x="1214" fg:w="426"/><text x="19.4710%" y="111.50">[kernel::..</text></g><g><title>[kernel::context::switch::switch_finish_hook] (7 samples, 0.11%)</title><rect x="25.8550%" y="85" width="0.1108%" height="15" fill="rgb(244,5,23)" fg:x="1633" fg:w="7"/><text x="26.1050%" y="95.50"></text></g><g><title>[kernel::event::trigger] (9 samples, 0.14%)</title><rect x="25.9658%" y="101" width="0.1425%" height="15" fill="rgb(226,81,46)" fg:x="1640" fg:w="9"/><text x="26.2158%" y="111.50"></text></g><g><title>[kernel::sync::wait_condition::WaitCondition::notify] (8 samples, 0.13%)</title><rect x="25.9816%" y="85" width="0.1267%" height="15" fill="rgb(247,70,30)" fg:x="1641" fg:w="8"/><text x="26.2316%" y="95.50"></text></g><g><title>[kernel::scheme::user::UserInner::call] (470 samples, 7.44%)</title><rect x="19.1419%" y="133" width="7.4414%" height="15" fill="rgb(212,68,19)" fg:x="1209" fg:w="470"/><text x="19.3919%" y="143.50">[kernel::s..</text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner] (469 samples, 7.43%)</title><rect x="19.1577%" y="117" width="7.4256%" height="15" fill="rgb(240,187,13)" fg:x="1210" fg:w="469"/><text x="19.4077%" y="127.50">[kernel::s..</text></g><g><title>[kernel::sync::wait_condition::WaitCondition::notify] (30 samples, 0.47%)</title><rect x="26.1083%" y="101" width="0.4750%" height="15" fill="rgb(223,113,26)" fg:x="1649" fg:w="30"/><text x="26.3583%" y="111.50"></text></g><g><title>[kernel::context::memory::Flusher::flush] (10 samples, 0.16%)</title><rect x="26.5833%" y="101" width="0.1583%" height="15" fill="rgb(206,192,2)" fg:x="1679" fg:w="10"/><text x="26.8333%" y="111.50"></text></g><g><title>[kernel::context::memory::Grant::borrow] (1 samples, 0.02%)</title><rect x="26.7416%" y="101" width="0.0158%" height="15" fill="rgb(241,108,4)" fg:x="1689" fg:w="1"/><text x="26.9916%" y="111.50"></text></g><g><title>[alloc::collections::btree::map::BTreeMap<K,V,A>::insert] (1 samples, 0.02%)</title><rect x="26.7891%" y="85" width="0.0158%" height="15" fill="rgb(247,173,49)" fg:x="1692" fg:w="1"/><text x="27.0391%" y="95.50"></text></g><g><title>[kernel::context::memory::AddrSpace::mmap] (15 samples, 0.24%)</title><rect x="26.5833%" y="117" width="0.2375%" height="15" fill="rgb(224,114,35)" fg:x="1679" fg:w="15"/><text x="26.8333%" y="127.50"></text></g><g><title>[kernel::context::memory::UserGrants::insert] (4 samples, 0.06%)</title><rect x="26.7574%" y="101" width="0.0633%" height="15" fill="rgb(245,159,27)" fg:x="1690" fg:w="4"/><text x="27.0074%" y="111.50"></text></g><g><title>[alloc::collections::btree::map::BTreeMap<K,V,A>::remove] (1 samples, 0.02%)</title><rect x="26.8049%" y="85" width="0.0158%" height="15" fill="rgb(245,172,44)" fg:x="1693" fg:w="1"/><text x="27.0549%" y="95.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::kwrite] (545 samples, 8.63%)</title><rect x="18.2869%" y="149" width="8.6289%" height="15" fill="rgb(236,23,11)" fg:x="1155" fg:w="545"/><text x="18.5369%" y="159.50">[<kernel::sc..</text></g><g><title>[kernel::scheme::user::UserInner::capture_inner] (21 samples, 0.33%)</title><rect x="26.5833%" y="133" width="0.3325%" height="15" fill="rgb(205,117,38)" fg:x="1679" fg:w="21"/><text x="26.8333%" y="143.50"></text></g><g><title>[memset] (6 samples, 0.09%)</title><rect x="26.8208%" y="117" width="0.0950%" height="15" fill="rgb(237,72,25)" fg:x="1694" fg:w="6"/><text x="27.0708%" y="127.50"></text></g><g><title>[kernel::arch::x86_64::arch_copy_to_user] (3 samples, 0.05%)</title><rect x="26.9158%" y="149" width="0.0475%" height="15" fill="rgb(244,70,9)" fg:x="1700" fg:w="3"/><text x="27.1658%" y="159.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (1 samples, 0.02%)</title><rect x="26.9633%" y="149" width="0.0158%" height="15" fill="rgb(217,125,39)" fg:x="1703" fg:w="1"/><text x="27.2133%" y="159.50"></text></g><g><title>[kernel::context::current] (5 samples, 0.08%)</title><rect x="26.9791%" y="149" width="0.0792%" height="15" fill="rgb(235,36,10)" fg:x="1704" fg:w="5"/><text x="27.2291%" y="159.50"></text></g><g><title>[kernel::context::switch::switch] (36 samples, 0.57%)</title><rect x="27.0583%" y="149" width="0.5700%" height="15" fill="rgb(251,123,47)" fg:x="1709" fg:w="36"/><text x="27.3083%" y="159.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (19 samples, 0.30%)</title><rect x="27.3274%" y="133" width="0.3008%" height="15" fill="rgb(221,13,13)" fg:x="1726" fg:w="19"/><text x="27.5774%" y="143.50"></text></g><g><title>[<kernel::scheme::proc::ProcScheme<_> as kernel::scheme::KernelScheme>::close] (6 samples, 0.09%)</title><rect x="27.6282%" y="117" width="0.0950%" height="15" fill="rgb(238,131,9)" fg:x="1745" fg:w="6"/><text x="27.8782%" y="127.50"></text></g><g><title>[alloc::sync::Arc<T,A>::drop_slow] (6 samples, 0.09%)</title><rect x="27.6282%" y="101" width="0.0950%" height="15" fill="rgb(211,50,8)" fg:x="1745" fg:w="6"/><text x="27.8782%" y="111.50"></text></g><g><title>[<kernel::context::memory::AddrSpace as core::ops::drop::Drop>::drop] (6 samples, 0.09%)</title><rect x="27.6282%" y="85" width="0.0950%" height="15" fill="rgb(245,182,24)" fg:x="1745" fg:w="6"/><text x="27.8782%" y="95.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (6 samples, 0.09%)</title><rect x="27.6282%" y="69" width="0.0950%" height="15" fill="rgb(242,14,37)" fg:x="1745" fg:w="6"/><text x="27.8782%" y="79.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (4 samples, 0.06%)</title><rect x="27.6599%" y="53" width="0.0633%" height="15" fill="rgb(246,228,12)" fg:x="1747" fg:w="4"/><text x="27.9099%" y="63.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (2 samples, 0.03%)</title><rect x="27.6916%" y="37" width="0.0317%" height="15" fill="rgb(213,55,15)" fg:x="1749" fg:w="2"/><text x="27.9416%" y="47.50"></text></g><g><title>[kernel::syscall::fs::close] (12 samples, 0.19%)</title><rect x="27.6282%" y="149" width="0.1900%" height="15" fill="rgb(209,9,3)" fg:x="1745" fg:w="12"/><text x="27.8782%" y="159.50"></text></g><g><title>[kernel::context::file::FileDescription::try_close] (12 samples, 0.19%)</title><rect x="27.6282%" y="133" width="0.1900%" height="15" fill="rgb(230,59,30)" fg:x="1745" fg:w="12"/><text x="27.8782%" y="143.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::close] (6 samples, 0.09%)</title><rect x="27.7232%" y="117" width="0.0950%" height="15" fill="rgb(209,121,21)" fg:x="1751" fg:w="6"/><text x="27.9732%" y="127.50"></text></g><g><title>[kernel::scheme::user::UserInner::call] (6 samples, 0.09%)</title><rect x="27.7232%" y="101" width="0.0950%" height="15" fill="rgb(220,109,13)" fg:x="1751" fg:w="6"/><text x="27.9732%" y="111.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner] (6 samples, 0.09%)</title><rect x="27.7232%" y="85" width="0.0950%" height="15" fill="rgb(232,18,1)" fg:x="1751" fg:w="6"/><text x="27.9732%" y="95.50"></text></g><g><title>[kernel::context::switch::switch] (6 samples, 0.09%)</title><rect x="27.7232%" y="69" width="0.0950%" height="15" fill="rgb(215,41,42)" fg:x="1751" fg:w="6"/><text x="27.9732%" y="79.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (4 samples, 0.06%)</title><rect x="27.7549%" y="53" width="0.0633%" height="15" fill="rgb(224,123,36)" fg:x="1753" fg:w="4"/><text x="28.0049%" y="63.50"></text></g><g><title>[kernel::syscall::fs::copy_path_to_buf] (2 samples, 0.03%)</title><rect x="27.8182%" y="149" width="0.0317%" height="15" fill="rgb(240,125,3)" fg:x="1757" fg:w="2"/><text x="28.0682%" y="159.50"></text></g><g><title>[memset] (2 samples, 0.03%)</title><rect x="27.8182%" y="133" width="0.0317%" height="15" fill="rgb(205,98,50)" fg:x="1757" fg:w="2"/><text x="28.0682%" y="143.50"></text></g><g><title>[kernel::context::memory::Grant::copy_mappings] (2 samples, 0.03%)</title><rect x="27.8499%" y="85" width="0.0317%" height="15" fill="rgb(205,185,37)" fg:x="1759" fg:w="2"/><text x="28.0999%" y="95.50"></text></g><g><title>[kernel::memory::allocate_frames] (1 samples, 0.02%)</title><rect x="27.8657%" y="69" width="0.0158%" height="15" fill="rgb(238,207,15)" fg:x="1760" fg:w="1"/><text x="28.1157%" y="79.50"></text></g><g><title>[memset] (1 samples, 0.02%)</title><rect x="27.8657%" y="53" width="0.0158%" height="15" fill="rgb(213,199,42)" fg:x="1760" fg:w="1"/><text x="28.1157%" y="63.50"></text></g><g><title>[kernel::context::memory::AddrSpaceWrapper::try_clone] (5 samples, 0.08%)</title><rect x="27.8499%" y="101" width="0.0792%" height="15" fill="rgb(235,201,11)" fg:x="1759" fg:w="5"/><text x="28.0999%" y="111.50"></text></g><g><title>[kernel::memory::get_page_info] (3 samples, 0.05%)</title><rect x="27.8816%" y="85" width="0.0475%" height="15" fill="rgb(207,46,11)" fg:x="1761" fg:w="3"/><text x="28.1316%" y="95.50"></text></g><g><title>[<kernel::scheme::proc::ProcScheme<_> as kernel::scheme::KernelScheme>::kdup] (6 samples, 0.09%)</title><rect x="27.8499%" y="117" width="0.0950%" height="15" fill="rgb(241,35,35)" fg:x="1759" fg:w="6"/><text x="28.0999%" y="127.50"></text></g><g><title>[kernel::scheme::proc::ProcScheme<_>::open_inner] (1 samples, 0.02%)</title><rect x="27.9291%" y="101" width="0.0158%" height="15" fill="rgb(243,32,47)" fg:x="1764" fg:w="1"/><text x="28.1791%" y="111.50"></text></g><g><title>[kernel::syscall::fs::dup] (7 samples, 0.11%)</title><rect x="27.8499%" y="149" width="0.1108%" height="15" fill="rgb(247,202,23)" fg:x="1759" fg:w="7"/><text x="28.0999%" y="159.50"></text></g><g><title>[kernel::syscall::fs::duplicate_file] (7 samples, 0.11%)</title><rect x="27.8499%" y="133" width="0.1108%" height="15" fill="rgb(219,102,11)" fg:x="1759" fg:w="7"/><text x="28.0999%" y="143.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::kdup] (1 samples, 0.02%)</title><rect x="27.9449%" y="117" width="0.0158%" height="15" fill="rgb(243,110,44)" fg:x="1765" fg:w="1"/><text x="28.1949%" y="127.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner] (1 samples, 0.02%)</title><rect x="27.9449%" y="101" width="0.0158%" height="15" fill="rgb(222,74,54)" fg:x="1765" fg:w="1"/><text x="28.1949%" y="111.50"></text></g><g><title>[kernel::context::switch::switch] (1 samples, 0.02%)</title><rect x="27.9449%" y="85" width="0.0158%" height="15" fill="rgb(216,99,12)" fg:x="1765" fg:w="1"/><text x="28.1949%" y="95.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (1 samples, 0.02%)</title><rect x="27.9449%" y="69" width="0.0158%" height="15" fill="rgb(226,22,26)" fg:x="1765" fg:w="1"/><text x="28.1949%" y="79.50"></text></g><g><title>[kernel::context::memory::Flusher::flush] (2 samples, 0.03%)</title><rect x="27.9607%" y="101" width="0.0317%" height="15" fill="rgb(217,163,10)" fg:x="1766" fg:w="2"/><text x="28.2107%" y="111.50"></text></g><g><title>[kernel::memory::allocate_frames] (17 samples, 0.27%)</title><rect x="27.9924%" y="101" width="0.2692%" height="15" fill="rgb(213,25,53)" fg:x="1768" fg:w="17"/><text x="28.2424%" y="111.50"></text></g><g><title>[memset] (17 samples, 0.27%)</title><rect x="27.9924%" y="85" width="0.2692%" height="15" fill="rgb(252,105,26)" fg:x="1768" fg:w="17"/><text x="28.2424%" y="95.50"></text></g><g><title>[kernel::memory::get_page_info] (2 samples, 0.03%)</title><rect x="28.2616%" y="101" width="0.0317%" height="15" fill="rgb(220,39,43)" fg:x="1785" fg:w="2"/><text x="28.5116%" y="111.50"></text></g><g><title>[<kernel::scheme::memory::MemoryScheme as kernel::scheme::KernelScheme>::kfmap] (22 samples, 0.35%)</title><rect x="27.9607%" y="133" width="0.3483%" height="15" fill="rgb(229,68,48)" fg:x="1766" fg:w="22"/><text x="28.2107%" y="143.50"></text></g><g><title>[kernel::scheme::memory::MemoryScheme::fmap_anonymous] (22 samples, 0.35%)</title><rect x="27.9607%" y="117" width="0.3483%" height="15" fill="rgb(252,8,32)" fg:x="1766" fg:w="22"/><text x="28.2107%" y="127.50"></text></g><g><title>[rmm::page::mapper::PageMapper<A,F>::map_phys] (1 samples, 0.02%)</title><rect x="28.2932%" y="101" width="0.0158%" height="15" fill="rgb(223,20,43)" fg:x="1787" fg:w="1"/><text x="28.5432%" y="111.50"></text></g><g><title>[kernel::context::switch::switch] (2 samples, 0.03%)</title><rect x="28.3091%" y="85" width="0.0317%" height="15" fill="rgb(229,81,49)" fg:x="1788" fg:w="2"/><text x="28.5591%" y="95.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (1 samples, 0.02%)</title><rect x="28.3249%" y="69" width="0.0158%" height="15" fill="rgb(236,28,36)" fg:x="1789" fg:w="1"/><text x="28.5749%" y="79.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::fsync] (4 samples, 0.06%)</title><rect x="28.3091%" y="133" width="0.0633%" height="15" fill="rgb(249,185,26)" fg:x="1788" fg:w="4"/><text x="28.5591%" y="143.50"></text></g><g><title>[kernel::scheme::user::UserInner::call] (4 samples, 0.06%)</title><rect x="28.3091%" y="117" width="0.0633%" height="15" fill="rgb(249,174,33)" fg:x="1788" fg:w="4"/><text x="28.5591%" y="127.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner] (4 samples, 0.06%)</title><rect x="28.3091%" y="101" width="0.0633%" height="15" fill="rgb(233,201,37)" fg:x="1788" fg:w="4"/><text x="28.5591%" y="111.50"></text></g><g><title>[kernel::sync::wait_condition::WaitCondition::notify] (2 samples, 0.03%)</title><rect x="28.3407%" y="85" width="0.0317%" height="15" fill="rgb(221,78,26)" fg:x="1790" fg:w="2"/><text x="28.5907%" y="95.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (21 samples, 0.33%)</title><rect x="29.0690%" y="69" width="0.3325%" height="15" fill="rgb(250,127,30)" fg:x="1836" fg:w="21"/><text x="29.3190%" y="79.50"></text></g><g><title>[kernel::context::switch::switch] (65 samples, 1.03%)</title><rect x="28.3882%" y="85" width="1.0291%" height="15" fill="rgb(230,49,44)" fg:x="1793" fg:w="65"/><text x="28.6382%" y="95.50"></text></g><g><title>[kernel::context::switch::switch_finish_hook] (1 samples, 0.02%)</title><rect x="29.4015%" y="69" width="0.0158%" height="15" fill="rgb(229,67,23)" fg:x="1857" fg:w="1"/><text x="29.6515%" y="79.50"></text></g><g><title>[kernel::syscall::fs::file_op_generic_ext] (97 samples, 1.54%)</title><rect x="27.9607%" y="149" width="1.5358%" height="15" fill="rgb(249,83,47)" fg:x="1766" fg:w="97"/><text x="28.2107%" y="159.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::seek] (71 samples, 1.12%)</title><rect x="28.3724%" y="133" width="1.1241%" height="15" fill="rgb(215,43,3)" fg:x="1792" fg:w="71"/><text x="28.6224%" y="143.50"></text></g><g><title>[kernel::scheme::user::UserInner::call] (71 samples, 1.12%)</title><rect x="28.3724%" y="117" width="1.1241%" height="15" fill="rgb(238,154,13)" fg:x="1792" fg:w="71"/><text x="28.6224%" y="127.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner] (70 samples, 1.11%)</title><rect x="28.3882%" y="101" width="1.1083%" height="15" fill="rgb(219,56,2)" fg:x="1793" fg:w="70"/><text x="28.6382%" y="111.50"></text></g><g><title>[kernel::event::trigger] (5 samples, 0.08%)</title><rect x="29.4174%" y="85" width="0.0792%" height="15" fill="rgb(233,0,4)" fg:x="1858" fg:w="5"/><text x="29.6674%" y="95.50"></text></g><g><title>[kernel::sync::wait_condition::WaitCondition::notify] (5 samples, 0.08%)</title><rect x="29.4174%" y="69" width="0.0792%" height="15" fill="rgb(235,30,7)" fg:x="1858" fg:w="5"/><text x="29.6674%" y="79.50"></text></g><g><title>[kernel::context::memory::Flusher::flush] (1 samples, 0.02%)</title><rect x="29.5123%" y="101" width="0.0158%" height="15" fill="rgb(250,79,13)" fg:x="1864" fg:w="1"/><text x="29.7623%" y="111.50"></text></g><g><title>[kernel::context::memory::AddrSpace::munmap_inner] (3 samples, 0.05%)</title><rect x="29.4965%" y="117" width="0.0475%" height="15" fill="rgb(211,146,34)" fg:x="1863" fg:w="3"/><text x="29.7465%" y="127.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (1 samples, 0.02%)</title><rect x="29.5282%" y="101" width="0.0158%" height="15" fill="rgb(228,22,38)" fg:x="1865" fg:w="1"/><text x="29.7782%" y="111.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (1 samples, 0.02%)</title><rect x="29.5282%" y="85" width="0.0158%" height="15" fill="rgb(235,168,5)" fg:x="1865" fg:w="1"/><text x="29.7782%" y="95.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (1 samples, 0.02%)</title><rect x="29.5282%" y="69" width="0.0158%" height="15" fill="rgb(221,155,16)" fg:x="1865" fg:w="1"/><text x="29.7782%" y="79.50"></text></g><g><title>[kernel::syscall::fs::funmap] (4 samples, 0.06%)</title><rect x="29.4965%" y="149" width="0.0633%" height="15" fill="rgb(215,215,53)" fg:x="1863" fg:w="4"/><text x="29.7465%" y="159.50"></text></g><g><title>[kernel::context::memory::AddrSpaceWrapper::munmap] (4 samples, 0.06%)</title><rect x="29.4965%" y="133" width="0.0633%" height="15" fill="rgb(223,4,10)" fg:x="1863" fg:w="4"/><text x="29.7465%" y="143.50"></text></g><g><title>[kernel::context::memory::Flusher::flush] (1 samples, 0.02%)</title><rect x="29.5440%" y="117" width="0.0158%" height="15" fill="rgb(234,103,6)" fg:x="1866" fg:w="1"/><text x="29.7940%" y="127.50"></text></g><g><title>[<kernel::context::memory::AddrSpace as core::ops::drop::Drop>::drop] (2 samples, 0.03%)</title><rect x="29.5598%" y="133" width="0.0317%" height="15" fill="rgb(227,97,0)" fg:x="1867" fg:w="2"/><text x="29.8098%" y="143.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (2 samples, 0.03%)</title><rect x="29.5598%" y="117" width="0.0317%" height="15" fill="rgb(234,150,53)" fg:x="1867" fg:w="2"/><text x="29.8098%" y="127.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (2 samples, 0.03%)</title><rect x="29.5598%" y="101" width="0.0317%" height="15" fill="rgb(228,201,54)" fg:x="1867" fg:w="2"/><text x="29.8098%" y="111.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (1 samples, 0.02%)</title><rect x="29.5757%" y="85" width="0.0158%" height="15" fill="rgb(222,22,37)" fg:x="1868" fg:w="1"/><text x="29.8257%" y="95.50"></text></g><g><title>[kernel::syscall::process::exit] (3 samples, 0.05%)</title><rect x="29.5598%" y="149" width="0.0475%" height="15" fill="rgb(237,53,32)" fg:x="1867" fg:w="3"/><text x="29.8098%" y="159.50"></text></g><g><title>[kernel::context::switch::switch] (1 samples, 0.02%)</title><rect x="29.5915%" y="133" width="0.0158%" height="15" fill="rgb(233,25,53)" fg:x="1869" fg:w="1"/><text x="29.8415%" y="143.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (1 samples, 0.02%)</title><rect x="29.5915%" y="117" width="0.0158%" height="15" fill="rgb(210,40,34)" fg:x="1869" fg:w="1"/><text x="29.8415%" y="127.50"></text></g><g><title>[kernel::syscall::process::kill] (15 samples, 0.24%)</title><rect x="29.6073%" y="149" width="0.2375%" height="15" fill="rgb(241,220,44)" fg:x="1870" fg:w="15"/><text x="29.8573%" y="159.50"></text></g><g><title>[kernel::context::switch::switch] (15 samples, 0.24%)</title><rect x="29.6073%" y="133" width="0.2375%" height="15" fill="rgb(235,28,35)" fg:x="1870" fg:w="15"/><text x="29.8573%" y="143.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (8 samples, 0.13%)</title><rect x="29.7182%" y="117" width="0.1267%" height="15" fill="rgb(210,56,17)" fg:x="1877" fg:w="8"/><text x="29.9682%" y="127.50"></text></g><g><title>[kernel::syscall::process::waitpid] (2 samples, 0.03%)</title><rect x="29.8448%" y="149" width="0.0317%" height="15" fill="rgb(224,130,29)" fg:x="1885" fg:w="2"/><text x="30.0948%" y="159.50"></text></g><g><title>[kernel::sync::wait_condition::WaitCondition::wait] (2 samples, 0.03%)</title><rect x="29.8448%" y="133" width="0.0317%" height="15" fill="rgb(235,212,8)" fg:x="1885" fg:w="2"/><text x="30.0948%" y="143.50"></text></g><g><title>[kernel::context::switch::switch] (2 samples, 0.03%)</title><rect x="29.8448%" y="117" width="0.0317%" height="15" fill="rgb(223,33,50)" fg:x="1885" fg:w="2"/><text x="30.0948%" y="127.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (1 samples, 0.02%)</title><rect x="29.8607%" y="101" width="0.0158%" height="15" fill="rgb(219,149,13)" fg:x="1886" fg:w="1"/><text x="30.1107%" y="111.50"></text></g><g><title>[__inner_syscall_instruction] (1,791 samples, 28.36%)</title><rect x="1.8366%" y="181" width="28.3566%" height="15" fill="rgb(250,156,29)" fg:x="116" fg:w="1791"/><text x="2.0866%" y="191.50">[__inner_syscall_instruction]</text></g><g><title>[kernel::syscall::syscall] (1,791 samples, 28.36%)</title><rect x="1.8366%" y="165" width="28.3566%" height="15" fill="rgb(216,193,19)" fg:x="116" fg:w="1791"/><text x="2.0866%" y="175.50">[kernel::syscall::syscall]</text></g><g><title>[kernel::syscall::time::clock_gettime] (20 samples, 0.32%)</title><rect x="29.8765%" y="149" width="0.3167%" height="15" fill="rgb(216,135,14)" fg:x="1887" fg:w="20"/><text x="30.1265%" y="159.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (15 samples, 0.24%)</title><rect x="29.9557%" y="133" width="0.2375%" height="15" fill="rgb(241,47,5)" fg:x="1892" fg:w="15"/><text x="30.2057%" y="143.50"></text></g><g><title>[kernel::context::memory::Flusher::flush] (1 samples, 0.02%)</title><rect x="30.2565%" y="133" width="0.0158%" height="15" fill="rgb(233,42,35)" fg:x="1911" fg:w="1"/><text x="30.5065%" y="143.50"></text></g><g><title>[memcpy] (1 samples, 0.02%)</title><rect x="30.2565%" y="117" width="0.0158%" height="15" fill="rgb(231,13,6)" fg:x="1911" fg:w="1"/><text x="30.5065%" y="127.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::syscall::syscall_instruction] (1,801 samples, 28.51%)</title><rect x="1.7891%" y="197" width="28.5149%" height="15" fill="rgb(207,181,40)" fg:x="113" fg:w="1801"/><text x="2.0391%" y="207.50">[kernel::arch::x86_64::interrupt::syscall::sys..</text></g><g><title>[kernel::arch::x86_64::interrupt::exception::page] (7 samples, 0.11%)</title><rect x="30.1932%" y="181" width="0.1108%" height="15" fill="rgb(254,173,49)" fg:x="1907" fg:w="7"/><text x="30.4432%" y="191.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::exception::page::inner] (3 samples, 0.05%)</title><rect x="30.2565%" y="165" width="0.0475%" height="15" fill="rgb(221,1,38)" fg:x="1911" fg:w="3"/><text x="30.5065%" y="175.50"></text></g><g><title>[kernel::context::memory::correct_inner] (3 samples, 0.05%)</title><rect x="30.2565%" y="149" width="0.0475%" height="15" fill="rgb(206,124,46)" fg:x="1911" fg:w="3"/><text x="30.5065%" y="159.50"></text></g><g><title>[kernel::memory::init_frame] (2 samples, 0.03%)</title><rect x="30.2723%" y="133" width="0.0317%" height="15" fill="rgb(249,21,11)" fg:x="1912" fg:w="2"/><text x="30.5223%" y="143.50"></text></g><g><title>[kernel::memory::allocate_frames] (2 samples, 0.03%)</title><rect x="30.2723%" y="117" width="0.0317%" height="15" fill="rgb(222,201,40)" fg:x="1912" fg:w="2"/><text x="30.5223%" y="127.50"></text></g><g><title>[memset] (2 samples, 0.03%)</title><rect x="30.2723%" y="101" width="0.0317%" height="15" fill="rgb(235,61,29)" fg:x="1912" fg:w="2"/><text x="30.5223%" y="111.50"></text></g><g><title>[kernel::arch::x86_shared::interrupt::ipi::pit::inner] (2 samples, 0.03%)</title><rect x="30.3040%" y="197" width="0.0317%" height="15" fill="rgb(219,207,3)" fg:x="1914" fg:w="2"/><text x="30.5540%" y="207.50"></text></g><g><title>[kernel::arch::x86_shared::interrupt::ipi::tlb::inner] (6 samples, 0.09%)</title><rect x="30.3357%" y="197" width="0.0950%" height="15" fill="rgb(222,56,46)" fg:x="1916" fg:w="6"/><text x="30.5857%" y="207.50"></text></g><g><title>[kernel::arch::x86_shared::interrupt::ipi::tlb] (4 samples, 0.06%)</title><rect x="30.4307%" y="197" width="0.0633%" height="15" fill="rgb(239,76,54)" fg:x="1922" fg:w="4"/><text x="30.6807%" y="207.50"></text></g><g><title>[kernel::arch::x86_shared::interrupt::ipi::wakeup::inner] (94 samples, 1.49%)</title><rect x="30.4940%" y="197" width="1.4883%" height="15" fill="rgb(231,124,27)" fg:x="1926" fg:w="94"/><text x="30.7440%" y="207.50"></text></g><g><title>[kernel::arch::x86_shared::interrupt::ipi::wakeup] (42 samples, 0.66%)</title><rect x="31.9823%" y="197" width="0.6650%" height="15" fill="rgb(249,195,6)" fg:x="2020" fg:w="42"/><text x="32.2323%" y="207.50"></text></g><g><title>[kernel::arch::x86_shared::interrupt::ipi::wakeup::inner] (7 samples, 0.11%)</title><rect x="32.5364%" y="181" width="0.1108%" height="15" fill="rgb(237,174,47)" fg:x="2055" fg:w="7"/><text x="32.7864%" y="191.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (1,340 samples, 21.22%)</title><rect x="32.6472%" y="197" width="21.2160%" height="15" fill="rgb(206,201,31)" fg:x="2062" fg:w="1340"/><text x="32.8972%" y="207.50">[kernel::arch::x86_shared::time::..</text></g><g><title>[kernel::context::arch::switch_to_inner] (1 samples, 0.02%)</title><rect x="53.8632%" y="197" width="0.0158%" height="15" fill="rgb(231,57,52)" fg:x="3402" fg:w="1"/><text x="54.1132%" y="207.50"></text></g><g><title>[kernel::context::switch::switch] (2,902 samples, 45.95%)</title><rect x="53.8790%" y="197" width="45.9468%" height="15" fill="rgb(248,177,22)" fg:x="3403" fg:w="2902"/><text x="54.1290%" y="207.50">[kernel::context::switch::switch]</text></g><g><title>[kernel::context::switch::switch_finish_hook] (10 samples, 0.16%)</title><rect x="99.8258%" y="197" width="0.1583%" height="15" fill="rgb(215,211,37)" fg:x="6305" fg:w="10"/><text x="100.0758%" y="207.50"></text></g><g><title>all (6,316 samples, 100%)</title><rect x="0.0000%" y="229" width="100.0000%" height="15" fill="rgb(241,128,51)" fg:x="0" fg:w="6316"/><text x="0.2500%" y="239.50"></text></g><g><title>kernel (6,316 samples, 100.00%)</title><rect x="0.0000%" y="213" width="100.0000%" height="15" fill="rgb(227,165,31)" fg:x="0" fg:w="6316"/><text x="0.2500%" y="223.50">kernel</text></g><g><title>[kernel::run_userspace] (1 samples, 0.02%)</title><rect x="99.9842%" y="197" width="0.0158%" height="15" fill="rgb(228,167,24)" fg:x="6315" fg:w="1"/><text x="100.2342%" y="207.50"></text></g></svg></svg> diff --git a/static/img/flamegraphs/boot-and-netsurf-before.svg b/static/img/flamegraphs/boot-and-netsurf-before.svg new file mode 100644 index 00000000..3746e404 --- /dev/null +++ b/static/img/flamegraphs/boot-and-netsurf-before.svg @@ -0,0 +1,491 @@ +<?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="278" onload="init(evt)" viewBox="0 0 1200 278" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:fg="http://github.com/jonhoo/inferno"><!--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:monospace; font-size:12px } +#title { text-anchor:middle; font-size:17px; } +#matched { text-anchor:end; } +#search { text-anchor:end; opacity:0.1; cursor:pointer; } +#search:hover, #search.show { opacity:1; } +#subtitle { text-anchor:middle; font-color:rgb(160,160,160); } +#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[ + var nametype = 'Function:'; + var fontsize = 12; + var fontwidth = 0.59; + var xpad = 10; + var inverted = false; + var searchcolor = 'rgb(230,0,230)'; + var fluiddrawing = true; + var truncate_text_right = false; + ]]><![CDATA["use strict"; +var details, searchbtn, unzoombtn, matchedtxt, svg, searching, frames, known_font_width; +function init(evt) { + details = document.getElementById("details").firstChild; + searchbtn = document.getElementById("search"); + unzoombtn = document.getElementById("unzoom"); + matchedtxt = document.getElementById("matched"); + svg = document.getElementsByTagName("svg")[0]; + frames = document.getElementById("frames"); + known_font_width = get_monospace_width(frames); + total_samples = parseInt(frames.attributes.total_samples.value); + searching = 0; + + // Use GET parameters to restore a flamegraph's state. + var restore_state = function() { + 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); + }; + + if (fluiddrawing) { + // Make width dynamic so the SVG fits its parent's width. + svg.removeAttribute("width"); + // Edge requires us to have a viewBox that gets updated with size changes. + var isEdge = /Edge\/\d./i.test(navigator.userAgent); + if (!isEdge) { + svg.removeAttribute("viewBox"); + } + var update_for_width_change = function() { + if (isEdge) { + svg.attributes.viewBox.value = "0 0 " + svg.width.baseVal.value + " " + svg.height.baseVal.value; + } + + // Keep consistent padding on left and right of frames container. + frames.attributes.width.value = svg.width.baseVal.value - xpad * 2; + + // Text truncation needs to be adjusted for the current width. + update_text_for_elements(frames.children); + + // Keep search elements at a fixed distance from right edge. + var svgWidth = svg.width.baseVal.value; + searchbtn.attributes.x.value = svgWidth - xpad; + matchedtxt.attributes.x.value = svgWidth - xpad; + }; + window.addEventListener('resize', function() { + update_for_width_change(); + }); + // This needs to be done asynchronously for Safari to work. + setTimeout(function() { + unzoom(); + update_for_width_change(); + restore_state(); + }, 0); + } else { + restore_state(); + } +} +// 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(); + zoom(target); + + // set parameters for zoom state + var el = target.querySelector("rect"); + if (el && el.attributes && el.attributes.y && el.attributes["fg:x"]) { + var params = get_params() + params.x = el.attributes["fg:x"].value; + params.y = el.attributes.y.value; + history.replaceState(null, null, parse_params(params)); + } + } + else if (e.target.id == "unzoom") { + 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)); + } + else if (e.target.id == "search") search_prompt(); +}, false) +// mouse-over for info +// show +window.addEventListener("mouseover", function(e) { + var target = find_group(e.target); + if (target) details.nodeValue = nametype + " " + 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 +window.addEventListener("keydown",function (e) { + if (e.keyCode === 114 || (e.ctrlKey && e.keyCode === 70)) { + e.preventDefault(); + search_prompt(); + } +}, 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]; + return; +} +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["fg:orig_" + attr] != undefined) return; + if (e.attributes[attr] == undefined) return; + if (val == undefined) val = e.attributes[attr].value; + e.setAttribute("fg:orig_" + attr, val); +} +function orig_load(e, attr) { + if (e.attributes["fg:orig_"+attr] == undefined) return; + e.attributes[attr].value = e.attributes["fg:orig_" + attr].value; + e.removeAttribute("fg: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 get_monospace_width(frames) { + // Given the id="frames" element, return the width of text characters if + // this is a monospace font, otherwise return 0. + text = find_child(frames.children[0], "text"); + originalContent = text.textContent; + text.textContent = "!"; + bangWidth = text.getComputedTextLength(); + text.textContent = "W"; + wWidth = text.getComputedTextLength(); + text.textContent = originalContent; + if (bangWidth === wWidth) { + return bangWidth; + } else { + return 0; + } +} +function update_text_for_elements(elements) { + // In order to render quickly in the browser, you want to do one pass of + // reading attributes, and one pass of mutating attributes. See + // https://web.dev/avoid-large-complex-layouts-and-layout-thrashing/ for details. + + // Fall back to inefficient calculation, if we're variable-width font. + // TODO This should be optimized somehow too. + if (known_font_width === 0) { + for (var i = 0; i < elements.length; i++) { + update_text(elements[i]); + } + return; + } + + var textElemNewAttributes = []; + for (var i = 0; i < elements.length; i++) { + var e = elements[i]; + var r = find_child(e, "rect"); + var t = find_child(e, "text"); + var w = parseFloat(r.attributes.width.value) * frames.attributes.width.value / 100 - 3; + var txt = find_child(e, "title").textContent.replace(/\([^(]*\)$/,""); + var newX = format_percent((parseFloat(r.attributes.x.value) + (100 * 3 / frames.attributes.width.value))); + + // Smaller than this size won't fit anything + if (w < 2 * known_font_width) { + textElemNewAttributes.push([newX, ""]); + continue; + } + + // Fit in full text width + if (txt.length * known_font_width < w) { + textElemNewAttributes.push([newX, txt]); + continue; + } + + var substringLength = Math.floor(w / known_font_width) - 2; + if (truncate_text_right) { + // Truncate the right side of the text. + textElemNewAttributes.push([newX, txt.substring(0, substringLength) + ".."]); + continue; + } else { + // Truncate the left side of the text. + textElemNewAttributes.push([newX, ".." + txt.substring(txt.length - substringLength, txt.length)]); + continue; + } + } + + console.assert(textElemNewAttributes.length === elements.length, "Resize failed, please file a bug at https://github.com/jonhoo/inferno/"); + + // Now that we know new textContent, set it all in one go so we don't refresh a bazillion times. + for (var i = 0; i < elements.length; i++) { + var e = elements[i]; + var values = textElemNewAttributes[i]; + var t = find_child(e, "text"); + t.attributes.x.value = values[0]; + t.textContent = values[1]; + } +} + +function update_text(e) { + var r = find_child(e, "rect"); + var t = find_child(e, "text"); + var w = parseFloat(r.attributes.width.value) * frames.attributes.width.value / 100 - 3; + var txt = find_child(e, "title").textContent.replace(/\([^(]*\)$/,""); + t.attributes.x.value = format_percent((parseFloat(r.attributes.x.value) + (100 * 3 / frames.attributes.width.value))); + + // Smaller than this size won't fit anything + if (w < 2 * fontsize * fontwidth) { + t.textContent = ""; + return; + } + t.textContent = txt; + // Fit in full text width + if (t.getComputedTextLength() < w) + return; + if (truncate_text_right) { + // Truncate the right side of the text. + for (var x = txt.length - 2; x > 0; x--) { + if (t.getSubStringLength(0, x + 2) <= w) { + t.textContent = txt.substring(0, x) + ".."; + return; + } + } + } else { + // Truncate the left side of the text. + for (var x = 2; x < txt.length; x++) { + if (t.getSubStringLength(x - 2, txt.length) <= w) { + t.textContent = ".." + txt.substring(x, txt.length); + return; + } + } + } + t.textContent = ""; +} +// zoom +function zoom_reset(e) { + if (e.tagName == "rect") { + e.attributes.x.value = format_percent(100 * parseInt(e.attributes["fg:x"].value) / total_samples); + e.attributes.width.value = format_percent(100 * parseInt(e.attributes["fg:w"].value) / total_samples); + } + 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, zoomed_width_samples) { + if (e.tagName == "text") { + var parent_x = parseFloat(find_child(e.parentNode, "rect[x]").attributes.x.value); + e.attributes.x.value = format_percent(parent_x + (100 * 3 / frames.attributes.width.value)); + } else if (e.tagName == "rect") { + e.attributes.x.value = format_percent(100 * (parseInt(e.attributes["fg:x"].value) - x) / zoomed_width_samples); + e.attributes.width.value = format_percent(100 * parseInt(e.attributes["fg:w"].value) / zoomed_width_samples); + } + if (e.childNodes == undefined) return; + for(var i = 0, c = e.childNodes; i < c.length; i++) { + zoom_child(c[i], x, zoomed_width_samples); + } +} +function zoom_parent(e) { + if (e.attributes) { + if (e.attributes.x != undefined) { + e.attributes.x.value = "0.0%"; + } + if (e.attributes.width != undefined) { + e.attributes.width.value = "100.0%"; + } + } + 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 = parseInt(attr["fg:w"].value); + var xmin = parseInt(attr["fg:x"].value); + var xmax = xmin + width; + var ymin = parseFloat(attr.y.value); + unzoombtn.classList.remove("hide"); + var el = frames.children; + var to_update_text = []; + for (var i = 0; i < el.length; i++) { + var e = el[i]; + var a = find_child(e, "rect").attributes; + var ex = parseInt(a["fg:x"].value); + var ew = parseInt(a["fg:w"].value); + // Is it an ancestor + if (!inverted) { + var upstack = parseFloat(a.y.value) > ymin; + } else { + var upstack = parseFloat(a.y.value) < ymin; + } + if (upstack) { + // Direct ancestor + if (ex <= xmin && (ex+ew) >= xmax) { + e.classList.add("parent"); + zoom_parent(e); + to_update_text.push(e); + } + // not in current path + else + e.classList.add("hide"); + } + // Children maybe + else { + // no common path + if (ex < xmin || ex >= xmax) { + e.classList.add("hide"); + } + else { + zoom_child(e, xmin, width); + to_update_text.push(e); + } + } + } + update_text_for_elements(to_update_text); +} +function unzoom() { + unzoombtn.classList.add("hide"); + var el = frames.children; + for(var i = 0; i < el.length; i++) { + el[i].classList.remove("parent"); + el[i].classList.remove("hide"); + zoom_reset(el[i]); + } + update_text_for_elements(el); +} +// 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_)", ""); + if (term != null) { + search(term) + } + } else { + reset_search(); + searching = 0; + searchbtn.classList.remove("show"); + searchbtn.firstChild.nodeValue = "Search" + matchedtxt.classList.add("hide"); + matchedtxt.firstChild.nodeValue = "" + } +} +function search(term) { + var re = new RegExp(term); + var el = frames.children; + var matches = new Object(); + var maxwidth = 0; + for (var i = 0; i < el.length; i++) { + var e = el[i]; + // Skip over frames which are either not visible, or below the zoomed-to frame + if (e.classList.contains("hide") || e.classList.contains("parent")) { + continue; + } + 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 = parseInt(rect.attributes["fg:w"].value); + if (w > maxwidth) + maxwidth = w; + if (func.match(re)) { + // highlight + var x = parseInt(rect.attributes["fg:x"].value); + orig_save(rect, "fill"); + rect.attributes.fill.value = searchcolor; + // 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 = term; + 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. + for (var k in keys) { + var x = parseInt(keys[k]); + var w = matches[keys[k]]; + if (x >= lastx + lastw) { + 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 + "%"; +} +function format_percent(n) { + return n.toFixed(4) + "%"; +} +]]></script><rect x="0" y="0" width="100%" height="278" fill="url(#background)"/><text id="title" fill="rgb(0,0,0)" x="50.0000%" y="24.00">Flame Graph</text><text id="details" fill="rgb(0,0,0)" x="10" y="261.00"> </text><text id="unzoom" class="hide" fill="rgb(0,0,0)" x="10" y="24.00">Reset Zoom</text><text id="search" fill="rgb(0,0,0)" x="1190" y="24.00">Search</text><text id="matched" fill="rgb(0,0,0)" x="1190" y="261.00"> </text><svg id="frames" x="10" width="1180" total_samples="81183"><g><title>[<alloc::collections::btree::map::Range<K,V> as core::iter::traits::iterator::Iterator>::next+126] (12 samples, 0.01%)</title><rect x="0.0062%" y="197" width="0.0148%" height="15" fill="rgb(227,0,7)" fg:x="5" fg:w="12"/><text x="0.2562%" y="207.50"></text></g><g><title>[<alloc::collections::btree::map::Range<K,V> as core::iter::traits::iterator::Iterator>::next+12b] (12 samples, 0.01%)</title><rect x="0.0209%" y="197" width="0.0148%" height="15" fill="rgb(217,0,24)" fg:x="17" fg:w="12"/><text x="0.2709%" y="207.50"></text></g><g><title>[<alloc::collections::btree::map::Range<K,V> as core::iter::traits::iterator::Iterator>::next+4a] (22 samples, 0.03%)</title><rect x="0.0480%" y="197" width="0.0271%" height="15" fill="rgb(221,193,54)" fg:x="39" fg:w="22"/><text x="0.2980%" y="207.50"></text></g><g><title>[<alloc::collections::btree::map::Range<K,V> as core::iter::traits::iterator::Iterator>::next+7] (22 samples, 0.03%)</title><rect x="0.0825%" y="197" width="0.0271%" height="15" fill="rgb(248,212,6)" fg:x="67" fg:w="22"/><text x="0.3325%" y="207.50"></text></g><g><title>[<alloc::collections::btree::map::Range<K,V> as core::iter::traits::iterator::Iterator>::next+b] (15 samples, 0.02%)</title><rect x="0.1207%" y="197" width="0.0185%" height="15" fill="rgb(208,68,35)" fg:x="98" fg:w="15"/><text x="0.3707%" y="207.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+b7] (41 samples, 0.05%)</title><rect x="0.1490%" y="197" width="0.0505%" height="15" fill="rgb(232,128,0)" fg:x="121" fg:w="41"/><text x="0.3990%" y="207.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+c9] (42 samples, 0.05%)</title><rect x="0.1995%" y="197" width="0.0517%" height="15" fill="rgb(207,160,47)" fg:x="162" fg:w="42"/><text x="0.4495%" y="207.50"></text></g><g><title>[kernel::ptrace::set_process_regs+12] (11 samples, 0.01%)</title><rect x="0.2636%" y="165" width="0.0135%" height="15" fill="rgb(228,23,34)" fg:x="214" fg:w="11"/><text x="0.5136%" y="175.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::exception::page::inner+33] (23 samples, 0.03%)</title><rect x="0.2636%" y="181" width="0.0283%" height="15" fill="rgb(218,30,26)" fg:x="214" fg:w="23"/><text x="0.5136%" y="191.50"></text></g><g><title>[<kernel::ptrace::ProcessRegsGuard as core::ops::drop::Drop>::drop+29] (13 samples, 0.02%)</title><rect x="0.2993%" y="165" width="0.0160%" height="15" fill="rgb(220,122,19)" fg:x="243" fg:w="13"/><text x="0.5493%" y="175.50"></text></g><g><title>[<kernel::ptrace::ProcessRegsGuard as core::ops::drop::Drop>::drop+2b] (19 samples, 0.02%)</title><rect x="0.3153%" y="165" width="0.0234%" height="15" fill="rgb(250,228,42)" fg:x="256" fg:w="19"/><text x="0.5653%" y="175.50"></text></g><g><title>[<kernel::ptrace::ProcessRegsGuard as core::ops::drop::Drop>::drop+39] (32 samples, 0.04%)</title><rect x="0.3387%" y="165" width="0.0394%" height="15" fill="rgb(240,193,28)" fg:x="275" fg:w="32"/><text x="0.5887%" y="175.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::exception::page::inner+43a] (84 samples, 0.10%)</title><rect x="0.2919%" y="181" width="0.1035%" height="15" fill="rgb(216,20,37)" fg:x="237" fg:w="84"/><text x="0.5419%" y="191.50"></text></g><g><title>[kernel::context::memory::correct_inner+2b0] (11 samples, 0.01%)</title><rect x="0.3979%" y="165" width="0.0135%" height="15" fill="rgb(206,188,39)" fg:x="323" fg:w="11"/><text x="0.6479%" y="175.50"></text></g><g><title>[kernel::context::memory::init_frame+3d] (417 samples, 0.51%)</title><rect x="0.4126%" y="133" width="0.5137%" height="15" fill="rgb(217,207,13)" fg:x="335" fg:w="417"/><text x="0.6626%" y="143.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+a0] (253 samples, 0.31%)</title><rect x="0.9374%" y="117" width="0.3116%" height="15" fill="rgb(231,73,38)" fg:x="761" fg:w="253"/><text x="1.1874%" y="127.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+b7] (199 samples, 0.25%)</title><rect x="1.2515%" y="117" width="0.2451%" height="15" fill="rgb(225,20,46)" fg:x="1016" fg:w="199"/><text x="1.5015%" y="127.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+bc] (246 samples, 0.30%)</title><rect x="1.4966%" y="117" width="0.3030%" height="15" fill="rgb(210,31,41)" fg:x="1215" fg:w="246"/><text x="1.7466%" y="127.50"></text></g><g><title>[kernel::context::memory::init_frame+5e] (1,412 samples, 1.74%)</title><rect x="0.9300%" y="133" width="1.7393%" height="15" fill="rgb(221,200,47)" fg:x="755" fg:w="1412"/><text x="1.1800%" y="143.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+c9] (706 samples, 0.87%)</title><rect x="1.7996%" y="117" width="0.8696%" height="15" fill="rgb(226,26,5)" fg:x="1461" fg:w="706"/><text x="2.0496%" y="127.50"></text></g><g><title>[kernel::context::memory::cow+81] (1,834 samples, 2.26%)</title><rect x="0.4126%" y="149" width="2.2591%" height="15" fill="rgb(249,33,26)" fg:x="335" fg:w="1834"/><text x="0.6626%" y="159.50">[..</text></g><g><title>[kernel::context::memory::correct_inner+34c] (1,837 samples, 2.26%)</title><rect x="0.4126%" y="165" width="2.2628%" height="15" fill="rgb(235,183,28)" fg:x="335" fg:w="1837"/><text x="0.6626%" y="175.50">[..</text></g><g><title>[kernel::context::memory::init_frame+3d] (383 samples, 0.47%)</title><rect x="2.6988%" y="149" width="0.4718%" height="15" fill="rgb(221,5,38)" fg:x="2191" fg:w="383"/><text x="2.9488%" y="159.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+15d] (9 samples, 0.01%)</title><rect x="3.1743%" y="133" width="0.0111%" height="15" fill="rgb(247,18,42)" fg:x="2577" fg:w="9"/><text x="3.4243%" y="143.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+a0] (557 samples, 0.69%)</title><rect x="3.1879%" y="133" width="0.6861%" height="15" fill="rgb(241,131,45)" fg:x="2588" fg:w="557"/><text x="3.4379%" y="143.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+b7] (194 samples, 0.24%)</title><rect x="3.8752%" y="133" width="0.2390%" height="15" fill="rgb(249,31,29)" fg:x="3146" fg:w="194"/><text x="4.1252%" y="143.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+bc] (591 samples, 0.73%)</title><rect x="4.1142%" y="133" width="0.7280%" height="15" fill="rgb(225,111,53)" fg:x="3340" fg:w="591"/><text x="4.3642%" y="143.50"></text></g><g><title>[kernel::context::memory::init_frame+5e] (2,637 samples, 3.25%)</title><rect x="3.1743%" y="149" width="3.2482%" height="15" fill="rgb(238,160,17)" fg:x="2577" fg:w="2637"/><text x="3.4243%" y="159.50">[ke..</text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+c9] (1,282 samples, 1.58%)</title><rect x="4.8434%" y="133" width="1.5791%" height="15" fill="rgb(214,148,48)" fg:x="3932" fg:w="1282"/><text x="5.0934%" y="143.50"></text></g><g><title>[kernel::context::memory::correct_inner+6f5] (3,024 samples, 3.72%)</title><rect x="2.6988%" y="165" width="3.7249%" height="15" fill="rgb(232,36,49)" fg:x="2191" fg:w="3024"/><text x="2.9488%" y="175.50">[ker..</text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+b7] (13 samples, 0.02%)</title><rect x="6.4558%" y="117" width="0.0160%" height="15" fill="rgb(209,103,24)" fg:x="5241" fg:w="13"/><text x="6.7058%" y="127.50"></text></g><g><title>[kernel::context::memory::correct_inner+6f5] (33 samples, 0.04%)</title><rect x="6.4496%" y="149" width="0.0406%" height="15" fill="rgb(229,88,8)" fg:x="5236" fg:w="33"/><text x="6.6996%" y="159.50"></text></g><g><title>[kernel::context::memory::init_frame+5e] (28 samples, 0.03%)</title><rect x="6.4558%" y="133" width="0.0345%" height="15" fill="rgb(213,181,19)" fg:x="5241" fg:w="28"/><text x="6.7058%" y="143.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+c9] (15 samples, 0.02%)</title><rect x="6.4718%" y="117" width="0.0185%" height="15" fill="rgb(254,191,54)" fg:x="5254" fg:w="15"/><text x="6.7218%" y="127.50"></text></g><g><title>[kernel::context::memory::init_frame+3d] (3,394 samples, 4.18%)</title><rect x="6.5001%" y="117" width="4.1807%" height="15" fill="rgb(241,83,37)" fg:x="5277" fg:w="3394"/><text x="6.7501%" y="127.50">[kern..</text></g><g><title>[kernel::context::memory::init_frame+44] (50 samples, 0.06%)</title><rect x="10.6808%" y="117" width="0.0616%" height="15" fill="rgb(233,36,39)" fg:x="8671" fg:w="50"/><text x="10.9308%" y="127.50"></text></g><g><title>[memset+50] (65 samples, 0.08%)</title><rect x="10.7461%" y="85" width="0.0801%" height="15" fill="rgb(226,3,54)" fg:x="8724" fg:w="65"/><text x="10.9961%" y="95.50"></text></g><g><title>[memset+54] (34 samples, 0.04%)</title><rect x="10.8262%" y="85" width="0.0419%" height="15" fill="rgb(245,192,40)" fg:x="8789" fg:w="34"/><text x="11.0762%" y="95.50"></text></g><g><title>[memset+6d] (28 samples, 0.03%)</title><rect x="10.8853%" y="85" width="0.0345%" height="15" fill="rgb(238,167,29)" fg:x="8837" fg:w="28"/><text x="11.1353%" y="95.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+15d] (147 samples, 0.18%)</title><rect x="10.7461%" y="101" width="0.1811%" height="15" fill="rgb(232,182,51)" fg:x="8724" fg:w="147"/><text x="10.9961%" y="111.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+a0] (11 samples, 0.01%)</title><rect x="10.9321%" y="101" width="0.0135%" height="15" fill="rgb(231,60,39)" fg:x="8875" fg:w="11"/><text x="11.1821%" y="111.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+ad] (48 samples, 0.06%)</title><rect x="10.9555%" y="101" width="0.0591%" height="15" fill="rgb(208,69,12)" fg:x="8894" fg:w="48"/><text x="11.2055%" y="111.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+b3] (10 samples, 0.01%)</title><rect x="11.0159%" y="101" width="0.0123%" height="15" fill="rgb(235,93,37)" fg:x="8943" fg:w="10"/><text x="11.2659%" y="111.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+b7] (14,986 samples, 18.46%)</title><rect x="11.0282%" y="101" width="18.4595%" height="15" fill="rgb(213,116,39)" fg:x="8953" fg:w="14986"/><text x="11.2782%" y="111.50">[<rmm::allocator::frame::budd..</text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+c9] (16,034 samples, 19.75%)</title><rect x="29.5037%" y="101" width="19.7504%" height="15" fill="rgb(222,207,29)" fg:x="23952" fg:w="16034"/><text x="29.7537%" y="111.50">[<rmm::allocator::frame::buddy:..</text></g><g><title>[kernel::context::memory::init_frame+5e] (31,269 samples, 38.52%)</title><rect x="10.7436%" y="117" width="38.5167%" height="15" fill="rgb(206,96,30)" fg:x="8722" fg:w="31269"/><text x="10.9936%" y="127.50">[kernel::context::memory::init_frame+5e]</text></g><g><title>[kernel::context::memory::init_frame+87] (9 samples, 0.01%)</title><rect x="49.2615%" y="117" width="0.0111%" height="15" fill="rgb(218,138,4)" fg:x="39992" fg:w="9"/><text x="49.5115%" y="127.50"></text></g><g><title>[kernel::context::memory::correct_inner+6f5] (34,732 samples, 42.78%)</title><rect x="6.4964%" y="133" width="42.7824%" height="15" fill="rgb(250,191,14)" fg:x="5274" fg:w="34732"/><text x="6.7464%" y="143.50">[kernel::context::memory::correct_inner+6f5]</text></g><g><title>[kernel::context::memory::correct_inner+b03] (34,740 samples, 42.79%)</title><rect x="6.4927%" y="149" width="42.7922%" height="15" fill="rgb(239,60,40)" fg:x="5271" fg:w="34740"/><text x="6.7427%" y="159.50">[kernel::context::memory::correct_inner+b03]</text></g><g><title>[kernel::context::memory::init_frame+3d] (891 samples, 1.10%)</title><rect x="49.2911%" y="117" width="1.0975%" height="15" fill="rgb(206,27,48)" fg:x="40016" fg:w="891"/><text x="49.5411%" y="127.50"></text></g><g><title>[kernel::context::memory::init_frame+44] (15 samples, 0.02%)</title><rect x="50.3886%" y="117" width="0.0185%" height="15" fill="rgb(225,35,8)" fg:x="40907" fg:w="15"/><text x="50.6386%" y="127.50"></text></g><g><title>[memset+50] (9 samples, 0.01%)</title><rect x="50.4071%" y="85" width="0.0111%" height="15" fill="rgb(250,213,24)" fg:x="40922" fg:w="9"/><text x="50.6571%" y="95.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+15d] (18 samples, 0.02%)</title><rect x="50.4071%" y="101" width="0.0222%" height="15" fill="rgb(247,123,22)" fg:x="40922" fg:w="18"/><text x="50.6571%" y="111.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+b7] (1,306 samples, 1.61%)</title><rect x="50.4441%" y="101" width="1.6087%" height="15" fill="rgb(231,138,38)" fg:x="40952" fg:w="1306"/><text x="50.6941%" y="111.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+c9] (1,317 samples, 1.62%)</title><rect x="52.0552%" y="101" width="1.6223%" height="15" fill="rgb(231,145,46)" fg:x="42260" fg:w="1317"/><text x="52.3052%" y="111.50"></text></g><g><title>[kernel::context::memory::init_frame+5e] (2,656 samples, 3.27%)</title><rect x="50.4071%" y="117" width="3.2716%" height="15" fill="rgb(251,118,11)" fg:x="40922" fg:w="2656"/><text x="50.6571%" y="127.50">[ke..</text></g><g><title>[kernel::context::memory::correct_inner+bd4] (3,564 samples, 4.39%)</title><rect x="49.2911%" y="149" width="4.3901%" height="15" fill="rgb(217,147,25)" fg:x="40016" fg:w="3564"/><text x="49.5411%" y="159.50">[kern..</text></g><g><title>[kernel::context::memory::cow+81] (3,564 samples, 4.39%)</title><rect x="49.2911%" y="133" width="4.3901%" height="15" fill="rgb(247,81,37)" fg:x="40016" fg:w="3564"/><text x="49.5411%" y="143.50">[kern..</text></g><g><title>[kernel::context::memory::correct_inner+b03] (38,364 samples, 47.26%)</title><rect x="6.4311%" y="165" width="47.2562%" height="15" fill="rgb(209,12,38)" fg:x="5221" fg:w="38364"/><text x="6.6811%" y="175.50">[kernel::context::memory::correct_inner+b03]</text></g><g><title>[kernel::context::memory::init_frame+3d] (14 samples, 0.02%)</title><rect x="53.6910%" y="133" width="0.0172%" height="15" fill="rgb(227,1,9)" fg:x="43588" fg:w="14"/><text x="53.9410%" y="143.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+b7] (28 samples, 0.03%)</title><rect x="53.7095%" y="117" width="0.0345%" height="15" fill="rgb(248,47,43)" fg:x="43603" fg:w="28"/><text x="53.9595%" y="127.50"></text></g><g><title>[kernel::context::memory::correct_inner+bd4] (76 samples, 0.09%)</title><rect x="53.6910%" y="165" width="0.0936%" height="15" fill="rgb(221,10,30)" fg:x="43588" fg:w="76"/><text x="53.9410%" y="175.50"></text></g><g><title>[kernel::context::memory::cow+81] (76 samples, 0.09%)</title><rect x="53.6910%" y="149" width="0.0936%" height="15" fill="rgb(210,229,1)" fg:x="43588" fg:w="76"/><text x="53.9410%" y="159.50"></text></g><g><title>[kernel::context::memory::init_frame+5e] (62 samples, 0.08%)</title><rect x="53.7083%" y="133" width="0.0764%" height="15" fill="rgb(222,148,37)" fg:x="43602" fg:w="62"/><text x="53.9583%" y="143.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+c9] (31 samples, 0.04%)</title><rect x="53.7465%" y="117" width="0.0382%" height="15" fill="rgb(234,67,33)" fg:x="43633" fg:w="31"/><text x="53.9965%" y="127.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::exception::page::inner+4ad] (43,354 samples, 53.40%)</title><rect x="0.3979%" y="181" width="53.4028%" height="15" fill="rgb(247,98,35)" fg:x="323" fg:w="43354"/><text x="0.6479%" y="191.50">[kernel::arch::x86_64::interrupt::exception::page::inner+4ad]</text></g><g><title>[kernel::arch::x86_64::interrupt::exception::page::inner+4cd] (11 samples, 0.01%)</title><rect x="53.8019%" y="181" width="0.0135%" height="15" fill="rgb(247,138,52)" fg:x="43678" fg:w="11"/><text x="54.0519%" y="191.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::exception::page+37] (43,486 samples, 53.57%)</title><rect x="0.2636%" y="197" width="53.5654%" height="15" fill="rgb(213,79,30)" fg:x="214" fg:w="43486"/><text x="0.5136%" y="207.50">[kernel::arch::x86_64::interrupt::exception::page+37]</text></g><g><title>[kernel::arch::x86_64::interrupt::exception::protection+60] (45 samples, 0.06%)</title><rect x="53.8327%" y="197" width="0.0554%" height="15" fill="rgb(246,177,23)" fg:x="43703" fg:w="45"/><text x="54.0827%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::ipi::pit::inner+18] (14 samples, 0.02%)</title><rect x="53.8881%" y="181" width="0.0172%" height="15" fill="rgb(230,62,27)" fg:x="43748" fg:w="14"/><text x="54.1381%" y="191.50"></text></g><g><title>[kernel::context::switch::switch+42] (50 samples, 0.06%)</title><rect x="53.9054%" y="181" width="0.0616%" height="15" fill="rgb(216,154,8)" fg:x="43762" fg:w="50"/><text x="54.1554%" y="191.50"></text></g><g><title>[kernel::context::switch::switch+4c] (22 samples, 0.03%)</title><rect x="53.9682%" y="181" width="0.0271%" height="15" fill="rgb(244,35,45)" fg:x="43813" fg:w="22"/><text x="54.2182%" y="191.50"></text></g><g><title>[kernel::context::switch::switch+ef] (10 samples, 0.01%)</title><rect x="53.9990%" y="181" width="0.0123%" height="15" fill="rgb(251,115,12)" fg:x="43838" fg:w="10"/><text x="54.2490%" y="191.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::ipi::pit+21] (113 samples, 0.14%)</title><rect x="53.8881%" y="197" width="0.1392%" height="15" fill="rgb(240,54,50)" fg:x="43748" fg:w="113"/><text x="54.1381%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::ipi::tlb::inner+18] (80 samples, 0.10%)</title><rect x="54.0347%" y="181" width="0.0985%" height="15" fill="rgb(233,84,52)" fg:x="43867" fg:w="80"/><text x="54.2847%" y="191.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::ipi::tlb+21] (81 samples, 0.10%)</title><rect x="54.0347%" y="197" width="0.0998%" height="15" fill="rgb(207,117,47)" fg:x="43867" fg:w="81"/><text x="54.2847%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::ipi::tlb::inner+18] (107 samples, 0.13%)</title><rect x="54.1369%" y="197" width="0.1318%" height="15" fill="rgb(249,43,39)" fg:x="43950" fg:w="107"/><text x="54.3869%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::ipi::wakeup::inner+18] (79 samples, 0.10%)</title><rect x="54.2774%" y="181" width="0.0973%" height="15" fill="rgb(209,38,44)" fg:x="44064" fg:w="79"/><text x="54.5274%" y="191.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::ipi::wakeup+21] (80 samples, 0.10%)</title><rect x="54.2774%" y="197" width="0.0985%" height="15" fill="rgb(236,212,23)" fg:x="44064" fg:w="80"/><text x="54.5274%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::ipi::wakeup::inner+18] (166 samples, 0.20%)</title><rect x="54.3808%" y="197" width="0.2045%" height="15" fill="rgb(242,79,21)" fg:x="44148" fg:w="166"/><text x="54.6308%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::ipi::wakeup::inner+30] (60 samples, 0.07%)</title><rect x="54.5853%" y="197" width="0.0739%" height="15" fill="rgb(211,96,35)" fg:x="44314" fg:w="60"/><text x="54.8353%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::mouse::inner+14] (11 samples, 0.01%)</title><rect x="54.6715%" y="181" width="0.0135%" height="15" fill="rgb(253,215,40)" fg:x="44384" fg:w="11"/><text x="54.9215%" y="191.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::mouse::inner+6] (100 samples, 0.12%)</title><rect x="54.6851%" y="181" width="0.1232%" height="15" fill="rgb(211,81,21)" fg:x="44395" fg:w="100"/><text x="54.9351%" y="191.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::mouse::inner+f] (9 samples, 0.01%)</title><rect x="54.8083%" y="181" width="0.0111%" height="15" fill="rgb(208,190,38)" fg:x="44495" fg:w="9"/><text x="55.0583%" y="191.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::mouse+21] (128 samples, 0.16%)</title><rect x="54.6715%" y="197" width="0.1577%" height="15" fill="rgb(235,213,38)" fg:x="44384" fg:w="128"/><text x="54.9215%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::mouse::inner+14] (43 samples, 0.05%)</title><rect x="54.8292%" y="197" width="0.0530%" height="15" fill="rgb(237,122,38)" fg:x="44512" fg:w="43"/><text x="55.0792%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::mouse::inner+6] (428 samples, 0.53%)</title><rect x="54.8822%" y="197" width="0.5272%" height="15" fill="rgb(244,218,35)" fg:x="44555" fg:w="428"/><text x="55.1322%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::mouse::inner+f] (61 samples, 0.08%)</title><rect x="55.4094%" y="197" width="0.0751%" height="15" fill="rgb(240,68,47)" fg:x="44983" fg:w="61"/><text x="55.6594%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pci1::inner+30] (34 samples, 0.04%)</title><rect x="55.4845%" y="197" width="0.0419%" height="15" fill="rgb(210,16,53)" fg:x="45044" fg:w="34"/><text x="55.7345%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pci2::inner+16] (14 samples, 0.02%)</title><rect x="55.5264%" y="181" width="0.0172%" height="15" fill="rgb(235,124,12)" fg:x="45078" fg:w="14"/><text x="55.7764%" y="191.50"></text></g><g><title>[irq_trigger+37a] (14 samples, 0.02%)</title><rect x="55.5264%" y="165" width="0.0172%" height="15" fill="rgb(224,169,11)" fg:x="45078" fg:w="14"/><text x="55.7764%" y="175.50"></text></g><g><title>[kernel::event::trigger+261] (14 samples, 0.02%)</title><rect x="55.5264%" y="149" width="0.0172%" height="15" fill="rgb(250,166,2)" fg:x="45078" fg:w="14"/><text x="55.7764%" y="159.50"></text></g><g><title>[kernel::sync::wait_condition::WaitCondition::notify+ed] (12 samples, 0.01%)</title><rect x="55.5289%" y="133" width="0.0148%" height="15" fill="rgb(242,216,29)" fg:x="45080" fg:w="12"/><text x="55.7789%" y="143.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pci2+21] (25 samples, 0.03%)</title><rect x="55.5264%" y="197" width="0.0308%" height="15" fill="rgb(230,116,27)" fg:x="45078" fg:w="25"/><text x="55.7764%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pci2::inner+1d] (32 samples, 0.04%)</title><rect x="55.5572%" y="197" width="0.0394%" height="15" fill="rgb(228,99,48)" fg:x="45103" fg:w="32"/><text x="55.8072%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pci2::inner+9] (21 samples, 0.03%)</title><rect x="55.6028%" y="197" width="0.0259%" height="15" fill="rgb(253,11,6)" fg:x="45140" fg:w="21"/><text x="55.8528%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pci2::inner+c] (25 samples, 0.03%)</title><rect x="55.6286%" y="197" width="0.0308%" height="15" fill="rgb(247,143,39)" fg:x="45161" fg:w="25"/><text x="55.8786%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pci3::inner+30] (51 samples, 0.06%)</title><rect x="55.6594%" y="197" width="0.0628%" height="15" fill="rgb(236,97,10)" fg:x="45186" fg:w="51"/><text x="55.9094%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pit_stack::inner+39f] (10 samples, 0.01%)</title><rect x="55.7235%" y="181" width="0.0123%" height="15" fill="rgb(233,208,19)" fg:x="45238" fg:w="10"/><text x="55.9735%" y="191.50"></text></g><g><title>[kernel::time::monotonic+a7] (9 samples, 0.01%)</title><rect x="55.7703%" y="165" width="0.0111%" height="15" fill="rgb(216,164,2)" fg:x="45276" fg:w="9"/><text x="56.0203%" y="175.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pit_stack::inner+bf] (39 samples, 0.05%)</title><rect x="55.7567%" y="181" width="0.0480%" height="15" fill="rgb(220,129,5)" fg:x="45265" fg:w="39"/><text x="56.0067%" y="191.50"></text></g><g><title>[kernel::time::monotonic+ab] (19 samples, 0.02%)</title><rect x="55.7814%" y="165" width="0.0234%" height="15" fill="rgb(242,17,10)" fg:x="45285" fg:w="19"/><text x="56.0314%" y="175.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pit_stack::inner+cc] (22 samples, 0.03%)</title><rect x="55.8048%" y="181" width="0.0271%" height="15" fill="rgb(242,107,0)" fg:x="45304" fg:w="22"/><text x="56.0548%" y="191.50"></text></g><g><title>[kernel::time::realtime+eb] (10 samples, 0.01%)</title><rect x="55.8196%" y="165" width="0.0123%" height="15" fill="rgb(251,28,31)" fg:x="45316" fg:w="10"/><text x="56.0696%" y="175.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pit_stack+2e] (90 samples, 0.11%)</title><rect x="55.7223%" y="197" width="0.1109%" height="15" fill="rgb(233,223,10)" fg:x="45237" fg:w="90"/><text x="55.9723%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pit_stack::inner+3d] (22 samples, 0.03%)</title><rect x="55.8331%" y="197" width="0.0271%" height="15" fill="rgb(215,21,27)" fg:x="45327" fg:w="22"/><text x="56.0831%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pit_stack::inner+44] (26 samples, 0.03%)</title><rect x="55.8602%" y="197" width="0.0320%" height="15" fill="rgb(232,23,21)" fg:x="45349" fg:w="26"/><text x="56.1102%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pit_stack::inner+6b] (22 samples, 0.03%)</title><rect x="55.8922%" y="197" width="0.0271%" height="15" fill="rgb(244,5,23)" fg:x="45375" fg:w="22"/><text x="56.1422%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pit_stack::inner+86] (47 samples, 0.06%)</title><rect x="55.9193%" y="197" width="0.0579%" height="15" fill="rgb(226,81,46)" fg:x="45397" fg:w="47"/><text x="56.1693%" y="207.50"></text></g><g><title>[kernel::ptrace::set_process_regs+39] (20 samples, 0.02%)</title><rect x="56.0167%" y="165" width="0.0246%" height="15" fill="rgb(247,70,30)" fg:x="45476" fg:w="20"/><text x="56.2667%" y="175.50"></text></g><g><title>[__inner_syscall_instruction+13] (45 samples, 0.06%)</title><rect x="55.9896%" y="181" width="0.0554%" height="15" fill="rgb(212,68,19)" fg:x="45454" fg:w="45"/><text x="56.2396%" y="191.50"></text></g><g><title>[<kernel::allocator::linked_list::Allocator as core::alloc::global::GlobalAlloc>::alloc+129] (70 samples, 0.09%)</title><rect x="56.0696%" y="133" width="0.0862%" height="15" fill="rgb(240,187,13)" fg:x="45519" fg:w="70"/><text x="56.3196%" y="143.50"></text></g><g><title>[kernel::syscall::fs::copy_path_to_buf+35] (83 samples, 0.10%)</title><rect x="56.0622%" y="149" width="0.1022%" height="15" fill="rgb(223,113,26)" fg:x="45513" fg:w="83"/><text x="56.3122%" y="159.50"></text></g><g><title>[kernel::syscall::syscall+1019] (86 samples, 0.11%)</title><rect x="56.0610%" y="165" width="0.1059%" height="15" fill="rgb(206,192,2)" fg:x="45512" fg:w="86"/><text x="56.3110%" y="175.50"></text></g><g><title>[kernel::time::realtime+62] (49 samples, 0.06%)</title><rect x="56.1817%" y="133" width="0.0604%" height="15" fill="rgb(241,108,4)" fg:x="45610" fg:w="49"/><text x="56.4317%" y="143.50"></text></g><g><title>[kernel::time::realtime+69] (39 samples, 0.05%)</title><rect x="56.2421%" y="133" width="0.0480%" height="15" fill="rgb(247,173,49)" fg:x="45659" fg:w="39"/><text x="56.4921%" y="143.50"></text></g><g><title>[kernel::time::realtime+df] (89 samples, 0.11%)</title><rect x="56.2901%" y="133" width="0.1096%" height="15" fill="rgb(224,114,35)" fg:x="45698" fg:w="89"/><text x="56.5401%" y="143.50"></text></g><g><title>[kernel::time::realtime+e7] (59 samples, 0.07%)</title><rect x="56.3997%" y="133" width="0.0727%" height="15" fill="rgb(245,159,27)" fg:x="45787" fg:w="59"/><text x="56.6497%" y="143.50"></text></g><g><title>[kernel::syscall::time::clock_gettime+24] (298 samples, 0.37%)</title><rect x="56.1805%" y="149" width="0.3671%" height="15" fill="rgb(245,172,44)" fg:x="45609" fg:w="298"/><text x="56.4305%" y="159.50"></text></g><g><title>[kernel::time::realtime+eb] (61 samples, 0.08%)</title><rect x="56.4724%" y="133" width="0.0751%" height="15" fill="rgb(236,23,11)" fg:x="45846" fg:w="61"/><text x="56.7224%" y="143.50"></text></g><g><title>[kernel::time::monotonic+2d] (23 samples, 0.03%)</title><rect x="56.5476%" y="133" width="0.0283%" height="15" fill="rgb(205,117,38)" fg:x="45907" fg:w="23"/><text x="56.7976%" y="143.50"></text></g><g><title>[kernel::time::monotonic+34] (24 samples, 0.03%)</title><rect x="56.5759%" y="133" width="0.0296%" height="15" fill="rgb(237,72,25)" fg:x="45930" fg:w="24"/><text x="56.8259%" y="143.50"></text></g><g><title>[kernel::time::monotonic+9f] (35 samples, 0.04%)</title><rect x="56.6054%" y="133" width="0.0431%" height="15" fill="rgb(244,70,9)" fg:x="45954" fg:w="35"/><text x="56.8554%" y="143.50"></text></g><g><title>[kernel::time::monotonic+a7] (41 samples, 0.05%)</title><rect x="56.6486%" y="133" width="0.0505%" height="15" fill="rgb(217,125,39)" fg:x="45989" fg:w="41"/><text x="56.8986%" y="143.50"></text></g><g><title>[kernel::syscall::syscall+13cf] (465 samples, 0.57%)</title><rect x="56.1792%" y="165" width="0.5728%" height="15" fill="rgb(235,36,10)" fg:x="45608" fg:w="465"/><text x="56.4292%" y="175.50"></text></g><g><title>[kernel::syscall::time::clock_gettime+2b] (166 samples, 0.20%)</title><rect x="56.5476%" y="149" width="0.2045%" height="15" fill="rgb(251,123,47)" fg:x="45907" fg:w="166"/><text x="56.7976%" y="159.50"></text></g><g><title>[kernel::time::monotonic+ab] (43 samples, 0.05%)</title><rect x="56.6991%" y="133" width="0.0530%" height="15" fill="rgb(221,13,13)" fg:x="46030" fg:w="43"/><text x="56.9491%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+42] (62 samples, 0.08%)</title><rect x="56.7594%" y="133" width="0.0764%" height="15" fill="rgb(238,131,9)" fg:x="46079" fg:w="62"/><text x="57.0094%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+4c] (392 samples, 0.48%)</title><rect x="56.8383%" y="133" width="0.4829%" height="15" fill="rgb(211,50,8)" fg:x="46143" fg:w="392"/><text x="57.0883%" y="143.50"></text></g><g><title>[kernel::syscall::syscall+13f4] (481 samples, 0.59%)</title><rect x="56.7520%" y="165" width="0.5925%" height="15" fill="rgb(245,182,24)" fg:x="46073" fg:w="481"/><text x="57.0020%" y="175.50"></text></g><g><title>[kernel::syscall::process::kill+4fa] (481 samples, 0.59%)</title><rect x="56.7520%" y="149" width="0.5925%" height="15" fill="rgb(242,14,37)" fg:x="46073" fg:w="481"/><text x="57.0020%" y="159.50"></text></g><g><title>[kernel::syscall::syscall+14b9] (37 samples, 0.05%)</title><rect x="57.3445%" y="165" width="0.0456%" height="15" fill="rgb(246,228,12)" fg:x="46554" fg:w="37"/><text x="57.5945%" y="175.50"></text></g><g><title>[kernel::syscall::fs::file_op_generic_ext+24f] (37 samples, 0.05%)</title><rect x="57.3445%" y="149" width="0.0456%" height="15" fill="rgb(213,55,15)" fg:x="46554" fg:w="37"/><text x="57.5945%" y="159.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as syscall::scheme::scheme::Scheme>::fsync+4d] (37 samples, 0.05%)</title><rect x="57.3445%" y="133" width="0.0456%" height="15" fill="rgb(209,9,3)" fg:x="46554" fg:w="37"/><text x="57.5945%" y="143.50"></text></g><g><title>[kernel::scheme::user::UserInner::call+170] (37 samples, 0.05%)</title><rect x="57.3445%" y="117" width="0.0456%" height="15" fill="rgb(230,59,30)" fg:x="46554" fg:w="37"/><text x="57.5945%" y="127.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner+288] (37 samples, 0.05%)</title><rect x="57.3445%" y="101" width="0.0456%" height="15" fill="rgb(209,121,21)" fg:x="46554" fg:w="37"/><text x="57.5945%" y="111.50"></text></g><g><title>[<kernel::scheme::proc::ProcScheme as kernel::scheme::KernelScheme>::kdup+62c] (20 samples, 0.02%)</title><rect x="57.4073%" y="117" width="0.0246%" height="15" fill="rgb(220,109,13)" fg:x="46605" fg:w="20"/><text x="57.6573%" y="127.50"></text></g><g><title>[kernel::context::memory::new_addrspace+9d] (11 samples, 0.01%)</title><rect x="57.4406%" y="101" width="0.0135%" height="15" fill="rgb(232,18,1)" fg:x="46632" fg:w="11"/><text x="57.6906%" y="111.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+b7] (14 samples, 0.02%)</title><rect x="57.4541%" y="85" width="0.0172%" height="15" fill="rgb(215,41,42)" fg:x="46643" fg:w="14"/><text x="57.7041%" y="95.50"></text></g><g><title>[<kernel::scheme::proc::ProcScheme as kernel::scheme::KernelScheme>::kdup+7ad] (40 samples, 0.05%)</title><rect x="57.4381%" y="117" width="0.0493%" height="15" fill="rgb(224,123,36)" fg:x="46630" fg:w="40"/><text x="57.6881%" y="127.50"></text></g><g><title>[kernel::context::memory::new_addrspace+c2] (27 samples, 0.03%)</title><rect x="57.4541%" y="101" width="0.0333%" height="15" fill="rgb(240,125,3)" fg:x="46643" fg:w="27"/><text x="57.7041%" y="111.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+c9] (13 samples, 0.02%)</title><rect x="57.4714%" y="85" width="0.0160%" height="15" fill="rgb(205,98,50)" fg:x="46657" fg:w="13"/><text x="57.7214%" y="95.50"></text></g><g><title>[rmm::page::mapper::PageMapper<A,F>::map_phys+12d] (195 samples, 0.24%)</title><rect x="57.5022%" y="69" width="0.2402%" height="15" fill="rgb(205,185,37)" fg:x="46682" fg:w="195"/><text x="57.7522%" y="79.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+a0] (371 samples, 0.46%)</title><rect x="57.7535%" y="53" width="0.4570%" height="15" fill="rgb(238,207,15)" fg:x="46886" fg:w="371"/><text x="58.0035%" y="63.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+bc] (386 samples, 0.48%)</title><rect x="58.2105%" y="53" width="0.4755%" height="15" fill="rgb(213,199,42)" fg:x="47257" fg:w="386"/><text x="58.4605%" y="63.50"></text></g><g><title>[rmm::page::mapper::PageMapper<A,F>::map_phys+15b] (1,529 samples, 1.88%)</title><rect x="57.7461%" y="69" width="1.8834%" height="15" fill="rgb(235,201,11)" fg:x="46880" fg:w="1529"/><text x="57.9961%" y="79.50">[..</text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+c9] (766 samples, 0.94%)</title><rect x="58.6859%" y="53" width="0.9435%" height="15" fill="rgb(207,46,11)" fg:x="47643" fg:w="766"/><text x="58.9359%" y="63.50"></text></g><g><title>[kernel::context::memory::Grant::copy_mappings+40d] (1,729 samples, 2.13%)</title><rect x="57.5022%" y="85" width="2.1298%" height="15" fill="rgb(241,35,35)" fg:x="46682" fg:w="1729"/><text x="57.7522%" y="95.50">[..</text></g><g><title>[kernel::context::memory::AddrSpace::try_clone+1cc] (1,742 samples, 2.15%)</title><rect x="57.4874%" y="101" width="2.1458%" height="15" fill="rgb(243,32,47)" fg:x="46670" fg:w="1742"/><text x="57.7374%" y="111.50">[..</text></g><g><title>[kernel::context::memory::new_addrspace+9d] (43 samples, 0.05%)</title><rect x="59.6480%" y="85" width="0.0530%" height="15" fill="rgb(247,202,23)" fg:x="48424" fg:w="43"/><text x="59.8980%" y="95.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+a0] (58 samples, 0.07%)</title><rect x="59.7022%" y="69" width="0.0714%" height="15" fill="rgb(219,102,11)" fg:x="48468" fg:w="58"/><text x="59.9522%" y="79.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+bc] (54 samples, 0.07%)</title><rect x="59.7748%" y="69" width="0.0665%" height="15" fill="rgb(243,110,44)" fg:x="48527" fg:w="54"/><text x="60.0248%" y="79.50"></text></g><g><title>[kernel::context::memory::AddrSpace::try_clone+26] (286 samples, 0.35%)</title><rect x="59.6332%" y="101" width="0.3523%" height="15" fill="rgb(222,74,54)" fg:x="48412" fg:w="286"/><text x="59.8832%" y="111.50"></text></g><g><title>[kernel::context::memory::new_addrspace+c2] (230 samples, 0.28%)</title><rect x="59.7022%" y="85" width="0.2833%" height="15" fill="rgb(216,99,12)" fg:x="48468" fg:w="230"/><text x="59.9522%" y="95.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+c9] (117 samples, 0.14%)</title><rect x="59.8413%" y="69" width="0.1441%" height="15" fill="rgb(226,22,26)" fg:x="48581" fg:w="117"/><text x="60.0913%" y="79.50"></text></g><g><title>[<kernel::scheme::proc::ProcScheme as kernel::scheme::KernelScheme>::kdup+84e] (2,034 samples, 2.51%)</title><rect x="57.4874%" y="117" width="2.5055%" height="15" fill="rgb(217,163,10)" fg:x="46670" fg:w="2034"/><text x="57.7374%" y="127.50">[<..</text></g><g><title>[kernel::context::switch::switch+42] (11 samples, 0.01%)</title><rect x="59.9966%" y="85" width="0.0135%" height="15" fill="rgb(213,25,53)" fg:x="48707" fg:w="11"/><text x="60.2466%" y="95.50"></text></g><g><title>[kernel::context::switch::switch+4c] (15 samples, 0.02%)</title><rect x="60.0101%" y="85" width="0.0185%" height="15" fill="rgb(252,105,26)" fg:x="48718" fg:w="15"/><text x="60.2601%" y="95.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner+288] (36 samples, 0.04%)</title><rect x="59.9941%" y="101" width="0.0443%" height="15" fill="rgb(220,39,43)" fg:x="48705" fg:w="36"/><text x="60.2441%" y="111.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::kdup+184] (38 samples, 0.05%)</title><rect x="59.9929%" y="117" width="0.0468%" height="15" fill="rgb(229,68,48)" fg:x="48704" fg:w="38"/><text x="60.2429%" y="127.50"></text></g><g><title>[kernel::syscall::fs::duplicate_file+375] (2,163 samples, 2.66%)</title><rect x="57.3913%" y="133" width="2.6644%" height="15" fill="rgb(252,8,32)" fg:x="46592" fg:w="2163"/><text x="57.6413%" y="143.50">[k..</text></g><g><title>[<kernel::allocator::linked_list::Allocator as core::alloc::global::GlobalAlloc>::alloc+129] (48 samples, 0.06%)</title><rect x="60.0705%" y="117" width="0.0591%" height="15" fill="rgb(223,20,43)" fg:x="48767" fg:w="48"/><text x="60.3205%" y="127.50"></text></g><g><title>[kernel::syscall::fs::dup+1b] (2,237 samples, 2.76%)</title><rect x="57.3901%" y="149" width="2.7555%" height="15" fill="rgb(229,81,49)" fg:x="46591" fg:w="2237"/><text x="57.6401%" y="159.50">[k..</text></g><g><title>[kernel::syscall::fs::duplicate_file+3e3] (73 samples, 0.09%)</title><rect x="60.0557%" y="133" width="0.0899%" height="15" fill="rgb(236,28,36)" fg:x="48755" fg:w="73"/><text x="60.3057%" y="143.50"></text></g><g><title>[kernel::syscall::syscall+14f1] (2,242 samples, 2.76%)</title><rect x="57.3901%" y="165" width="2.7617%" height="15" fill="rgb(249,185,26)" fg:x="46591" fg:w="2242"/><text x="57.6401%" y="175.50">[k..</text></g><g><title>[kernel::syscall::fs::close+193] (95 samples, 0.12%)</title><rect x="60.1567%" y="149" width="0.1170%" height="15" fill="rgb(249,174,33)" fg:x="48837" fg:w="95"/><text x="60.4067%" y="159.50"></text></g><g><title>[<alloc::sync::Weak<T,A> as core::ops::drop::Drop>::drop+be] (72 samples, 0.09%)</title><rect x="60.1850%" y="133" width="0.0887%" height="15" fill="rgb(233,201,37)" fg:x="48860" fg:w="72"/><text x="60.4350%" y="143.50"></text></g><g><title>[<kernel::scheme::pipe::PipeScheme as syscall::scheme::scheme::Scheme>::close+2d2] (9 samples, 0.01%)</title><rect x="60.2774%" y="117" width="0.0111%" height="15" fill="rgb(221,78,26)" fg:x="48935" fg:w="9"/><text x="60.5274%" y="127.50"></text></g><g><title>[alloc::sync::Arc<T,A>::drop_slow+60d] (16 samples, 0.02%)</title><rect x="60.3033%" y="101" width="0.0197%" height="15" fill="rgb(250,127,30)" fg:x="48956" fg:w="16"/><text x="60.5533%" y="111.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner+ef] (12 samples, 0.01%)</title><rect x="60.3082%" y="85" width="0.0148%" height="15" fill="rgb(230,49,44)" fg:x="48960" fg:w="12"/><text x="60.5582%" y="95.50"></text></g><g><title>[alloc::sync::Arc<T,A>::drop_slow+79d] (20 samples, 0.02%)</title><rect x="60.3267%" y="101" width="0.0246%" height="15" fill="rgb(229,67,23)" fg:x="48975" fg:w="20"/><text x="60.5767%" y="111.50"></text></g><g><title>[alloc::sync::Arc<T,A>::drop_slow+932] (61 samples, 0.08%)</title><rect x="60.3538%" y="101" width="0.0751%" height="15" fill="rgb(249,83,47)" fg:x="48997" fg:w="61"/><text x="60.6038%" y="111.50"></text></g><g><title>[<kernel::scheme::proc::ProcScheme as syscall::scheme::scheme::Scheme>::close+caf] (123 samples, 0.15%)</title><rect x="60.2934%" y="117" width="0.1515%" height="15" fill="rgb(215,43,3)" fg:x="48948" fg:w="123"/><text x="60.5434%" y="127.50"></text></g><g><title>[kernel::context::switch::switch+42] (19 samples, 0.02%)</title><rect x="60.4659%" y="69" width="0.0234%" height="15" fill="rgb(238,154,13)" fg:x="49088" fg:w="19"/><text x="60.7159%" y="79.50"></text></g><g><title>[kernel::context::switch::switch+4c] (26 samples, 0.03%)</title><rect x="60.4893%" y="69" width="0.0320%" height="15" fill="rgb(219,56,2)" fg:x="49107" fg:w="26"/><text x="60.7393%" y="79.50"></text></g><g><title>[kernel::context::switch::switch+ef] (9 samples, 0.01%)</title><rect x="60.5225%" y="69" width="0.0111%" height="15" fill="rgb(233,0,4)" fg:x="49134" fg:w="9"/><text x="60.7725%" y="79.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner+288] (78 samples, 0.10%)</title><rect x="60.4585%" y="85" width="0.0961%" height="15" fill="rgb(235,30,7)" fg:x="49082" fg:w="78"/><text x="60.7085%" y="95.50"></text></g><g><title>[kernel::context::switch::switch+fb] (10 samples, 0.01%)</title><rect x="60.5422%" y="69" width="0.0123%" height="15" fill="rgb(250,79,13)" fg:x="49150" fg:w="10"/><text x="60.7922%" y="79.50"></text></g><g><title>[kernel::scheme::user::UserInner::call+170] (80 samples, 0.10%)</title><rect x="60.4572%" y="101" width="0.0985%" height="15" fill="rgb(211,146,34)" fg:x="49081" fg:w="80"/><text x="60.7072%" y="111.50"></text></g><g><title>[kernel::context::file::FileDescription::try_close+a25] (231 samples, 0.28%)</title><rect x="60.2737%" y="133" width="0.2845%" height="15" fill="rgb(228,22,38)" fg:x="48932" fg:w="231"/><text x="60.5237%" y="143.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as syscall::scheme::scheme::Scheme>::close+4d] (82 samples, 0.10%)</title><rect x="60.4572%" y="117" width="0.1010%" height="15" fill="rgb(235,168,5)" fg:x="49081" fg:w="82"/><text x="60.7072%" y="127.50"></text></g><g><title>[kernel::syscall::fs::close+19f] (232 samples, 0.29%)</title><rect x="60.2737%" y="149" width="0.2858%" height="15" fill="rgb(221,155,16)" fg:x="48932" fg:w="232"/><text x="60.5237%" y="159.50"></text></g><g><title>[kernel::syscall::syscall+1563] (331 samples, 0.41%)</title><rect x="60.1530%" y="165" width="0.4077%" height="15" fill="rgb(215,215,53)" fg:x="48834" fg:w="331"/><text x="60.4030%" y="175.50"></text></g><g><title>[kernel::event::trigger+261] (65 samples, 0.08%)</title><rect x="60.5693%" y="85" width="0.0801%" height="15" fill="rgb(223,4,10)" fg:x="49172" fg:w="65"/><text x="60.8193%" y="95.50"></text></g><g><title>[kernel::sync::wait_condition::WaitCondition::notify+ed] (63 samples, 0.08%)</title><rect x="60.5718%" y="69" width="0.0776%" height="15" fill="rgb(234,103,6)" fg:x="49174" fg:w="63"/><text x="60.8218%" y="79.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner+283] (68 samples, 0.08%)</title><rect x="60.5669%" y="101" width="0.0838%" height="15" fill="rgb(227,97,0)" fg:x="49170" fg:w="68"/><text x="60.8169%" y="111.50"></text></g><g><title>[kernel::context::switch::switch+366] (21 samples, 0.03%)</title><rect x="60.6728%" y="85" width="0.0259%" height="15" fill="rgb(234,150,53)" fg:x="49256" fg:w="21"/><text x="60.9228%" y="95.50"></text></g><g><title>[kernel::context::switch::switch+3da] (91 samples, 0.11%)</title><rect x="60.7085%" y="85" width="0.1121%" height="15" fill="rgb(228,201,54)" fg:x="49285" fg:w="91"/><text x="60.9585%" y="95.50"></text></g><g><title>[kernel::context::switch::switch+42] (187 samples, 0.23%)</title><rect x="60.8268%" y="85" width="0.2303%" height="15" fill="rgb(222,22,37)" fg:x="49381" fg:w="187"/><text x="61.0768%" y="95.50"></text></g><g><title>[kernel::context::switch::switch+4c] (581 samples, 0.72%)</title><rect x="61.0608%" y="85" width="0.7157%" height="15" fill="rgb(237,53,32)" fg:x="49571" fg:w="581"/><text x="61.3108%" y="95.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+b7] (53 samples, 0.07%)</title><rect x="61.7814%" y="37" width="0.0653%" height="15" fill="rgb(233,25,53)" fg:x="50156" fg:w="53"/><text x="62.0314%" y="47.50"></text></g><g><title>[kernel::context::switch::switch+ecc] (103 samples, 0.13%)</title><rect x="61.7814%" y="85" width="0.1269%" height="15" fill="rgb(210,40,34)" fg:x="50156" fg:w="103"/><text x="62.0314%" y="95.50"></text></g><g><title>[<kernel::allocator::linked_list::Allocator as core::alloc::global::GlobalAlloc>::alloc+22c] (103 samples, 0.13%)</title><rect x="61.7814%" y="69" width="0.1269%" height="15" fill="rgb(241,220,44)" fg:x="50156" fg:w="103"/><text x="62.0314%" y="79.50"></text></g><g><title>[kernel::allocator::map_heap+89] (103 samples, 0.13%)</title><rect x="61.7814%" y="53" width="0.1269%" height="15" fill="rgb(235,28,35)" fg:x="50156" fg:w="103"/><text x="62.0314%" y="63.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+c9] (50 samples, 0.06%)</title><rect x="61.8467%" y="37" width="0.0616%" height="15" fill="rgb(210,56,17)" fg:x="50209" fg:w="50"/><text x="62.0967%" y="47.50"></text></g><g><title>[kernel::context::switch::switch+ef] (89 samples, 0.11%)</title><rect x="61.9083%" y="85" width="0.1096%" height="15" fill="rgb(224,130,29)" fg:x="50259" fg:w="89"/><text x="62.1583%" y="95.50"></text></g><g><title>[kernel::context::switch::switch+f7] (99 samples, 0.12%)</title><rect x="62.0179%" y="85" width="0.1219%" height="15" fill="rgb(235,212,8)" fg:x="50348" fg:w="99"/><text x="62.2679%" y="95.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner+288] (1,288 samples, 1.59%)</title><rect x="60.6506%" y="101" width="1.5865%" height="15" fill="rgb(223,33,50)" fg:x="49238" fg:w="1288"/><text x="60.9006%" y="111.50"></text></g><g><title>[kernel::context::switch::switch+fb] (79 samples, 0.10%)</title><rect x="62.1399%" y="85" width="0.0973%" height="15" fill="rgb(219,149,13)" fg:x="50447" fg:w="79"/><text x="62.3899%" y="95.50"></text></g><g><title>[kernel::scheme::user::UserInner::call+170] (1,361 samples, 1.68%)</title><rect x="60.5656%" y="117" width="1.6765%" height="15" fill="rgb(250,156,29)" fg:x="49169" fg:w="1361"/><text x="60.8156%" y="127.50"></text></g><g><title>[kernel::syscall::fs::file_op_generic_ext+27c] (1,366 samples, 1.68%)</title><rect x="60.5644%" y="149" width="1.6826%" height="15" fill="rgb(216,193,19)" fg:x="49168" fg:w="1366"/><text x="60.8144%" y="159.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as syscall::scheme::scheme::Scheme>::seek+5c] (1,365 samples, 1.68%)</title><rect x="60.5656%" y="133" width="1.6814%" height="15" fill="rgb(216,135,14)" fg:x="49169" fg:w="1365"/><text x="60.8156%" y="143.50"></text></g><g><title>[kernel::syscall::syscall+1582] (1,372 samples, 1.69%)</title><rect x="60.5607%" y="165" width="1.6900%" height="15" fill="rgb(241,47,5)" fg:x="49165" fg:w="1372"/><text x="60.8107%" y="175.50"></text></g><g><title>[kernel::context::switch::switch+4c] (61 samples, 0.08%)</title><rect x="62.2692%" y="117" width="0.0751%" height="15" fill="rgb(233,42,35)" fg:x="50552" fg:w="61"/><text x="62.5192%" y="127.50"></text></g><g><title>[kernel::syscall::process::waitpid+4b5] (79 samples, 0.10%)</title><rect x="62.2532%" y="149" width="0.0973%" height="15" fill="rgb(231,13,6)" fg:x="50539" fg:w="79"/><text x="62.5032%" y="159.50"></text></g><g><title>[kernel::sync::wait_condition::WaitCondition::wait+194] (79 samples, 0.10%)</title><rect x="62.2532%" y="133" width="0.0973%" height="15" fill="rgb(207,181,40)" fg:x="50539" fg:w="79"/><text x="62.5032%" y="143.50"></text></g><g><title>[kernel::syscall::syscall+16bd] (84 samples, 0.10%)</title><rect x="62.2507%" y="165" width="0.1035%" height="15" fill="rgb(254,173,49)" fg:x="50537" fg:w="84"/><text x="62.5007%" y="175.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner+283] (9 samples, 0.01%)</title><rect x="62.3702%" y="133" width="0.0111%" height="15" fill="rgb(221,1,38)" fg:x="50634" fg:w="9"/><text x="62.6202%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+3da] (37 samples, 0.05%)</title><rect x="62.4084%" y="117" width="0.0456%" height="15" fill="rgb(206,124,46)" fg:x="50665" fg:w="37"/><text x="62.6584%" y="127.50"></text></g><g><title>[kernel::context::switch::switch+42] (54 samples, 0.07%)</title><rect x="62.4552%" y="117" width="0.0665%" height="15" fill="rgb(249,21,11)" fg:x="50703" fg:w="54"/><text x="62.7052%" y="127.50"></text></g><g><title>[kernel::context::switch::switch+4c] (192 samples, 0.24%)</title><rect x="62.5254%" y="117" width="0.2365%" height="15" fill="rgb(222,201,40)" fg:x="50760" fg:w="192"/><text x="62.7754%" y="127.50"></text></g><g><title>[kernel::context::switch::switch+9ad] (18 samples, 0.02%)</title><rect x="62.7631%" y="117" width="0.0222%" height="15" fill="rgb(235,61,29)" fg:x="50953" fg:w="18"/><text x="63.0131%" y="127.50"></text></g><g><title>[kernel::context::switch::switch+9b5] (12 samples, 0.01%)</title><rect x="62.7853%" y="117" width="0.0148%" height="15" fill="rgb(219,207,3)" fg:x="50971" fg:w="12"/><text x="63.0353%" y="127.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+b7] (21 samples, 0.03%)</title><rect x="62.8075%" y="69" width="0.0259%" height="15" fill="rgb(222,56,46)" fg:x="50989" fg:w="21"/><text x="63.0575%" y="79.50"></text></g><g><title>[kernel::context::switch::switch+ecc] (40 samples, 0.05%)</title><rect x="62.8063%" y="117" width="0.0493%" height="15" fill="rgb(239,76,54)" fg:x="50988" fg:w="40"/><text x="63.0563%" y="127.50"></text></g><g><title>[<kernel::allocator::linked_list::Allocator as core::alloc::global::GlobalAlloc>::alloc+22c] (40 samples, 0.05%)</title><rect x="62.8063%" y="101" width="0.0493%" height="15" fill="rgb(231,124,27)" fg:x="50988" fg:w="40"/><text x="63.0563%" y="111.50"></text></g><g><title>[kernel::allocator::map_heap+89] (40 samples, 0.05%)</title><rect x="62.8063%" y="85" width="0.0493%" height="15" fill="rgb(249,195,6)" fg:x="50988" fg:w="40"/><text x="63.0563%" y="95.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+c9] (18 samples, 0.02%)</title><rect x="62.8334%" y="69" width="0.0222%" height="15" fill="rgb(237,174,47)" fg:x="51010" fg:w="18"/><text x="63.0834%" y="79.50"></text></g><g><title>[kernel::context::switch::switch+ef] (34 samples, 0.04%)</title><rect x="62.8555%" y="117" width="0.0419%" height="15" fill="rgb(206,201,31)" fg:x="51028" fg:w="34"/><text x="63.1055%" y="127.50"></text></g><g><title>[kernel::context::switch::switch+f7] (28 samples, 0.03%)</title><rect x="62.8974%" y="117" width="0.0345%" height="15" fill="rgb(231,57,52)" fg:x="51062" fg:w="28"/><text x="63.1474%" y="127.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner+288] (483 samples, 0.59%)</title><rect x="62.3813%" y="133" width="0.5950%" height="15" fill="rgb(248,177,22)" fg:x="50643" fg:w="483"/><text x="62.6313%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+fb] (36 samples, 0.04%)</title><rect x="62.9319%" y="117" width="0.0443%" height="15" fill="rgb(215,211,37)" fg:x="51090" fg:w="36"/><text x="63.1819%" y="127.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::kopen+16b] (508 samples, 0.63%)</title><rect x="62.3653%" y="149" width="0.6257%" height="15" fill="rgb(241,128,51)" fg:x="50630" fg:w="508"/><text x="62.6153%" y="159.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner+443] (10 samples, 0.01%)</title><rect x="62.9787%" y="133" width="0.0123%" height="15" fill="rgb(227,165,31)" fg:x="51128" fg:w="10"/><text x="63.2287%" y="143.50"></text></g><g><title>[alloc::collections::btree::map::entry::OccupiedEntry<K,V,A>::remove_kv+1a5] (10 samples, 0.01%)</title><rect x="62.9787%" y="117" width="0.0123%" height="15" fill="rgb(228,167,24)" fg:x="51128" fg:w="10"/><text x="63.2287%" y="127.50"></text></g><g><title>[alloc::collections::btree::remove::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::KV>>::remove_leaf_kv+1c9] (10 samples, 0.01%)</title><rect x="62.9787%" y="101" width="0.0123%" height="15" fill="rgb(228,143,12)" fg:x="51128" fg:w="10"/><text x="63.2287%" y="111.50"></text></g><g><title>[alloc::collections::btree::node::BalancingContext<K,V>::merge_tracking_child_edge+3d5] (10 samples, 0.01%)</title><rect x="62.9787%" y="85" width="0.0123%" height="15" fill="rgb(249,149,8)" fg:x="51128" fg:w="10"/><text x="63.2287%" y="95.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::kopen+1c8] (13 samples, 0.02%)</title><rect x="62.9910%" y="149" width="0.0160%" height="15" fill="rgb(243,35,44)" fg:x="51138" fg:w="13"/><text x="63.2410%" y="159.50"></text></g><g><title>[kernel::scheme::user::UserInner::copy_and_capture_tail+3e7] (10 samples, 0.01%)</title><rect x="63.0132%" y="133" width="0.0123%" height="15" fill="rgb(246,89,9)" fg:x="51156" fg:w="10"/><text x="63.2632%" y="143.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::kopen+5c] (16 samples, 0.02%)</title><rect x="63.0070%" y="149" width="0.0197%" height="15" fill="rgb(233,213,13)" fg:x="51151" fg:w="16"/><text x="63.2570%" y="159.50"></text></g><g><title>[kernel::context::memory::init_frame+3d] (22 samples, 0.03%)</title><rect x="63.0403%" y="85" width="0.0271%" height="15" fill="rgb(233,141,41)" fg:x="51178" fg:w="22"/><text x="63.2903%" y="95.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+a0] (59 samples, 0.07%)</title><rect x="63.0699%" y="69" width="0.0727%" height="15" fill="rgb(239,167,4)" fg:x="51202" fg:w="59"/><text x="63.3199%" y="79.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+bc] (54 samples, 0.07%)</title><rect x="63.1425%" y="69" width="0.0665%" height="15" fill="rgb(209,217,16)" fg:x="51261" fg:w="54"/><text x="63.3925%" y="79.50"></text></g><g><title>[kernel::context::list::ContextList::insert_context_raw+2b] (257 samples, 0.32%)</title><rect x="63.0403%" y="101" width="0.3166%" height="15" fill="rgb(219,88,35)" fg:x="51178" fg:w="257"/><text x="63.2903%" y="111.50"></text></g><g><title>[kernel::context::memory::init_frame+5e] (235 samples, 0.29%)</title><rect x="63.0674%" y="85" width="0.2895%" height="15" fill="rgb(220,193,23)" fg:x="51200" fg:w="235"/><text x="63.3174%" y="95.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+c9] (120 samples, 0.15%)</title><rect x="63.2090%" y="69" width="0.1478%" height="15" fill="rgb(230,90,52)" fg:x="51315" fg:w="120"/><text x="63.4590%" y="79.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+a0] (61 samples, 0.08%)</title><rect x="63.3630%" y="69" width="0.0751%" height="15" fill="rgb(252,106,19)" fg:x="51440" fg:w="61"/><text x="63.6130%" y="79.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+bc] (56 samples, 0.07%)</title><rect x="63.4382%" y="69" width="0.0690%" height="15" fill="rgb(206,74,20)" fg:x="51501" fg:w="56"/><text x="63.6882%" y="79.50"></text></g><g><title>[kernel::context::list::ContextList::insert_context_raw+51] (230 samples, 0.28%)</title><rect x="63.3581%" y="101" width="0.2833%" height="15" fill="rgb(230,138,44)" fg:x="51436" fg:w="230"/><text x="63.6081%" y="111.50"></text></g><g><title>[kernel::context::memory::init_frame+5e] (227 samples, 0.28%)</title><rect x="63.3618%" y="85" width="0.2796%" height="15" fill="rgb(235,182,43)" fg:x="51439" fg:w="227"/><text x="63.6118%" y="95.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+c9] (109 samples, 0.13%)</title><rect x="63.5071%" y="69" width="0.1343%" height="15" fill="rgb(242,16,51)" fg:x="51557" fg:w="109"/><text x="63.7571%" y="79.50"></text></g><g><title>[kernel::context::list::ContextList::spawn+106] (507 samples, 0.62%)</title><rect x="63.0317%" y="117" width="0.6245%" height="15" fill="rgb(248,9,4)" fg:x="51171" fg:w="507"/><text x="63.2817%" y="127.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+a0] (47 samples, 0.06%)</title><rect x="63.6734%" y="85" width="0.0579%" height="15" fill="rgb(210,31,22)" fg:x="51692" fg:w="47"/><text x="63.9234%" y="95.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+bc] (51 samples, 0.06%)</title><rect x="63.7313%" y="85" width="0.0628%" height="15" fill="rgb(239,54,39)" fg:x="51739" fg:w="51"/><text x="63.9813%" y="95.50"></text></g><g><title>[kernel::context::list::ContextList::spawn+155] (226 samples, 0.28%)</title><rect x="63.6562%" y="117" width="0.2784%" height="15" fill="rgb(230,99,41)" fg:x="51678" fg:w="226"/><text x="63.9062%" y="127.50"></text></g><g><title>[kernel::context::memory::new_addrspace+c2] (212 samples, 0.26%)</title><rect x="63.6734%" y="101" width="0.2611%" height="15" fill="rgb(253,106,12)" fg:x="51692" fg:w="212"/><text x="63.9234%" y="111.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+c9] (114 samples, 0.14%)</title><rect x="63.7941%" y="85" width="0.1404%" height="15" fill="rgb(213,46,41)" fg:x="51790" fg:w="114"/><text x="64.0441%" y="95.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+a0] (21 samples, 0.03%)</title><rect x="63.9395%" y="69" width="0.0259%" height="15" fill="rgb(215,133,35)" fg:x="51908" fg:w="21"/><text x="64.1895%" y="79.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+bc] (16 samples, 0.02%)</title><rect x="63.9654%" y="69" width="0.0197%" height="15" fill="rgb(213,28,5)" fg:x="51929" fg:w="16"/><text x="64.2154%" y="79.50"></text></g><g><title>[kernel::context::list::ContextList::spawn+1fe] (85 samples, 0.10%)</title><rect x="63.9346%" y="117" width="0.1047%" height="15" fill="rgb(215,77,49)" fg:x="51904" fg:w="85"/><text x="64.1846%" y="127.50"></text></g><g><title>[<kernel::allocator::linked_list::Allocator as core::alloc::global::GlobalAlloc>::alloc+22c] (81 samples, 0.10%)</title><rect x="63.9395%" y="101" width="0.0998%" height="15" fill="rgb(248,100,22)" fg:x="51908" fg:w="81"/><text x="64.1895%" y="111.50"></text></g><g><title>[kernel::allocator::map_heap+89] (81 samples, 0.10%)</title><rect x="63.9395%" y="85" width="0.0998%" height="15" fill="rgb(208,67,9)" fg:x="51908" fg:w="81"/><text x="64.1895%" y="95.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+c9] (44 samples, 0.05%)</title><rect x="63.9851%" y="69" width="0.0542%" height="15" fill="rgb(219,133,21)" fg:x="51945" fg:w="44"/><text x="64.2351%" y="79.50"></text></g><g><title>[<kernel::scheme::proc::ProcScheme as syscall::scheme::scheme::Scheme>::open+29f] (821 samples, 1.01%)</title><rect x="63.0317%" y="133" width="1.0113%" height="15" fill="rgb(246,46,29)" fg:x="51171" fg:w="821"/><text x="63.2817%" y="143.50"></text></g><g><title>[kernel::syscall::syscall+1c5e] (1,373 samples, 1.69%)</title><rect x="62.3616%" y="165" width="1.6912%" height="15" fill="rgb(246,185,52)" fg:x="50627" fg:w="1373"/><text x="62.6116%" y="175.50"></text></g><g><title>[kernel::scheme::KernelScheme::kopen+23] (833 samples, 1.03%)</title><rect x="63.0267%" y="149" width="1.0261%" height="15" fill="rgb(252,136,11)" fg:x="51167" fg:w="833"/><text x="63.2767%" y="159.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::kfstat+105] (11 samples, 0.01%)</title><rect x="64.0528%" y="133" width="0.0135%" height="15" fill="rgb(219,138,53)" fg:x="52000" fg:w="11"/><text x="64.3028%" y="143.50"></text></g><g><title>[kernel::scheme::user::UserInner::call+170] (11 samples, 0.01%)</title><rect x="64.0528%" y="117" width="0.0135%" height="15" fill="rgb(211,51,23)" fg:x="52000" fg:w="11"/><text x="64.3028%" y="127.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner+288] (11 samples, 0.01%)</title><rect x="64.0528%" y="101" width="0.0135%" height="15" fill="rgb(247,221,28)" fg:x="52000" fg:w="11"/><text x="64.3028%" y="111.50"></text></g><g><title>[kernel::syscall::syscall+1cb] (12 samples, 0.01%)</title><rect x="64.0528%" y="165" width="0.0148%" height="15" fill="rgb(251,222,45)" fg:x="52000" fg:w="12"/><text x="64.3028%" y="175.50"></text></g><g><title>[kernel::syscall::fs::fstat+296] (12 samples, 0.01%)</title><rect x="64.0528%" y="149" width="0.0148%" height="15" fill="rgb(217,162,53)" fg:x="52000" fg:w="12"/><text x="64.3028%" y="159.50"></text></g><g><title>[rmm::page::mapper::PageMapper<A,F>::map_phys+12d] (31 samples, 0.04%)</title><rect x="64.0885%" y="101" width="0.0382%" height="15" fill="rgb(229,93,14)" fg:x="52029" fg:w="31"/><text x="64.3385%" y="111.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+b7] (101 samples, 0.12%)</title><rect x="64.1329%" y="85" width="0.1244%" height="15" fill="rgb(209,67,49)" fg:x="52065" fg:w="101"/><text x="64.3829%" y="95.50"></text></g><g><title>[kernel::scheme::memory::MemoryScheme::fmap_anonymous+2c4] (266 samples, 0.33%)</title><rect x="64.0873%" y="117" width="0.3277%" height="15" fill="rgb(213,87,29)" fg:x="52028" fg:w="266"/><text x="64.3373%" y="127.50"></text></g><g><title>[rmm::page::mapper::PageMapper<A,F>::map_phys+15b] (234 samples, 0.29%)</title><rect x="64.1267%" y="101" width="0.2882%" height="15" fill="rgb(205,151,52)" fg:x="52060" fg:w="234"/><text x="64.3767%" y="111.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+c9] (126 samples, 0.16%)</title><rect x="64.2598%" y="85" width="0.1552%" height="15" fill="rgb(253,215,39)" fg:x="52168" fg:w="126"/><text x="64.5098%" y="95.50"></text></g><g><title>[<kernel::scheme::memory::MemoryScheme as kernel::scheme::KernelScheme>::kfmap+24] (271 samples, 0.33%)</title><rect x="64.0861%" y="133" width="0.3338%" height="15" fill="rgb(221,220,41)" fg:x="52027" fg:w="271"/><text x="64.3361%" y="143.50"></text></g><g><title>[<kernel::scheme::proc::ProcScheme as kernel::scheme::KernelScheme>::kwrite+1786] (272 samples, 0.34%)</title><rect x="64.0861%" y="149" width="0.3350%" height="15" fill="rgb(218,133,21)" fg:x="52027" fg:w="272"/><text x="64.3361%" y="159.50"></text></g><g><title>[kernel::scheme::user::UserInner::respond+22d] (152 samples, 0.19%)</title><rect x="64.4384%" y="133" width="0.1872%" height="15" fill="rgb(221,193,43)" fg:x="52313" fg:w="152"/><text x="64.6884%" y="143.50"></text></g><g><title>[<kernel::scheme::root::RootScheme as kernel::scheme::KernelScheme>::kwrite+1ff] (173 samples, 0.21%)</title><rect x="64.4285%" y="149" width="0.2131%" height="15" fill="rgb(240,128,52)" fg:x="52305" fg:w="173"/><text x="64.6785%" y="159.50"></text></g><g><title>[kernel::event::trigger+261] (10 samples, 0.01%)</title><rect x="64.6564%" y="101" width="0.0123%" height="15" fill="rgb(253,114,12)" fg:x="52490" fg:w="10"/><text x="64.9064%" y="111.50"></text></g><g><title>[kernel::sync::wait_condition::WaitCondition::notify+ed] (10 samples, 0.01%)</title><rect x="64.6564%" y="85" width="0.0123%" height="15" fill="rgb(215,223,47)" fg:x="52490" fg:w="10"/><text x="64.9064%" y="95.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner+283] (11 samples, 0.01%)</title><rect x="64.6564%" y="117" width="0.0135%" height="15" fill="rgb(248,225,23)" fg:x="52490" fg:w="11"/><text x="64.9064%" y="127.50"></text></g><g><title>[kernel::context::switch::switch+366] (21 samples, 0.03%)</title><rect x="64.6921%" y="101" width="0.0259%" height="15" fill="rgb(250,108,0)" fg:x="52519" fg:w="21"/><text x="64.9421%" y="111.50"></text></g><g><title>[kernel::context::switch::switch+3da] (128 samples, 0.16%)</title><rect x="64.7328%" y="101" width="0.1577%" height="15" fill="rgb(228,208,7)" fg:x="52552" fg:w="128"/><text x="64.9828%" y="111.50"></text></g><g><title>[kernel::context::switch::switch+42] (217 samples, 0.27%)</title><rect x="64.8966%" y="101" width="0.2673%" height="15" fill="rgb(244,45,10)" fg:x="52685" fg:w="217"/><text x="65.1466%" y="111.50"></text></g><g><title>[kernel::context::switch::switch+4c] (446 samples, 0.55%)</title><rect x="65.1713%" y="101" width="0.5494%" height="15" fill="rgb(207,125,25)" fg:x="52908" fg:w="446"/><text x="65.4213%" y="111.50"></text></g><g><title>[kernel::context::switch::switch+9ad] (12 samples, 0.01%)</title><rect x="65.7280%" y="101" width="0.0148%" height="15" fill="rgb(210,195,18)" fg:x="53360" fg:w="12"/><text x="65.9780%" y="111.50"></text></g><g><title>[kernel::context::switch::switch+9b5] (12 samples, 0.01%)</title><rect x="65.7428%" y="101" width="0.0148%" height="15" fill="rgb(249,80,12)" fg:x="53372" fg:w="12"/><text x="65.9928%" y="111.50"></text></g><g><title>[kernel::context::switch::switch+9b9] (11 samples, 0.01%)</title><rect x="65.7576%" y="101" width="0.0135%" height="15" fill="rgb(221,65,9)" fg:x="53384" fg:w="11"/><text x="66.0076%" y="111.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+b7] (14 samples, 0.02%)</title><rect x="65.7724%" y="53" width="0.0172%" height="15" fill="rgb(235,49,36)" fg:x="53396" fg:w="14"/><text x="66.0224%" y="63.50"></text></g><g><title>[kernel::context::switch::switch+ecc] (26 samples, 0.03%)</title><rect x="65.7724%" y="101" width="0.0320%" height="15" fill="rgb(225,32,20)" fg:x="53396" fg:w="26"/><text x="66.0224%" y="111.50"></text></g><g><title>[<kernel::allocator::linked_list::Allocator as core::alloc::global::GlobalAlloc>::alloc+22c] (26 samples, 0.03%)</title><rect x="65.7724%" y="85" width="0.0320%" height="15" fill="rgb(215,141,46)" fg:x="53396" fg:w="26"/><text x="66.0224%" y="95.50"></text></g><g><title>[kernel::allocator::map_heap+89] (26 samples, 0.03%)</title><rect x="65.7724%" y="69" width="0.0320%" height="15" fill="rgb(250,160,47)" fg:x="53396" fg:w="26"/><text x="66.0224%" y="79.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+c9] (12 samples, 0.01%)</title><rect x="65.7896%" y="53" width="0.0148%" height="15" fill="rgb(216,222,40)" fg:x="53410" fg:w="12"/><text x="66.0396%" y="63.50"></text></g><g><title>[kernel::context::switch::switch+ef] (90 samples, 0.11%)</title><rect x="65.8044%" y="101" width="0.1109%" height="15" fill="rgb(234,217,39)" fg:x="53422" fg:w="90"/><text x="66.0544%" y="111.50"></text></g><g><title>[kernel::context::switch::switch+f7] (71 samples, 0.09%)</title><rect x="65.9153%" y="101" width="0.0875%" height="15" fill="rgb(207,178,40)" fg:x="53512" fg:w="71"/><text x="66.1653%" y="111.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner+288] (1,160 samples, 1.43%)</title><rect x="64.6699%" y="117" width="1.4289%" height="15" fill="rgb(221,136,13)" fg:x="52501" fg:w="1160"/><text x="64.9199%" y="127.50"></text></g><g><title>[kernel::context::switch::switch+fb] (78 samples, 0.10%)</title><rect x="66.0027%" y="101" width="0.0961%" height="15" fill="rgb(249,199,10)" fg:x="53583" fg:w="78"/><text x="66.2527%" y="111.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::kwrite+105] (1,191 samples, 1.47%)</title><rect x="64.6453%" y="149" width="1.4671%" height="15" fill="rgb(249,222,13)" fg:x="52481" fg:w="1191"/><text x="64.8953%" y="159.50"></text></g><g><title>[kernel::scheme::user::UserInner::call+170] (1,191 samples, 1.47%)</title><rect x="64.6453%" y="133" width="1.4671%" height="15" fill="rgb(244,185,38)" fg:x="52481" fg:w="1191"/><text x="64.8953%" y="143.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::kwrite+132] (24 samples, 0.03%)</title><rect x="66.1124%" y="149" width="0.0296%" height="15" fill="rgb(236,202,9)" fg:x="53672" fg:w="24"/><text x="66.3624%" y="159.50"></text></g><g><title>[kernel::scheme::user::CaptureGuard<_,_>::release_inner+171] (21 samples, 0.03%)</title><rect x="66.1161%" y="133" width="0.0259%" height="15" fill="rgb(250,229,37)" fg:x="53675" fg:w="21"/><text x="66.3661%" y="143.50"></text></g><g><title>[kernel::context::memory::AddrSpace::mmap+3b6] (51 samples, 0.06%)</title><rect x="66.1690%" y="117" width="0.0628%" height="15" fill="rgb(206,174,23)" fg:x="53718" fg:w="51"/><text x="66.4190%" y="127.50"></text></g><g><title>[kernel::scheme::user::UserInner::capture_inner+4a9] (61 samples, 0.08%)</title><rect x="66.1592%" y="133" width="0.0751%" height="15" fill="rgb(211,33,43)" fg:x="53710" fg:w="61"/><text x="66.4092%" y="143.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::kwrite+61] (84 samples, 0.10%)</title><rect x="66.1481%" y="149" width="0.1035%" height="15" fill="rgb(245,58,50)" fg:x="53701" fg:w="84"/><text x="66.3981%" y="159.50"></text></g><g><title>[kernel::scheme::user::UserInner::capture_inner+73d] (14 samples, 0.02%)</title><rect x="66.2343%" y="133" width="0.0172%" height="15" fill="rgb(244,68,36)" fg:x="53771" fg:w="14"/><text x="66.4843%" y="143.50"></text></g><g><title>[kernel::context::memory::AddrSpace::mmap+3b6] (14 samples, 0.02%)</title><rect x="66.2343%" y="117" width="0.0172%" height="15" fill="rgb(232,229,15)" fg:x="53771" fg:w="14"/><text x="66.4843%" y="127.50"></text></g><g><title>[kernel::syscall::syscall+1e39] (1,771 samples, 2.18%)</title><rect x="64.0713%" y="165" width="2.1815%" height="15" fill="rgb(254,30,23)" fg:x="52015" fg:w="1771"/><text x="64.3213%" y="175.50">[..</text></g><g><title>[kernel::context::switch::switch+1c9] (16 samples, 0.02%)</title><rect x="66.2737%" y="133" width="0.0197%" height="15" fill="rgb(235,160,14)" fg:x="53803" fg:w="16"/><text x="66.5237%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+1cb] (36 samples, 0.04%)</title><rect x="66.2934%" y="133" width="0.0443%" height="15" fill="rgb(212,155,44)" fg:x="53819" fg:w="36"/><text x="66.5434%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+1d9] (34 samples, 0.04%)</title><rect x="66.3390%" y="133" width="0.0419%" height="15" fill="rgb(226,2,50)" fg:x="53856" fg:w="34"/><text x="66.5890%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+366] (16 samples, 0.02%)</title><rect x="66.3834%" y="133" width="0.0197%" height="15" fill="rgb(234,177,6)" fg:x="53892" fg:w="16"/><text x="66.6334%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+37a] (9 samples, 0.01%)</title><rect x="66.4031%" y="133" width="0.0111%" height="15" fill="rgb(217,24,9)" fg:x="53908" fg:w="9"/><text x="66.6531%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+3da] (122 samples, 0.15%)</title><rect x="66.4178%" y="133" width="0.1503%" height="15" fill="rgb(220,13,46)" fg:x="53920" fg:w="122"/><text x="66.6678%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+42] (433 samples, 0.53%)</title><rect x="66.5767%" y="133" width="0.5334%" height="15" fill="rgb(239,221,27)" fg:x="54049" fg:w="433"/><text x="66.8267%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+4c] (606 samples, 0.75%)</title><rect x="67.1187%" y="133" width="0.7465%" height="15" fill="rgb(222,198,25)" fg:x="54489" fg:w="606"/><text x="67.3687%" y="143.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+b7] (154 samples, 0.19%)</title><rect x="67.8935%" y="85" width="0.1897%" height="15" fill="rgb(211,99,13)" fg:x="55118" fg:w="154"/><text x="68.1435%" y="95.50"></text></g><g><title>[kernel::allocator::map_heap+89] (332 samples, 0.41%)</title><rect x="67.8911%" y="101" width="0.4090%" height="15" fill="rgb(232,111,31)" fg:x="55116" fg:w="332"/><text x="68.1411%" y="111.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+c9] (176 samples, 0.22%)</title><rect x="68.0832%" y="85" width="0.2168%" height="15" fill="rgb(245,82,37)" fg:x="55272" fg:w="176"/><text x="68.3332%" y="95.50"></text></g><g><title>[<kernel::allocator::linked_list::Allocator as core::alloc::global::GlobalAlloc>::alloc+22c] (333 samples, 0.41%)</title><rect x="67.8911%" y="117" width="0.4102%" height="15" fill="rgb(227,149,46)" fg:x="55116" fg:w="333"/><text x="68.1411%" y="127.50"></text></g><g><title>[kernel::context::switch::switch+ecc] (334 samples, 0.41%)</title><rect x="67.8911%" y="133" width="0.4114%" height="15" fill="rgb(218,36,50)" fg:x="55116" fg:w="334"/><text x="68.1411%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+ef] (87 samples, 0.11%)</title><rect x="68.3025%" y="133" width="0.1072%" height="15" fill="rgb(226,80,48)" fg:x="55450" fg:w="87"/><text x="68.5525%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+f7] (76 samples, 0.09%)</title><rect x="68.4096%" y="133" width="0.0936%" height="15" fill="rgb(238,224,15)" fg:x="55537" fg:w="76"/><text x="68.6596%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+fb] (69 samples, 0.08%)</title><rect x="68.5033%" y="133" width="0.0850%" height="15" fill="rgb(241,136,10)" fg:x="55613" fg:w="69"/><text x="68.7533%" y="143.50"></text></g><g><title>[<kernel::scheme::event::EventScheme as kernel::scheme::KernelScheme>::kread+2b4] (1,887 samples, 2.32%)</title><rect x="66.2663%" y="149" width="2.3244%" height="15" fill="rgb(208,32,45)" fg:x="53797" fg:w="1887"/><text x="66.5163%" y="159.50">[..</text></g><g><title>[kernel::sync::wait_condition::WaitCondition::wait+194] (32 samples, 0.04%)</title><rect x="68.5993%" y="133" width="0.0394%" height="15" fill="rgb(207,135,9)" fg:x="55691" fg:w="32"/><text x="68.8493%" y="143.50"></text></g><g><title>[<kernel::scheme::pipe::PipeScheme as kernel::scheme::KernelScheme>::kread+2a4] (37 samples, 0.05%)</title><rect x="68.5944%" y="149" width="0.0456%" height="15" fill="rgb(206,86,44)" fg:x="55687" fg:w="37"/><text x="68.8444%" y="159.50"></text></g><g><title>[kernel::context::switch::switch+1cb] (24 samples, 0.03%)</title><rect x="68.6634%" y="133" width="0.0296%" height="15" fill="rgb(245,177,15)" fg:x="55743" fg:w="24"/><text x="68.9134%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+3da] (57 samples, 0.07%)</title><rect x="68.7090%" y="133" width="0.0702%" height="15" fill="rgb(206,64,50)" fg:x="55780" fg:w="57"/><text x="68.9590%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+42] (185 samples, 0.23%)</title><rect x="68.7841%" y="133" width="0.2279%" height="15" fill="rgb(234,36,40)" fg:x="55841" fg:w="185"/><text x="69.0341%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+44] (10 samples, 0.01%)</title><rect x="69.0120%" y="133" width="0.0123%" height="15" fill="rgb(213,64,8)" fg:x="56026" fg:w="10"/><text x="69.2620%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+4c] (501 samples, 0.62%)</title><rect x="69.0243%" y="133" width="0.6171%" height="15" fill="rgb(210,75,36)" fg:x="56036" fg:w="501"/><text x="69.2743%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+ef] (111 samples, 0.14%)</title><rect x="69.6919%" y="133" width="0.1367%" height="15" fill="rgb(229,88,21)" fg:x="56578" fg:w="111"/><text x="69.9419%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+f7] (83 samples, 0.10%)</title><rect x="69.8287%" y="133" width="0.1022%" height="15" fill="rgb(252,204,47)" fg:x="56689" fg:w="83"/><text x="70.0787%" y="143.50"></text></g><g><title>[<kernel::scheme::root::RootScheme as kernel::scheme::KernelScheme>::kread+4f4] (1,121 samples, 1.38%)</title><rect x="68.6486%" y="149" width="1.3808%" height="15" fill="rgb(208,77,27)" fg:x="55731" fg:w="1121"/><text x="68.8986%" y="159.50"></text></g><g><title>[kernel::context::switch::switch+fb] (80 samples, 0.10%)</title><rect x="69.9309%" y="133" width="0.0985%" height="15" fill="rgb(221,76,26)" fg:x="56772" fg:w="80"/><text x="70.1809%" y="143.50"></text></g><g><title>[<kernel::scheme::time::TimeScheme as kernel::scheme::KernelScheme>::kread+138] (17 samples, 0.02%)</title><rect x="70.0356%" y="149" width="0.0209%" height="15" fill="rgb(225,139,18)" fg:x="56857" fg:w="17"/><text x="70.2856%" y="159.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner+283] (18 samples, 0.02%)</title><rect x="70.0590%" y="117" width="0.0222%" height="15" fill="rgb(230,137,11)" fg:x="56876" fg:w="18"/><text x="70.3090%" y="127.50"></text></g><g><title>[kernel::event::trigger+261] (18 samples, 0.02%)</title><rect x="70.0590%" y="101" width="0.0222%" height="15" fill="rgb(212,28,1)" fg:x="56876" fg:w="18"/><text x="70.3090%" y="111.50"></text></g><g><title>[kernel::sync::wait_condition::WaitCondition::notify+ed] (16 samples, 0.02%)</title><rect x="70.0615%" y="85" width="0.0197%" height="15" fill="rgb(248,164,17)" fg:x="56878" fg:w="16"/><text x="70.3115%" y="95.50"></text></g><g><title>[kernel::context::switch::switch+366] (12 samples, 0.01%)</title><rect x="70.1132%" y="101" width="0.0148%" height="15" fill="rgb(222,171,42)" fg:x="56920" fg:w="12"/><text x="70.3632%" y="111.50"></text></g><g><title>[kernel::context::switch::switch+3da] (83 samples, 0.10%)</title><rect x="70.1378%" y="101" width="0.1022%" height="15" fill="rgb(243,84,45)" fg:x="56940" fg:w="83"/><text x="70.3878%" y="111.50"></text></g><g><title>[kernel::context::switch::switch+42] (294 samples, 0.36%)</title><rect x="70.2413%" y="101" width="0.3621%" height="15" fill="rgb(252,49,23)" fg:x="57024" fg:w="294"/><text x="70.4913%" y="111.50"></text></g><g><title>[kernel::context::switch::switch+4c] (674 samples, 0.83%)</title><rect x="70.6121%" y="101" width="0.8302%" height="15" fill="rgb(215,19,7)" fg:x="57325" fg:w="674"/><text x="70.8621%" y="111.50"></text></g><g><title>[kernel::context::switch::switch+9ad] (21 samples, 0.03%)</title><rect x="71.4497%" y="101" width="0.0259%" height="15" fill="rgb(238,81,41)" fg:x="58005" fg:w="21"/><text x="71.6997%" y="111.50"></text></g><g><title>[kernel::context::switch::switch+9b5] (18 samples, 0.02%)</title><rect x="71.4756%" y="101" width="0.0222%" height="15" fill="rgb(210,199,37)" fg:x="58026" fg:w="18"/><text x="71.7256%" y="111.50"></text></g><g><title>[kernel::context::switch::switch+9b9] (16 samples, 0.02%)</title><rect x="71.4977%" y="101" width="0.0197%" height="15" fill="rgb(244,192,49)" fg:x="58044" fg:w="16"/><text x="71.7477%" y="111.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+b7] (10 samples, 0.01%)</title><rect x="71.5187%" y="53" width="0.0123%" height="15" fill="rgb(226,211,11)" fg:x="58061" fg:w="10"/><text x="71.7687%" y="63.50"></text></g><g><title>[kernel::context::switch::switch+ecc] (18 samples, 0.02%)</title><rect x="71.5187%" y="101" width="0.0222%" height="15" fill="rgb(236,162,54)" fg:x="58061" fg:w="18"/><text x="71.7687%" y="111.50"></text></g><g><title>[<kernel::allocator::linked_list::Allocator as core::alloc::global::GlobalAlloc>::alloc+22c] (18 samples, 0.02%)</title><rect x="71.5187%" y="85" width="0.0222%" height="15" fill="rgb(220,229,9)" fg:x="58061" fg:w="18"/><text x="71.7687%" y="95.50"></text></g><g><title>[kernel::allocator::map_heap+89] (18 samples, 0.02%)</title><rect x="71.5187%" y="69" width="0.0222%" height="15" fill="rgb(250,87,22)" fg:x="58061" fg:w="18"/><text x="71.7687%" y="79.50"></text></g><g><title>[kernel::context::switch::switch+ef] (89 samples, 0.11%)</title><rect x="71.5408%" y="101" width="0.1096%" height="15" fill="rgb(239,43,17)" fg:x="58079" fg:w="89"/><text x="71.7908%" y="111.50"></text></g><g><title>[kernel::context::switch::switch+f7] (100 samples, 0.12%)</title><rect x="71.6505%" y="101" width="0.1232%" height="15" fill="rgb(231,177,25)" fg:x="58168" fg:w="100"/><text x="71.9005%" y="111.50"></text></g><g><title>[kernel::context::switch::switch+fb] (101 samples, 0.12%)</title><rect x="71.7736%" y="101" width="0.1244%" height="15" fill="rgb(219,179,1)" fg:x="58268" fg:w="101"/><text x="72.0236%" y="111.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner+288] (1,476 samples, 1.82%)</title><rect x="70.0812%" y="117" width="1.8181%" height="15" fill="rgb(238,219,53)" fg:x="56894" fg:w="1476"/><text x="70.3312%" y="127.50">[..</text></g><g><title>[kernel::scheme::user::UserInner::call+170] (1,501 samples, 1.85%)</title><rect x="70.0565%" y="133" width="1.8489%" height="15" fill="rgb(232,167,36)" fg:x="56874" fg:w="1501"/><text x="70.3065%" y="143.50">[..</text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::kread+105] (1,502 samples, 1.85%)</title><rect x="70.0565%" y="149" width="1.8501%" height="15" fill="rgb(244,19,51)" fg:x="56874" fg:w="1502"/><text x="70.3065%" y="159.50">[..</text></g><g><title>[kernel::context::memory::init_frame+3d] (18 samples, 0.02%)</title><rect x="71.9116%" y="69" width="0.0222%" height="15" fill="rgb(224,6,22)" fg:x="58380" fg:w="18"/><text x="72.1616%" y="79.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+b7] (13 samples, 0.02%)</title><rect x="71.9350%" y="53" width="0.0160%" height="15" fill="rgb(224,145,5)" fg:x="58399" fg:w="13"/><text x="72.1850%" y="63.50"></text></g><g><title>[kernel::context::memory::correct_inner+b03] (43 samples, 0.05%)</title><rect x="71.9116%" y="101" width="0.0530%" height="15" fill="rgb(234,130,49)" fg:x="58380" fg:w="43"/><text x="72.1616%" y="111.50"></text></g><g><title>[kernel::context::memory::correct_inner+6f5] (43 samples, 0.05%)</title><rect x="71.9116%" y="85" width="0.0530%" height="15" fill="rgb(254,6,2)" fg:x="58380" fg:w="43"/><text x="72.1616%" y="95.50"></text></g><g><title>[kernel::context::memory::init_frame+5e] (25 samples, 0.03%)</title><rect x="71.9338%" y="69" width="0.0308%" height="15" fill="rgb(208,96,46)" fg:x="58398" fg:w="25"/><text x="72.1838%" y="79.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+c9] (11 samples, 0.01%)</title><rect x="71.9510%" y="53" width="0.0135%" height="15" fill="rgb(239,3,39)" fg:x="58412" fg:w="11"/><text x="72.2010%" y="63.50"></text></g><g><title>[kernel::context::memory::init_frame+3d] (29 samples, 0.04%)</title><rect x="71.9646%" y="69" width="0.0357%" height="15" fill="rgb(233,210,1)" fg:x="58423" fg:w="29"/><text x="72.2146%" y="79.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+b7] (20 samples, 0.02%)</title><rect x="72.0028%" y="53" width="0.0246%" height="15" fill="rgb(244,137,37)" fg:x="58454" fg:w="20"/><text x="72.2528%" y="63.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::exception::page::inner+4ad] (121 samples, 0.15%)</title><rect x="71.9116%" y="117" width="0.1490%" height="15" fill="rgb(240,136,2)" fg:x="58380" fg:w="121"/><text x="72.1616%" y="127.50"></text></g><g><title>[kernel::context::memory::correct_inner+bd4] (78 samples, 0.10%)</title><rect x="71.9646%" y="101" width="0.0961%" height="15" fill="rgb(239,18,37)" fg:x="58423" fg:w="78"/><text x="72.2146%" y="111.50"></text></g><g><title>[kernel::context::memory::cow+81] (78 samples, 0.10%)</title><rect x="71.9646%" y="85" width="0.0961%" height="15" fill="rgb(218,185,22)" fg:x="58423" fg:w="78"/><text x="72.2146%" y="95.50"></text></g><g><title>[kernel::context::memory::init_frame+5e] (48 samples, 0.06%)</title><rect x="72.0015%" y="69" width="0.0591%" height="15" fill="rgb(225,218,4)" fg:x="58453" fg:w="48"/><text x="72.2515%" y="79.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate+c9] (27 samples, 0.03%)</title><rect x="72.0274%" y="53" width="0.0333%" height="15" fill="rgb(230,182,32)" fg:x="58474" fg:w="27"/><text x="72.2774%" y="63.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::exception::page+37] (123 samples, 0.15%)</title><rect x="71.9116%" y="133" width="0.1515%" height="15" fill="rgb(242,56,43)" fg:x="58380" fg:w="123"/><text x="72.1616%" y="143.50"></text></g><g><title>[kernel::context::memory::UserGrants::remove+29] (10 samples, 0.01%)</title><rect x="72.0680%" y="101" width="0.0123%" height="15" fill="rgb(233,99,24)" fg:x="58507" fg:w="10"/><text x="72.3180%" y="111.50"></text></g><g><title>[kernel::context::memory::AddrSpace::munmap+1b3] (14 samples, 0.02%)</title><rect x="72.0668%" y="117" width="0.0172%" height="15" fill="rgb(234,209,42)" fg:x="58506" fg:w="14"/><text x="72.3168%" y="127.50"></text></g><g><title>[kernel::scheme::user::CaptureGuard<_,_>::release_inner+171] (37 samples, 0.05%)</title><rect x="72.0656%" y="133" width="0.0456%" height="15" fill="rgb(227,7,12)" fg:x="58505" fg:w="37"/><text x="72.3156%" y="143.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::kread+132] (166 samples, 0.20%)</title><rect x="71.9079%" y="149" width="0.2045%" height="15" fill="rgb(245,203,43)" fg:x="58377" fg:w="166"/><text x="72.1579%" y="159.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::kread+140] (14 samples, 0.02%)</title><rect x="72.1124%" y="149" width="0.0172%" height="15" fill="rgb(238,205,33)" fg:x="58543" fg:w="14"/><text x="72.3624%" y="159.50"></text></g><g><title>[kernel::context::memory::AddrSpace::mmap+368] (11 samples, 0.01%)</title><rect x="72.1506%" y="117" width="0.0135%" height="15" fill="rgb(231,56,7)" fg:x="58574" fg:w="11"/><text x="72.4006%" y="127.50"></text></g><g><title>[kernel::context::memory::AddrSpace::mmap+3b6] (61 samples, 0.08%)</title><rect x="72.1641%" y="117" width="0.0751%" height="15" fill="rgb(244,186,29)" fg:x="58585" fg:w="61"/><text x="72.4141%" y="127.50"></text></g><g><title>[kernel::scheme::user::UserInner::capture_inner+35b] (79 samples, 0.10%)</title><rect x="72.1481%" y="133" width="0.0973%" height="15" fill="rgb(234,111,31)" fg:x="58572" fg:w="79"/><text x="72.3981%" y="143.50"></text></g><g><title>[kernel::scheme::user::UserInner::capture_inner+48d] (11 samples, 0.01%)</title><rect x="72.2454%" y="133" width="0.0135%" height="15" fill="rgb(241,149,10)" fg:x="58651" fg:w="11"/><text x="72.4954%" y="143.50"></text></g><g><title>[kernel::context::memory::AddrSpace::mmap+46d] (11 samples, 0.01%)</title><rect x="72.2454%" y="117" width="0.0135%" height="15" fill="rgb(249,206,44)" fg:x="58651" fg:w="11"/><text x="72.4954%" y="127.50"></text></g><g><title>[kernel::context::memory::AddrSpace::mmap+3b6] (35 samples, 0.04%)</title><rect x="72.2627%" y="117" width="0.0431%" height="15" fill="rgb(251,153,30)" fg:x="58665" fg:w="35"/><text x="72.5127%" y="127.50"></text></g><g><title>[kernel::scheme::user::UserInner::capture_inner+5e2] (39 samples, 0.05%)</title><rect x="72.2590%" y="133" width="0.0480%" height="15" fill="rgb(239,152,38)" fg:x="58662" fg:w="39"/><text x="72.5090%" y="143.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::kread+61] (145 samples, 0.18%)</title><rect x="72.1309%" y="149" width="0.1786%" height="15" fill="rgb(249,139,47)" fg:x="58558" fg:w="145"/><text x="72.3809%" y="159.50"></text></g><g><title>[kernel::syscall::syscall+1f95] (4,920 samples, 6.06%)</title><rect x="66.2626%" y="165" width="6.0604%" height="15" fill="rgb(244,64,35)" fg:x="53794" fg:w="4920"/><text x="66.5126%" y="175.50">[kernel:..</text></g><g><title>[kernel::syscall::syscall+208d] (9 samples, 0.01%)</title><rect x="72.3292%" y="165" width="0.0111%" height="15" fill="rgb(216,46,15)" fg:x="58719" fg:w="9"/><text x="72.5792%" y="175.50"></text></g><g><title>[kernel::context::switch::switch+366] (11 samples, 0.01%)</title><rect x="72.3514%" y="133" width="0.0135%" height="15" fill="rgb(250,74,19)" fg:x="58737" fg:w="11"/><text x="72.6014%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+3da] (98 samples, 0.12%)</title><rect x="72.3711%" y="133" width="0.1207%" height="15" fill="rgb(249,42,33)" fg:x="58753" fg:w="98"/><text x="72.6211%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+42] (204 samples, 0.25%)</title><rect x="72.4930%" y="133" width="0.2513%" height="15" fill="rgb(242,149,17)" fg:x="58852" fg:w="204"/><text x="72.7430%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+44] (9 samples, 0.01%)</title><rect x="72.7443%" y="133" width="0.0111%" height="15" fill="rgb(244,29,21)" fg:x="59056" fg:w="9"/><text x="72.9943%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+4c] (732 samples, 0.90%)</title><rect x="72.7554%" y="133" width="0.9017%" height="15" fill="rgb(220,130,37)" fg:x="59065" fg:w="732"/><text x="73.0054%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+ef] (49 samples, 0.06%)</title><rect x="73.6632%" y="133" width="0.0604%" height="15" fill="rgb(211,67,2)" fg:x="59802" fg:w="49"/><text x="73.9132%" y="143.50"></text></g><g><title>[kernel::context::switch::switch+f7] (55 samples, 0.07%)</title><rect x="73.7236%" y="133" width="0.0677%" height="15" fill="rgb(235,68,52)" fg:x="59851" fg:w="55"/><text x="73.9736%" y="143.50"></text></g><g><title>[kernel::syscall::time::nanosleep+1d7] (1,214 samples, 1.50%)</title><rect x="72.3427%" y="149" width="1.4954%" height="15" fill="rgb(246,142,3)" fg:x="58730" fg:w="1214"/><text x="72.5927%" y="159.50"></text></g><g><title>[kernel::context::switch::switch+fb] (38 samples, 0.05%)</title><rect x="73.7913%" y="133" width="0.0468%" height="15" fill="rgb(241,25,7)" fg:x="59906" fg:w="38"/><text x="74.0413%" y="143.50"></text></g><g><title>[kernel::time::monotonic+2d] (25 samples, 0.03%)</title><rect x="73.8394%" y="133" width="0.0308%" height="15" fill="rgb(242,119,39)" fg:x="59945" fg:w="25"/><text x="74.0894%" y="143.50"></text></g><g><title>[kernel::time::monotonic+9f] (52 samples, 0.06%)</title><rect x="73.8751%" y="133" width="0.0641%" height="15" fill="rgb(241,98,45)" fg:x="59974" fg:w="52"/><text x="74.1251%" y="143.50"></text></g><g><title>[kernel::time::monotonic+a7] (43 samples, 0.05%)</title><rect x="73.9391%" y="133" width="0.0530%" height="15" fill="rgb(254,28,30)" fg:x="60026" fg:w="43"/><text x="74.1891%" y="143.50"></text></g><g><title>[kernel::syscall::time::nanosleep+32e] (184 samples, 0.23%)</title><rect x="73.8381%" y="149" width="0.2266%" height="15" fill="rgb(241,142,54)" fg:x="59944" fg:w="184"/><text x="74.0881%" y="159.50"></text></g><g><title>[kernel::time::monotonic+ab] (59 samples, 0.07%)</title><rect x="73.9921%" y="133" width="0.0727%" height="15" fill="rgb(222,85,15)" fg:x="60069" fg:w="59"/><text x="74.2421%" y="143.50"></text></g><g><title>[kernel::time::monotonic+2d] (36 samples, 0.04%)</title><rect x="74.0648%" y="133" width="0.0443%" height="15" fill="rgb(210,85,47)" fg:x="60128" fg:w="36"/><text x="74.3148%" y="143.50"></text></g><g><title>[kernel::time::monotonic+34] (31 samples, 0.04%)</title><rect x="74.1091%" y="133" width="0.0382%" height="15" fill="rgb(224,206,25)" fg:x="60164" fg:w="31"/><text x="74.3591%" y="143.50"></text></g><g><title>[kernel::time::monotonic+9f] (42 samples, 0.05%)</title><rect x="74.1498%" y="133" width="0.0517%" height="15" fill="rgb(243,201,19)" fg:x="60197" fg:w="42"/><text x="74.3998%" y="143.50"></text></g><g><title>[kernel::time::monotonic+a7] (41 samples, 0.05%)</title><rect x="74.2015%" y="133" width="0.0505%" height="15" fill="rgb(236,59,4)" fg:x="60239" fg:w="41"/><text x="74.4515%" y="143.50"></text></g><g><title>[kernel::syscall::syscall+20b6] (1,590 samples, 1.96%)</title><rect x="72.3403%" y="165" width="1.9585%" height="15" fill="rgb(254,179,45)" fg:x="58728" fg:w="1590"/><text x="72.5903%" y="175.50">[..</text></g><g><title>[kernel::syscall::time::nanosleep+7e] (190 samples, 0.23%)</title><rect x="74.0648%" y="149" width="0.2340%" height="15" fill="rgb(226,14,10)" fg:x="60128" fg:w="190"/><text x="74.3148%" y="159.50"></text></g><g><title>[kernel::time::monotonic+ab] (38 samples, 0.05%)</title><rect x="74.2520%" y="133" width="0.0468%" height="15" fill="rgb(244,27,41)" fg:x="60280" fg:w="38"/><text x="74.5020%" y="143.50"></text></g><g><title>[<kernel::allocator::linked_list::Allocator as core::alloc::global::GlobalAlloc>::alloc+129] (36 samples, 0.04%)</title><rect x="74.3037%" y="149" width="0.0443%" height="15" fill="rgb(235,35,32)" fg:x="60322" fg:w="36"/><text x="74.5537%" y="159.50"></text></g><g><title>[kernel::syscall::syscall+2130] (46 samples, 0.06%)</title><rect x="74.3013%" y="165" width="0.0567%" height="15" fill="rgb(218,68,31)" fg:x="60320" fg:w="46"/><text x="74.5513%" y="175.50"></text></g><g><title>[kernel::syscall::syscall+221a] (32 samples, 0.04%)</title><rect x="74.3592%" y="165" width="0.0394%" height="15" fill="rgb(207,120,37)" fg:x="60367" fg:w="32"/><text x="74.6092%" y="175.50"></text></g><g><title>[linked_list_allocator::hole::HoleList::deallocate+9e] (29 samples, 0.04%)</title><rect x="74.3629%" y="149" width="0.0357%" height="15" fill="rgb(227,98,0)" fg:x="60370" fg:w="29"/><text x="74.6129%" y="159.50"></text></g><g><title>[kernel::syscall::syscall+2297] (30 samples, 0.04%)</title><rect x="74.3986%" y="165" width="0.0370%" height="15" fill="rgb(207,7,3)" fg:x="60399" fg:w="30"/><text x="74.6486%" y="175.50"></text></g><g><title>[<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop+5e] (29 samples, 0.04%)</title><rect x="74.3998%" y="149" width="0.0357%" height="15" fill="rgb(206,98,19)" fg:x="60400" fg:w="29"/><text x="74.6498%" y="159.50"></text></g><g><title>[linked_list_allocator::hole::HoleList::deallocate+9e] (20 samples, 0.02%)</title><rect x="74.4109%" y="133" width="0.0246%" height="15" fill="rgb(217,5,26)" fg:x="60409" fg:w="20"/><text x="74.6609%" y="143.50"></text></g><g><title>[kernel::syscall::syscall+22e9] (28 samples, 0.03%)</title><rect x="74.4491%" y="165" width="0.0345%" height="15" fill="rgb(235,190,38)" fg:x="60440" fg:w="28"/><text x="74.6991%" y="175.50"></text></g><g><title>[kernel::syscall::syscall+3a7] (10 samples, 0.01%)</title><rect x="74.4910%" y="165" width="0.0123%" height="15" fill="rgb(247,86,24)" fg:x="60474" fg:w="10"/><text x="74.7410%" y="175.50"></text></g><g><title>[kernel::syscall::fs::funmap+2f4] (10 samples, 0.01%)</title><rect x="74.4910%" y="149" width="0.0123%" height="15" fill="rgb(205,101,16)" fg:x="60474" fg:w="10"/><text x="74.7410%" y="159.50"></text></g><g><title>[__inner_syscall_instruction+63] (15,006 samples, 18.48%)</title><rect x="56.0524%" y="181" width="18.4842%" height="15" fill="rgb(246,168,33)" fg:x="45505" fg:w="15006"/><text x="56.3024%" y="191.50">[__inner_syscall_instruction+..</text></g><g><title>[__inner_syscall_instruction+7d] (25 samples, 0.03%)</title><rect x="74.5365%" y="181" width="0.0308%" height="15" fill="rgb(231,114,1)" fg:x="60511" fg:w="25"/><text x="74.7865%" y="191.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::syscall::syscall_instruction+43] (15,094 samples, 18.59%)</title><rect x="55.9785%" y="197" width="18.5926%" height="15" fill="rgb(207,184,53)" fg:x="45445" fg:w="15094"/><text x="56.2285%" y="207.50">[kernel::arch::x86_64::interr..</text></g><g><title>[kernel::context::signal::signal_handler+a26] (9 samples, 0.01%)</title><rect x="74.5735%" y="181" width="0.0111%" height="15" fill="rgb(224,95,51)" fg:x="60541" fg:w="9"/><text x="74.8235%" y="191.50"></text></g><g><title>[kernel::syscall::process::sigreturn+172] (9 samples, 0.01%)</title><rect x="74.5735%" y="165" width="0.0111%" height="15" fill="rgb(212,188,45)" fg:x="60541" fg:w="9"/><text x="74.8235%" y="175.50"></text></g><g><title>[kernel::context::arch::signal_handler_wrapper+15] (10 samples, 0.01%)</title><rect x="74.5735%" y="197" width="0.0123%" height="15" fill="rgb(223,154,38)" fg:x="60541" fg:w="10"/><text x="74.8235%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+1121] (12 samples, 0.01%)</title><rect x="74.5994%" y="197" width="0.0148%" height="15" fill="rgb(251,22,52)" fg:x="60562" fg:w="12"/><text x="74.8494%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+1186] (11 samples, 0.01%)</title><rect x="74.6191%" y="197" width="0.0135%" height="15" fill="rgb(229,209,22)" fg:x="60578" fg:w="11"/><text x="74.8691%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+1188] (51 samples, 0.06%)</title><rect x="74.6326%" y="197" width="0.0628%" height="15" fill="rgb(234,138,34)" fg:x="60589" fg:w="51"/><text x="74.8826%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+1c9] (28 samples, 0.03%)</title><rect x="74.7201%" y="197" width="0.0345%" height="15" fill="rgb(212,95,11)" fg:x="60660" fg:w="28"/><text x="74.9701%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+1cb] (28 samples, 0.03%)</title><rect x="74.7546%" y="197" width="0.0345%" height="15" fill="rgb(240,179,47)" fg:x="60688" fg:w="28"/><text x="75.0046%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+1d9] (52 samples, 0.06%)</title><rect x="74.7891%" y="197" width="0.0641%" height="15" fill="rgb(240,163,11)" fg:x="60716" fg:w="52"/><text x="75.0391%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+27e] (16 samples, 0.02%)</title><rect x="74.8580%" y="197" width="0.0197%" height="15" fill="rgb(236,37,12)" fg:x="60772" fg:w="16"/><text x="75.1080%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+34] (14 samples, 0.02%)</title><rect x="74.8777%" y="197" width="0.0172%" height="15" fill="rgb(232,164,16)" fg:x="60788" fg:w="14"/><text x="75.1277%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+366] (235 samples, 0.29%)</title><rect x="74.8962%" y="197" width="0.2895%" height="15" fill="rgb(244,205,15)" fg:x="60803" fg:w="235"/><text x="75.1462%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+36d] (9 samples, 0.01%)</title><rect x="75.1857%" y="197" width="0.0111%" height="15" fill="rgb(223,117,47)" fg:x="61038" fg:w="9"/><text x="75.4357%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+37a] (17 samples, 0.02%)</title><rect x="75.1968%" y="197" width="0.0209%" height="15" fill="rgb(244,107,35)" fg:x="61047" fg:w="17"/><text x="75.4468%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+37d] (9 samples, 0.01%)</title><rect x="75.2177%" y="197" width="0.0111%" height="15" fill="rgb(205,140,8)" fg:x="61064" fg:w="9"/><text x="75.4677%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+3da] (1,382 samples, 1.70%)</title><rect x="75.2374%" y="197" width="1.7023%" height="15" fill="rgb(228,84,46)" fg:x="61080" fg:w="1382"/><text x="75.4874%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+406] (18 samples, 0.02%)</title><rect x="76.9705%" y="197" width="0.0222%" height="15" fill="rgb(254,188,9)" fg:x="62487" fg:w="18"/><text x="77.2205%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+42] (3,446 samples, 4.24%)</title><rect x="77.0038%" y="197" width="4.2447%" height="15" fill="rgb(206,112,54)" fg:x="62514" fg:w="3446"/><text x="77.2538%" y="207.50">[kern..</text></g><g><title>[kernel::context::switch::switch+44] (100 samples, 0.12%)</title><rect x="81.2485%" y="197" width="0.1232%" height="15" fill="rgb(216,84,49)" fg:x="65960" fg:w="100"/><text x="81.4985%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+4c] (9,659 samples, 11.90%)</title><rect x="81.3717%" y="197" width="11.8978%" height="15" fill="rgb(214,194,35)" fg:x="66060" fg:w="9659"/><text x="81.6217%" y="207.50">[kernel::context::..</text></g><g><title>[kernel::context::switch::switch+6a] (12 samples, 0.01%)</title><rect x="93.2720%" y="197" width="0.0148%" height="15" fill="rgb(249,28,3)" fg:x="75721" fg:w="12"/><text x="93.5220%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+72] (28 samples, 0.03%)</title><rect x="93.2868%" y="197" width="0.0345%" height="15" fill="rgb(222,56,52)" fg:x="75733" fg:w="28"/><text x="93.5368%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+79] (38 samples, 0.05%)</title><rect x="93.3213%" y="197" width="0.0468%" height="15" fill="rgb(245,217,50)" fg:x="75761" fg:w="38"/><text x="93.5713%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+939] (11 samples, 0.01%)</title><rect x="93.3952%" y="197" width="0.0135%" height="15" fill="rgb(213,201,24)" fg:x="75821" fg:w="11"/><text x="93.6452%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+9ad] (409 samples, 0.50%)</title><rect x="93.4087%" y="197" width="0.5038%" height="15" fill="rgb(248,116,28)" fg:x="75832" fg:w="409"/><text x="93.6587%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+9b5] (332 samples, 0.41%)</title><rect x="93.9125%" y="197" width="0.4090%" height="15" fill="rgb(219,72,43)" fg:x="76241" fg:w="332"/><text x="94.1625%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+9b9] (292 samples, 0.36%)</title><rect x="94.3215%" y="197" width="0.3597%" height="15" fill="rgb(209,138,14)" fg:x="76573" fg:w="292"/><text x="94.5715%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+a5] (12 samples, 0.01%)</title><rect x="94.6812%" y="197" width="0.0148%" height="15" fill="rgb(222,18,33)" fg:x="76865" fg:w="12"/><text x="94.9312%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+e1d] (11 samples, 0.01%)</title><rect x="94.7058%" y="197" width="0.0135%" height="15" fill="rgb(213,199,7)" fg:x="76885" fg:w="11"/><text x="94.9558%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+ef] (1,347 samples, 1.66%)</title><rect x="94.7206%" y="197" width="1.6592%" height="15" fill="rgb(250,110,10)" fg:x="76897" fg:w="1347"/><text x="94.9706%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+f7] (1,217 samples, 1.50%)</title><rect x="96.3798%" y="197" width="1.4991%" height="15" fill="rgb(248,123,6)" fg:x="78244" fg:w="1217"/><text x="96.6298%" y="207.50"></text></g><g><title>[kernel::context::switch::switch+fb] (1,170 samples, 1.44%)</title><rect x="97.8789%" y="197" width="1.4412%" height="15" fill="rgb(206,91,31)" fg:x="79461" fg:w="1170"/><text x="98.1289%" y="207.50"></text></g><g><title>[kernel::context::switch::switch_finish_hook+75] (10 samples, 0.01%)</title><rect x="99.3250%" y="197" width="0.0123%" height="15" fill="rgb(211,154,13)" fg:x="80635" fg:w="10"/><text x="99.5750%" y="207.50"></text></g><g><title>[kernel::scheme::KernelScheme::kopen+b0] (122 samples, 0.15%)</title><rect x="99.3472%" y="197" width="0.1503%" height="15" fill="rgb(225,148,7)" fg:x="80653" fg:w="122"/><text x="99.5972%" y="207.50"></text></g><g><title>[kernel::sync::wait_condition::WaitCondition::notify+ed] (68 samples, 0.08%)</title><rect x="99.5245%" y="197" width="0.0838%" height="15" fill="rgb(220,160,43)" fg:x="80797" fg:w="68"/><text x="99.7745%" y="207.50"></text></g><g><title>[kernel::time::monotonic+34] (17 samples, 0.02%)</title><rect x="99.6157%" y="197" width="0.0209%" height="15" fill="rgb(213,52,39)" fg:x="80871" fg:w="17"/><text x="99.8657%" y="207.50"></text></g><g><title>[kernel::time::monotonic+9f] (34 samples, 0.04%)</title><rect x="99.6366%" y="197" width="0.0419%" height="15" fill="rgb(243,137,7)" fg:x="80888" fg:w="34"/><text x="99.8866%" y="207.50"></text></g><g><title>[kernel::time::monotonic+a7] (42 samples, 0.05%)</title><rect x="99.6785%" y="197" width="0.0517%" height="15" fill="rgb(230,79,13)" fg:x="80922" fg:w="42"/><text x="99.9285%" y="207.50"></text></g><g><title>[kernel::time::monotonic+ab] (54 samples, 0.07%)</title><rect x="99.7302%" y="197" width="0.0665%" height="15" fill="rgb(247,105,23)" fg:x="80964" fg:w="54"/><text x="99.9802%" y="207.50"></text></g><g><title>[kernel::time::realtime+1a0] (11 samples, 0.01%)</title><rect x="99.7968%" y="197" width="0.0135%" height="15" fill="rgb(223,179,41)" fg:x="81018" fg:w="11"/><text x="100.0468%" y="207.50"></text></g><g><title>[kernel::time::realtime+df] (54 samples, 0.07%)</title><rect x="99.8214%" y="197" width="0.0665%" height="15" fill="rgb(218,9,34)" fg:x="81038" fg:w="54"/><text x="100.0714%" y="207.50"></text></g><g><title>[kernel::time::realtime+e7] (40 samples, 0.05%)</title><rect x="99.8879%" y="197" width="0.0493%" height="15" fill="rgb(222,106,8)" fg:x="81092" fg:w="40"/><text x="100.1379%" y="207.50"></text></g><g><title>[kernel::time::realtime+eb] (42 samples, 0.05%)</title><rect x="99.9372%" y="197" width="0.0517%" height="15" fill="rgb(211,220,0)" fg:x="81132" fg:w="42"/><text x="100.1872%" y="207.50"></text></g><g><title>all (81,183 samples, 100%)</title><rect x="0.0000%" y="229" width="100.0000%" height="15" fill="rgb(229,52,16)" fg:x="0" fg:w="81183"/><text x="0.2500%" y="239.50"></text></g><g><title>kernel (81,183 samples, 100.00%)</title><rect x="0.0000%" y="213" width="100.0000%" height="15" fill="rgb(212,155,18)" fg:x="0" fg:w="81183"/><text x="0.2500%" y="223.50">kernel</text></g></svg></svg> \ No newline at end of file diff --git a/static/img/flamegraphs/boot-before.svg b/static/img/flamegraphs/boot-before.svg new file mode 100644 index 00000000..bf457053 --- /dev/null +++ b/static/img/flamegraphs/boot-before.svg @@ -0,0 +1,491 @@ +<?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="278" onload="init(evt)" viewBox="0 0 1200 278" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:fg="http://github.com/jonhoo/inferno"><!--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:monospace; font-size:12px } +#title { text-anchor:middle; font-size:17px; } +#matched { text-anchor:end; } +#search { text-anchor:end; opacity:0.1; cursor:pointer; } +#search:hover, #search.show { opacity:1; } +#subtitle { text-anchor:middle; font-color:rgb(160,160,160); } +#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[ + var nametype = 'Function:'; + var fontsize = 12; + var fontwidth = 0.59; + var xpad = 10; + var inverted = false; + var searchcolor = 'rgb(230,0,230)'; + var fluiddrawing = true; + var truncate_text_right = false; + ]]><![CDATA["use strict"; +var details, searchbtn, unzoombtn, matchedtxt, svg, searching, frames, known_font_width; +function init(evt) { + details = document.getElementById("details").firstChild; + searchbtn = document.getElementById("search"); + unzoombtn = document.getElementById("unzoom"); + matchedtxt = document.getElementById("matched"); + svg = document.getElementsByTagName("svg")[0]; + frames = document.getElementById("frames"); + known_font_width = get_monospace_width(frames); + total_samples = parseInt(frames.attributes.total_samples.value); + searching = 0; + + // Use GET parameters to restore a flamegraph's state. + var restore_state = function() { + 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); + }; + + if (fluiddrawing) { + // Make width dynamic so the SVG fits its parent's width. + svg.removeAttribute("width"); + // Edge requires us to have a viewBox that gets updated with size changes. + var isEdge = /Edge\/\d./i.test(navigator.userAgent); + if (!isEdge) { + svg.removeAttribute("viewBox"); + } + var update_for_width_change = function() { + if (isEdge) { + svg.attributes.viewBox.value = "0 0 " + svg.width.baseVal.value + " " + svg.height.baseVal.value; + } + + // Keep consistent padding on left and right of frames container. + frames.attributes.width.value = svg.width.baseVal.value - xpad * 2; + + // Text truncation needs to be adjusted for the current width. + update_text_for_elements(frames.children); + + // Keep search elements at a fixed distance from right edge. + var svgWidth = svg.width.baseVal.value; + searchbtn.attributes.x.value = svgWidth - xpad; + matchedtxt.attributes.x.value = svgWidth - xpad; + }; + window.addEventListener('resize', function() { + update_for_width_change(); + }); + // This needs to be done asynchronously for Safari to work. + setTimeout(function() { + unzoom(); + update_for_width_change(); + restore_state(); + }, 0); + } else { + restore_state(); + } +} +// 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(); + zoom(target); + + // set parameters for zoom state + var el = target.querySelector("rect"); + if (el && el.attributes && el.attributes.y && el.attributes["fg:x"]) { + var params = get_params() + params.x = el.attributes["fg:x"].value; + params.y = el.attributes.y.value; + history.replaceState(null, null, parse_params(params)); + } + } + else if (e.target.id == "unzoom") { + 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)); + } + else if (e.target.id == "search") search_prompt(); +}, false) +// mouse-over for info +// show +window.addEventListener("mouseover", function(e) { + var target = find_group(e.target); + if (target) details.nodeValue = nametype + " " + 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 +window.addEventListener("keydown",function (e) { + if (e.keyCode === 114 || (e.ctrlKey && e.keyCode === 70)) { + e.preventDefault(); + search_prompt(); + } +}, 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]; + return; +} +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["fg:orig_" + attr] != undefined) return; + if (e.attributes[attr] == undefined) return; + if (val == undefined) val = e.attributes[attr].value; + e.setAttribute("fg:orig_" + attr, val); +} +function orig_load(e, attr) { + if (e.attributes["fg:orig_"+attr] == undefined) return; + e.attributes[attr].value = e.attributes["fg:orig_" + attr].value; + e.removeAttribute("fg: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 get_monospace_width(frames) { + // Given the id="frames" element, return the width of text characters if + // this is a monospace font, otherwise return 0. + text = find_child(frames.children[0], "text"); + originalContent = text.textContent; + text.textContent = "!"; + bangWidth = text.getComputedTextLength(); + text.textContent = "W"; + wWidth = text.getComputedTextLength(); + text.textContent = originalContent; + if (bangWidth === wWidth) { + return bangWidth; + } else { + return 0; + } +} +function update_text_for_elements(elements) { + // In order to render quickly in the browser, you want to do one pass of + // reading attributes, and one pass of mutating attributes. See + // https://web.dev/avoid-large-complex-layouts-and-layout-thrashing/ for details. + + // Fall back to inefficient calculation, if we're variable-width font. + // TODO This should be optimized somehow too. + if (known_font_width === 0) { + for (var i = 0; i < elements.length; i++) { + update_text(elements[i]); + } + return; + } + + var textElemNewAttributes = []; + for (var i = 0; i < elements.length; i++) { + var e = elements[i]; + var r = find_child(e, "rect"); + var t = find_child(e, "text"); + var w = parseFloat(r.attributes.width.value) * frames.attributes.width.value / 100 - 3; + var txt = find_child(e, "title").textContent.replace(/\([^(]*\)$/,""); + var newX = format_percent((parseFloat(r.attributes.x.value) + (100 * 3 / frames.attributes.width.value))); + + // Smaller than this size won't fit anything + if (w < 2 * known_font_width) { + textElemNewAttributes.push([newX, ""]); + continue; + } + + // Fit in full text width + if (txt.length * known_font_width < w) { + textElemNewAttributes.push([newX, txt]); + continue; + } + + var substringLength = Math.floor(w / known_font_width) - 2; + if (truncate_text_right) { + // Truncate the right side of the text. + textElemNewAttributes.push([newX, txt.substring(0, substringLength) + ".."]); + continue; + } else { + // Truncate the left side of the text. + textElemNewAttributes.push([newX, ".." + txt.substring(txt.length - substringLength, txt.length)]); + continue; + } + } + + console.assert(textElemNewAttributes.length === elements.length, "Resize failed, please file a bug at https://github.com/jonhoo/inferno/"); + + // Now that we know new textContent, set it all in one go so we don't refresh a bazillion times. + for (var i = 0; i < elements.length; i++) { + var e = elements[i]; + var values = textElemNewAttributes[i]; + var t = find_child(e, "text"); + t.attributes.x.value = values[0]; + t.textContent = values[1]; + } +} + +function update_text(e) { + var r = find_child(e, "rect"); + var t = find_child(e, "text"); + var w = parseFloat(r.attributes.width.value) * frames.attributes.width.value / 100 - 3; + var txt = find_child(e, "title").textContent.replace(/\([^(]*\)$/,""); + t.attributes.x.value = format_percent((parseFloat(r.attributes.x.value) + (100 * 3 / frames.attributes.width.value))); + + // Smaller than this size won't fit anything + if (w < 2 * fontsize * fontwidth) { + t.textContent = ""; + return; + } + t.textContent = txt; + // Fit in full text width + if (t.getComputedTextLength() < w) + return; + if (truncate_text_right) { + // Truncate the right side of the text. + for (var x = txt.length - 2; x > 0; x--) { + if (t.getSubStringLength(0, x + 2) <= w) { + t.textContent = txt.substring(0, x) + ".."; + return; + } + } + } else { + // Truncate the left side of the text. + for (var x = 2; x < txt.length; x++) { + if (t.getSubStringLength(x - 2, txt.length) <= w) { + t.textContent = ".." + txt.substring(x, txt.length); + return; + } + } + } + t.textContent = ""; +} +// zoom +function zoom_reset(e) { + if (e.tagName == "rect") { + e.attributes.x.value = format_percent(100 * parseInt(e.attributes["fg:x"].value) / total_samples); + e.attributes.width.value = format_percent(100 * parseInt(e.attributes["fg:w"].value) / total_samples); + } + 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, zoomed_width_samples) { + if (e.tagName == "text") { + var parent_x = parseFloat(find_child(e.parentNode, "rect[x]").attributes.x.value); + e.attributes.x.value = format_percent(parent_x + (100 * 3 / frames.attributes.width.value)); + } else if (e.tagName == "rect") { + e.attributes.x.value = format_percent(100 * (parseInt(e.attributes["fg:x"].value) - x) / zoomed_width_samples); + e.attributes.width.value = format_percent(100 * parseInt(e.attributes["fg:w"].value) / zoomed_width_samples); + } + if (e.childNodes == undefined) return; + for(var i = 0, c = e.childNodes; i < c.length; i++) { + zoom_child(c[i], x, zoomed_width_samples); + } +} +function zoom_parent(e) { + if (e.attributes) { + if (e.attributes.x != undefined) { + e.attributes.x.value = "0.0%"; + } + if (e.attributes.width != undefined) { + e.attributes.width.value = "100.0%"; + } + } + 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 = parseInt(attr["fg:w"].value); + var xmin = parseInt(attr["fg:x"].value); + var xmax = xmin + width; + var ymin = parseFloat(attr.y.value); + unzoombtn.classList.remove("hide"); + var el = frames.children; + var to_update_text = []; + for (var i = 0; i < el.length; i++) { + var e = el[i]; + var a = find_child(e, "rect").attributes; + var ex = parseInt(a["fg:x"].value); + var ew = parseInt(a["fg:w"].value); + // Is it an ancestor + if (!inverted) { + var upstack = parseFloat(a.y.value) > ymin; + } else { + var upstack = parseFloat(a.y.value) < ymin; + } + if (upstack) { + // Direct ancestor + if (ex <= xmin && (ex+ew) >= xmax) { + e.classList.add("parent"); + zoom_parent(e); + to_update_text.push(e); + } + // not in current path + else + e.classList.add("hide"); + } + // Children maybe + else { + // no common path + if (ex < xmin || ex >= xmax) { + e.classList.add("hide"); + } + else { + zoom_child(e, xmin, width); + to_update_text.push(e); + } + } + } + update_text_for_elements(to_update_text); +} +function unzoom() { + unzoombtn.classList.add("hide"); + var el = frames.children; + for(var i = 0; i < el.length; i++) { + el[i].classList.remove("parent"); + el[i].classList.remove("hide"); + zoom_reset(el[i]); + } + update_text_for_elements(el); +} +// 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_)", ""); + if (term != null) { + search(term) + } + } else { + reset_search(); + searching = 0; + searchbtn.classList.remove("show"); + searchbtn.firstChild.nodeValue = "Search" + matchedtxt.classList.add("hide"); + matchedtxt.firstChild.nodeValue = "" + } +} +function search(term) { + var re = new RegExp(term); + var el = frames.children; + var matches = new Object(); + var maxwidth = 0; + for (var i = 0; i < el.length; i++) { + var e = el[i]; + // Skip over frames which are either not visible, or below the zoomed-to frame + if (e.classList.contains("hide") || e.classList.contains("parent")) { + continue; + } + 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 = parseInt(rect.attributes["fg:w"].value); + if (w > maxwidth) + maxwidth = w; + if (func.match(re)) { + // highlight + var x = parseInt(rect.attributes["fg:x"].value); + orig_save(rect, "fill"); + rect.attributes.fill.value = searchcolor; + // 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 = term; + 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. + for (var k in keys) { + var x = parseInt(keys[k]); + var w = matches[keys[k]]; + if (x >= lastx + lastw) { + 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 + "%"; +} +function format_percent(n) { + return n.toFixed(4) + "%"; +} +]]></script><rect x="0" y="0" width="100%" height="278" fill="url(#background)"/><text id="title" fill="rgb(0,0,0)" x="50.0000%" y="24.00">Flame Graph</text><text id="details" fill="rgb(0,0,0)" x="10" y="261.00"> </text><text id="unzoom" class="hide" fill="rgb(0,0,0)" x="10" y="24.00">Reset Zoom</text><text id="search" fill="rgb(0,0,0)" x="1190" y="24.00">Search</text><text id="matched" fill="rgb(0,0,0)" x="1190" y="261.00"> </text><svg id="frames" x="10" width="1180" total_samples="6450"><g><title>[<alloc::collections::btree::map::Range<K,V> as core::iter::traits::iterator::Iterator>::next] (4 samples, 0.06%)</title><rect x="0.0000%" y="197" width="0.0620%" height="15" fill="rgb(227,0,7)" fg:x="0" fg:w="4"/><text x="0.2500%" y="207.50"></text></g><g><title>[alloc::collections::btree::map::BTreeMap<K,V,A>::range] (4 samples, 0.06%)</title><rect x="0.0620%" y="197" width="0.0620%" height="15" fill="rgb(217,0,24)" fg:x="4" fg:w="4"/><text x="0.3120%" y="207.50"></text></g><g><title>[alloc::collections::btree::navigate::LeafRange<BorrowType,K,V>::perform_next_back_checked] (1 samples, 0.02%)</title><rect x="0.2171%" y="165" width="0.0155%" height="15" fill="rgb(221,193,54)" fg:x="14" fg:w="1"/><text x="0.4671%" y="175.50"></text></g><g><title>[alloc::collections::btree::map::BTreeMap<K,V,A>::range] (1 samples, 0.02%)</title><rect x="0.2481%" y="149" width="0.0155%" height="15" fill="rgb(248,212,6)" fg:x="16" fg:w="1"/><text x="0.4981%" y="159.50"></text></g><g><title>[alloc::collections::btree::navigate::LeafRange<BorrowType,K,V>::perform_next_back_checked] (2 samples, 0.03%)</title><rect x="0.2636%" y="149" width="0.0310%" height="15" fill="rgb(208,68,35)" fg:x="17" fg:w="2"/><text x="0.5136%" y="159.50"></text></g><g><title>[kernel::context::memory::AddrSpaceWrapper::acquire_write] (2 samples, 0.03%)</title><rect x="0.2946%" y="149" width="0.0310%" height="15" fill="rgb(232,128,0)" fg:x="19" fg:w="2"/><text x="0.5446%" y="159.50"></text></g><g><title>[kernel::context::memory::Flusher::flush] (23 samples, 0.36%)</title><rect x="0.3256%" y="149" width="0.3566%" height="15" fill="rgb(207,160,47)" fg:x="21" fg:w="23"/><text x="0.5756%" y="159.50"></text></g><g><title>[memcpy] (9 samples, 0.14%)</title><rect x="0.5426%" y="133" width="0.1395%" height="15" fill="rgb(228,23,34)" fg:x="35" fg:w="9"/><text x="0.7926%" y="143.50"></text></g><g><title>[kernel::context::memory::Flusher::flush] (5 samples, 0.08%)</title><rect x="0.7132%" y="133" width="0.0775%" height="15" fill="rgb(218,30,26)" fg:x="46" fg:w="5"/><text x="0.9632%" y="143.50"></text></g><g><title>[kernel::context::memory::correct_inner] (434 samples, 6.73%)</title><rect x="0.7907%" y="133" width="6.7287%" height="15" fill="rgb(220,122,19)" fg:x="51" fg:w="434"/><text x="1.0407%" y="143.50">[kernel::..</text></g><g><title>[kernel::memory::init_frame] (434 samples, 6.73%)</title><rect x="0.7907%" y="117" width="6.7287%" height="15" fill="rgb(250,228,42)" fg:x="51" fg:w="434"/><text x="1.0407%" y="127.50">[kernel::..</text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate] (434 samples, 6.73%)</title><rect x="0.7907%" y="101" width="6.7287%" height="15" fill="rgb(240,193,28)" fg:x="51" fg:w="434"/><text x="1.0407%" y="111.50">[<rmm::al..</text></g><g><title>[memset] (7 samples, 0.11%)</title><rect x="7.4109%" y="85" width="0.1085%" height="15" fill="rgb(216,20,37)" fg:x="478" fg:w="7"/><text x="7.6609%" y="95.50"></text></g><g><title>[kernel::context::memory::cow] (30 samples, 0.47%)</title><rect x="7.5194%" y="133" width="0.4651%" height="15" fill="rgb(206,188,39)" fg:x="485" fg:w="30"/><text x="7.7694%" y="143.50"></text></g><g><title>[kernel::memory::init_frame] (30 samples, 0.47%)</title><rect x="7.5194%" y="117" width="0.4651%" height="15" fill="rgb(217,207,13)" fg:x="485" fg:w="30"/><text x="7.7694%" y="127.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate] (30 samples, 0.47%)</title><rect x="7.5194%" y="101" width="0.4651%" height="15" fill="rgb(231,73,38)" fg:x="485" fg:w="30"/><text x="7.7694%" y="111.50"></text></g><g><title>[kernel::memory::init_frame] (9 samples, 0.14%)</title><rect x="7.9845%" y="133" width="0.1395%" height="15" fill="rgb(225,20,46)" fg:x="515" fg:w="9"/><text x="8.2345%" y="143.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate] (9 samples, 0.14%)</title><rect x="7.9845%" y="117" width="0.1395%" height="15" fill="rgb(210,31,41)" fg:x="515" fg:w="9"/><text x="8.2345%" y="127.50"></text></g><g><title>[kernel::context::memory::correct_inner] (481 samples, 7.46%)</title><rect x="0.6822%" y="149" width="7.4574%" height="15" fill="rgb(221,200,47)" fg:x="44" fg:w="481"/><text x="0.9322%" y="159.50">[kernel::c..</text></g><g><title>[memcpy] (1 samples, 0.02%)</title><rect x="8.1240%" y="133" width="0.0155%" height="15" fill="rgb(226,26,5)" fg:x="524" fg:w="1"/><text x="8.3740%" y="143.50"></text></g><g><title>[kernel::context::memory::cow] (46 samples, 0.71%)</title><rect x="8.1395%" y="149" width="0.7132%" height="15" fill="rgb(249,33,26)" fg:x="525" fg:w="46"/><text x="8.3895%" y="159.50"></text></g><g><title>[kernel::memory::init_frame] (46 samples, 0.71%)</title><rect x="8.1395%" y="133" width="0.7132%" height="15" fill="rgb(235,183,28)" fg:x="525" fg:w="46"/><text x="8.3895%" y="143.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate] (43 samples, 0.67%)</title><rect x="8.1860%" y="117" width="0.6667%" height="15" fill="rgb(221,5,38)" fg:x="528" fg:w="43"/><text x="8.4360%" y="127.50"></text></g><g><title>[memset] (1 samples, 0.02%)</title><rect x="8.8372%" y="101" width="0.0155%" height="15" fill="rgb(247,18,42)" fg:x="570" fg:w="1"/><text x="9.0872%" y="111.50"></text></g><g><title>[kernel::memory::init_frame] (1,691 samples, 26.22%)</title><rect x="8.8527%" y="149" width="26.2171%" height="15" fill="rgb(241,131,45)" fg:x="571" fg:w="1691"/><text x="9.1027%" y="159.50">[kernel::memory::init_frame]</text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate] (1,675 samples, 25.97%)</title><rect x="9.1008%" y="133" width="25.9690%" height="15" fill="rgb(249,31,29)" fg:x="587" fg:w="1675"/><text x="9.3508%" y="143.50">[<rmm::allocator::frame::buddy::BuddyAlloc..</text></g><g><title>[memset] (20 samples, 0.31%)</title><rect x="34.7597%" y="117" width="0.3101%" height="15" fill="rgb(225,111,53)" fg:x="2242" fg:w="20"/><text x="35.0097%" y="127.50"></text></g><g><title>[memcpy] (1 samples, 0.02%)</title><rect x="35.0698%" y="149" width="0.0155%" height="15" fill="rgb(238,160,17)" fg:x="2262" fg:w="1"/><text x="35.3198%" y="159.50"></text></g><g><title>[rmm::page::mapper::PageMapper<A,F>::map_phys] (7 samples, 0.11%)</title><rect x="35.0853%" y="149" width="0.1085%" height="15" fill="rgb(214,148,48)" fg:x="2263" fg:w="7"/><text x="35.3353%" y="159.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate] (7 samples, 0.11%)</title><rect x="35.0853%" y="133" width="0.1085%" height="15" fill="rgb(232,36,49)" fg:x="2263" fg:w="7"/><text x="35.3353%" y="143.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::exception::page] (2,264 samples, 35.10%)</title><rect x="0.1240%" y="197" width="35.1008%" height="15" fill="rgb(209,103,24)" fg:x="8" fg:w="2264"/><text x="0.3740%" y="207.50">[kernel::arch::x86_64::interrupt::exception::page]</text></g><g><title>[kernel::arch::x86_64::interrupt::exception::page::inner] (2,259 samples, 35.02%)</title><rect x="0.2016%" y="181" width="35.0233%" height="15" fill="rgb(229,88,8)" fg:x="13" fg:w="2259"/><text x="0.4516%" y="191.50">[kernel::arch::x86_64::interrupt::exception::page::inner]</text></g><g><title>[kernel::context::memory::correct_inner] (2,257 samples, 34.99%)</title><rect x="0.2326%" y="165" width="34.9922%" height="15" fill="rgb(213,181,19)" fg:x="15" fg:w="2257"/><text x="0.4826%" y="175.50">[kernel::context::memory::correct_inner]</text></g><g><title>[rmm::page::mapper::PageMapper<A,F>::translate] (2 samples, 0.03%)</title><rect x="35.1938%" y="149" width="0.0310%" height="15" fill="rgb(254,191,54)" fg:x="2270" fg:w="2"/><text x="35.4438%" y="159.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::keyboard::inner] (2 samples, 0.03%)</title><rect x="35.2248%" y="197" width="0.0310%" height="15" fill="rgb(241,83,37)" fg:x="2272" fg:w="2"/><text x="35.4748%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::keyboard] (1 samples, 0.02%)</title><rect x="35.2558%" y="197" width="0.0155%" height="15" fill="rgb(233,36,39)" fg:x="2274" fg:w="1"/><text x="35.5058%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::keyboard::inner] (1 samples, 0.02%)</title><rect x="35.2558%" y="181" width="0.0155%" height="15" fill="rgb(226,3,54)" fg:x="2274" fg:w="1"/><text x="35.5058%" y="191.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pci2::inner] (6 samples, 0.09%)</title><rect x="35.2713%" y="197" width="0.0930%" height="15" fill="rgb(245,192,40)" fg:x="2275" fg:w="6"/><text x="35.5213%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pci2] (2 samples, 0.03%)</title><rect x="35.3643%" y="197" width="0.0310%" height="15" fill="rgb(238,167,29)" fg:x="2281" fg:w="2"/><text x="35.6143%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pci2::inner] (2 samples, 0.03%)</title><rect x="35.3643%" y="181" width="0.0310%" height="15" fill="rgb(232,182,51)" fg:x="2281" fg:w="2"/><text x="35.6143%" y="191.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pit_stack::inner] (14 samples, 0.22%)</title><rect x="35.3953%" y="197" width="0.2171%" height="15" fill="rgb(231,60,39)" fg:x="2283" fg:w="14"/><text x="35.6453%" y="207.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (17 samples, 0.26%)</title><rect x="35.8450%" y="165" width="0.2636%" height="15" fill="rgb(208,69,12)" fg:x="2312" fg:w="17"/><text x="36.0950%" y="175.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pit_stack] (35 samples, 0.54%)</title><rect x="35.6124%" y="197" width="0.5426%" height="15" fill="rgb(235,93,37)" fg:x="2297" fg:w="35"/><text x="35.8624%" y="207.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::irq::pit_stack::inner] (29 samples, 0.45%)</title><rect x="35.7054%" y="181" width="0.4496%" height="15" fill="rgb(213,116,39)" fg:x="2303" fg:w="29"/><text x="35.9554%" y="191.50"></text></g><g><title>[kernel::context::switch::switch] (3 samples, 0.05%)</title><rect x="36.1085%" y="165" width="0.0465%" height="15" fill="rgb(222,207,29)" fg:x="2329" fg:w="3"/><text x="36.3585%" y="175.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (2 samples, 0.03%)</title><rect x="36.1240%" y="149" width="0.0310%" height="15" fill="rgb(206,96,30)" fg:x="2330" fg:w="2"/><text x="36.3740%" y="159.50"></text></g><g><title>[<kernel::scheme::irq::IrqScheme as kernel::scheme::KernelScheme>::kread] (1 samples, 0.02%)</title><rect x="36.1860%" y="165" width="0.0155%" height="15" fill="rgb(218,138,4)" fg:x="2334" fg:w="1"/><text x="36.4360%" y="175.50"></text></g><g><title>[<kernel::scheme::debug::DebugScheme as kernel::scheme::KernelScheme>::kwrite] (221 samples, 3.43%)</title><rect x="36.2791%" y="149" width="3.4264%" height="15" fill="rgb(250,191,14)" fg:x="2340" fg:w="221"/><text x="36.5291%" y="159.50">[<k..</text></g><g><title>[kernel::devices::uart_16550::SerialPort<T>::write] (221 samples, 3.43%)</title><rect x="36.2791%" y="133" width="3.4264%" height="15" fill="rgb(239,60,40)" fg:x="2340" fg:w="221"/><text x="36.5291%" y="143.50">[ke..</text></g><g><title>[kernel::arch::x86_shared::time::counter] (62 samples, 0.96%)</title><rect x="40.6202%" y="117" width="0.9612%" height="15" fill="rgb(206,27,48)" fg:x="2620" fg:w="62"/><text x="40.8702%" y="127.50"></text></g><g><title>[<kernel::scheme::event::EventScheme as kernel::scheme::KernelScheme>::kread] (122 samples, 1.89%)</title><rect x="39.7054%" y="149" width="1.8915%" height="15" fill="rgb(225,35,8)" fg:x="2561" fg:w="122"/><text x="39.9554%" y="159.50">[..</text></g><g><title>[kernel::context::switch::switch] (119 samples, 1.84%)</title><rect x="39.7519%" y="133" width="1.8450%" height="15" fill="rgb(250,213,24)" fg:x="2564" fg:w="119"/><text x="40.0019%" y="143.50">[..</text></g><g><title>[kernel::context::switch::switch_finish_hook] (1 samples, 0.02%)</title><rect x="41.5814%" y="117" width="0.0155%" height="15" fill="rgb(247,123,22)" fg:x="2682" fg:w="1"/><text x="41.8314%" y="127.50"></text></g><g><title>[<kernel::scheme::event::EventScheme as kernel::scheme::KernelScheme>::kwrite] (1 samples, 0.02%)</title><rect x="41.5969%" y="149" width="0.0155%" height="15" fill="rgb(231,138,38)" fg:x="2683" fg:w="1"/><text x="41.8469%" y="159.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::fevent] (1 samples, 0.02%)</title><rect x="41.5969%" y="133" width="0.0155%" height="15" fill="rgb(231,145,46)" fg:x="2683" fg:w="1"/><text x="41.8469%" y="143.50"></text></g><g><title>[kernel::scheme::user::UserInner::call] (1 samples, 0.02%)</title><rect x="41.5969%" y="117" width="0.0155%" height="15" fill="rgb(251,118,11)" fg:x="2683" fg:w="1"/><text x="41.8469%" y="127.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner] (1 samples, 0.02%)</title><rect x="41.5969%" y="101" width="0.0155%" height="15" fill="rgb(217,147,25)" fg:x="2683" fg:w="1"/><text x="41.8469%" y="111.50"></text></g><g><title>[kernel::context::switch::switch] (1 samples, 0.02%)</title><rect x="41.5969%" y="85" width="0.0155%" height="15" fill="rgb(247,81,37)" fg:x="2683" fg:w="1"/><text x="41.8469%" y="95.50"></text></g><g><title>[<kernel::scheme::irq::IrqScheme as kernel::scheme::KernelScheme>::kread] (1 samples, 0.02%)</title><rect x="41.6124%" y="149" width="0.0155%" height="15" fill="rgb(209,12,38)" fg:x="2684" fg:w="1"/><text x="41.8624%" y="159.50"></text></g><g><title>[<kernel::scheme::irq::IrqScheme as kernel::scheme::KernelScheme>::kwrite] (3 samples, 0.05%)</title><rect x="41.6279%" y="149" width="0.0465%" height="15" fill="rgb(227,1,9)" fg:x="2685" fg:w="3"/><text x="41.8779%" y="159.50"></text></g><g><title>[<kernel::scheme::pipe::PipeScheme as kernel::scheme::KernelScheme>::kread] (2 samples, 0.03%)</title><rect x="41.6744%" y="149" width="0.0310%" height="15" fill="rgb(248,47,43)" fg:x="2688" fg:w="2"/><text x="41.9244%" y="159.50"></text></g><g><title>[kernel::sync::wait_condition::WaitCondition::wait] (2 samples, 0.03%)</title><rect x="41.6744%" y="133" width="0.0310%" height="15" fill="rgb(221,10,30)" fg:x="2688" fg:w="2"/><text x="41.9244%" y="143.50"></text></g><g><title>[kernel::context::switch::switch] (2 samples, 0.03%)</title><rect x="41.6744%" y="117" width="0.0310%" height="15" fill="rgb(210,229,1)" fg:x="2688" fg:w="2"/><text x="41.9244%" y="127.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (1 samples, 0.02%)</title><rect x="41.6899%" y="101" width="0.0155%" height="15" fill="rgb(222,148,37)" fg:x="2689" fg:w="1"/><text x="41.9399%" y="111.50"></text></g><g><title>[<[A] as core::slice::cmp::SlicePartialEq<B>>::equal] (1 samples, 0.02%)</title><rect x="41.7054%" y="133" width="0.0155%" height="15" fill="rgb(234,67,33)" fg:x="2690" fg:w="1"/><text x="41.9554%" y="143.50"></text></g><g><title>[kernel::context::list::ContextList::insert_context_raw] (4 samples, 0.06%)</title><rect x="41.7209%" y="101" width="0.0620%" height="15" fill="rgb(247,98,35)" fg:x="2691" fg:w="4"/><text x="41.9709%" y="111.50"></text></g><g><title>[kernel::memory::init_frame] (4 samples, 0.06%)</title><rect x="41.7209%" y="85" width="0.0620%" height="15" fill="rgb(247,138,52)" fg:x="2691" fg:w="4"/><text x="41.9709%" y="95.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate] (4 samples, 0.06%)</title><rect x="41.7209%" y="69" width="0.0620%" height="15" fill="rgb(213,79,30)" fg:x="2691" fg:w="4"/><text x="41.9709%" y="79.50"></text></g><g><title>[<kernel::scheme::proc::ProcScheme<_> as kernel::scheme::KernelScheme>::kopen] (6 samples, 0.09%)</title><rect x="41.7054%" y="149" width="0.0930%" height="15" fill="rgb(246,177,23)" fg:x="2690" fg:w="6"/><text x="41.9554%" y="159.50"></text></g><g><title>[kernel::scheme::proc::inherit_context] (5 samples, 0.08%)</title><rect x="41.7209%" y="133" width="0.0775%" height="15" fill="rgb(230,62,27)" fg:x="2691" fg:w="5"/><text x="41.9709%" y="143.50"></text></g><g><title>[kernel::context::list::ContextList::spawn] (5 samples, 0.08%)</title><rect x="41.7209%" y="117" width="0.0775%" height="15" fill="rgb(216,154,8)" fg:x="2691" fg:w="5"/><text x="41.9709%" y="127.50"></text></g><g><title>[kernel::context::memory::AddrSpaceWrapper::new] (1 samples, 0.02%)</title><rect x="41.7829%" y="101" width="0.0155%" height="15" fill="rgb(244,35,45)" fg:x="2695" fg:w="1"/><text x="42.0329%" y="111.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate] (1 samples, 0.02%)</title><rect x="41.7829%" y="85" width="0.0155%" height="15" fill="rgb(251,115,12)" fg:x="2695" fg:w="1"/><text x="42.0329%" y="95.50"></text></g><g><title>[<kernel::scheme::proc::ProcScheme<_> as kernel::scheme::KernelScheme>::kwrite] (10 samples, 0.16%)</title><rect x="41.7984%" y="149" width="0.1550%" height="15" fill="rgb(240,54,50)" fg:x="2696" fg:w="10"/><text x="42.0484%" y="159.50"></text></g><g><title>[<kernel::scheme::memory::MemoryScheme as kernel::scheme::KernelScheme>::kfmap] (10 samples, 0.16%)</title><rect x="41.7984%" y="133" width="0.1550%" height="15" fill="rgb(233,84,52)" fg:x="2696" fg:w="10"/><text x="42.0484%" y="143.50"></text></g><g><title>[kernel::scheme::memory::MemoryScheme::fmap_anonymous] (10 samples, 0.16%)</title><rect x="41.7984%" y="117" width="0.1550%" height="15" fill="rgb(207,117,47)" fg:x="2696" fg:w="10"/><text x="42.0484%" y="127.50"></text></g><g><title>[kernel::context::memory::Grant::zeroed] (10 samples, 0.16%)</title><rect x="41.7984%" y="101" width="0.1550%" height="15" fill="rgb(249,43,39)" fg:x="2696" fg:w="10"/><text x="42.0484%" y="111.50"></text></g><g><title>[rmm::page::mapper::PageMapper<A,F>::map_phys] (10 samples, 0.16%)</title><rect x="41.7984%" y="85" width="0.1550%" height="15" fill="rgb(209,38,44)" fg:x="2696" fg:w="10"/><text x="42.0484%" y="95.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate] (9 samples, 0.14%)</title><rect x="41.8140%" y="69" width="0.1395%" height="15" fill="rgb(236,212,23)" fg:x="2697" fg:w="9"/><text x="42.0640%" y="79.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (183 samples, 2.84%)</title><rect x="44.4651%" y="117" width="2.8372%" height="15" fill="rgb(242,79,21)" fg:x="2868" fg:w="183"/><text x="44.7151%" y="127.50">[k..</text></g><g><title>[<kernel::scheme::root::RootScheme as kernel::scheme::KernelScheme>::kread] (346 samples, 5.36%)</title><rect x="41.9535%" y="149" width="5.3643%" height="15" fill="rgb(211,96,35)" fg:x="2706" fg:w="346"/><text x="42.2035%" y="159.50">[<kerne..</text></g><g><title>[kernel::context::switch::switch] (344 samples, 5.33%)</title><rect x="41.9845%" y="133" width="5.3333%" height="15" fill="rgb(253,215,40)" fg:x="2708" fg:w="344"/><text x="42.2345%" y="143.50">[kernel..</text></g><g><title>[kernel::context::switch::switch_finish_hook] (1 samples, 0.02%)</title><rect x="47.3023%" y="117" width="0.0155%" height="15" fill="rgb(211,81,21)" fg:x="3051" fg:w="1"/><text x="47.5523%" y="127.50"></text></g><g><title>[<kernel::scheme::root::RootScheme as kernel::scheme::KernelScheme>::kwrite] (37 samples, 0.57%)</title><rect x="47.3178%" y="149" width="0.5736%" height="15" fill="rgb(208,190,38)" fg:x="3052" fg:w="37"/><text x="47.5678%" y="159.50"></text></g><g><title>[kernel::scheme::user::UserInner::respond] (35 samples, 0.54%)</title><rect x="47.3488%" y="133" width="0.5426%" height="15" fill="rgb(235,213,38)" fg:x="3054" fg:w="35"/><text x="47.5988%" y="143.50"></text></g><g><title>[<kernel::scheme::time::TimeScheme as kernel::scheme::KernelScheme>::kread] (1 samples, 0.02%)</title><rect x="47.8915%" y="149" width="0.0155%" height="15" fill="rgb(237,122,38)" fg:x="3089" fg:w="1"/><text x="48.1415%" y="159.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (1 samples, 0.02%)</title><rect x="47.8915%" y="133" width="0.0155%" height="15" fill="rgb(244,218,35)" fg:x="3089" fg:w="1"/><text x="48.1415%" y="143.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::kfpath] (1 samples, 0.02%)</title><rect x="47.9070%" y="149" width="0.0155%" height="15" fill="rgb(240,68,47)" fg:x="3090" fg:w="1"/><text x="48.1570%" y="159.50"></text></g><g><title>[kernel::scheme::user::UserInner::call] (1 samples, 0.02%)</title><rect x="47.9070%" y="133" width="0.0155%" height="15" fill="rgb(210,16,53)" fg:x="3090" fg:w="1"/><text x="48.1570%" y="143.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner] (1 samples, 0.02%)</title><rect x="47.9070%" y="117" width="0.0155%" height="15" fill="rgb(235,124,12)" fg:x="3090" fg:w="1"/><text x="48.1570%" y="127.50"></text></g><g><title>[kernel::context::switch::switch] (1 samples, 0.02%)</title><rect x="47.9070%" y="101" width="0.0155%" height="15" fill="rgb(224,169,11)" fg:x="3090" fg:w="1"/><text x="48.1570%" y="111.50"></text></g><g><title>[core::ptr::drop_in_place<kernel::scheme::user::CaptureGuard<_,_>>] (1 samples, 0.02%)</title><rect x="47.9225%" y="133" width="0.0155%" height="15" fill="rgb(250,166,2)" fg:x="3091" fg:w="1"/><text x="48.1725%" y="143.50"></text></g><g><title>[kernel::context::memory::AddrSpaceWrapper::munmap] (1 samples, 0.02%)</title><rect x="47.9225%" y="117" width="0.0155%" height="15" fill="rgb(242,216,29)" fg:x="3091" fg:w="1"/><text x="48.1725%" y="127.50"></text></g><g><title>[kernel::context::memory::AddrSpace::munmap_inner] (1 samples, 0.02%)</title><rect x="47.9225%" y="101" width="0.0155%" height="15" fill="rgb(230,116,27)" fg:x="3091" fg:w="1"/><text x="48.1725%" y="111.50"></text></g><g><title>[alloc::collections::btree::map::BTreeMap<K,V,A>::remove] (1 samples, 0.02%)</title><rect x="47.9225%" y="85" width="0.0155%" height="15" fill="rgb(228,99,48)" fg:x="3091" fg:w="1"/><text x="48.1725%" y="95.50"></text></g><g><title>[kernel::context::switch::switch] (6 samples, 0.09%)</title><rect x="47.9380%" y="117" width="0.0930%" height="15" fill="rgb(253,11,6)" fg:x="3092" fg:w="6"/><text x="48.1880%" y="127.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (5 samples, 0.08%)</title><rect x="47.9535%" y="101" width="0.0775%" height="15" fill="rgb(247,143,39)" fg:x="3093" fg:w="5"/><text x="48.2035%" y="111.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner] (8 samples, 0.12%)</title><rect x="47.9380%" y="133" width="0.1240%" height="15" fill="rgb(236,97,10)" fg:x="3092" fg:w="8"/><text x="48.1880%" y="143.50"></text></g><g><title>[kernel::event::trigger] (2 samples, 0.03%)</title><rect x="48.0310%" y="117" width="0.0310%" height="15" fill="rgb(233,208,19)" fg:x="3098" fg:w="2"/><text x="48.2810%" y="127.50"></text></g><g><title>[kernel::sync::wait_condition::WaitCondition::notify] (2 samples, 0.03%)</title><rect x="48.0310%" y="101" width="0.0310%" height="15" fill="rgb(216,164,2)" fg:x="3098" fg:w="2"/><text x="48.2810%" y="111.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::kopen] (10 samples, 0.16%)</title><rect x="47.9225%" y="149" width="0.1550%" height="15" fill="rgb(220,129,5)" fg:x="3091" fg:w="10"/><text x="48.1725%" y="159.50"></text></g><g><title>[kernel::scheme::user::UserInner::copy_and_capture_tail] (1 samples, 0.02%)</title><rect x="48.0620%" y="133" width="0.0155%" height="15" fill="rgb(242,17,10)" fg:x="3100" fg:w="1"/><text x="48.3120%" y="143.50"></text></g><g><title>[kernel::context::memory::Grant::allocated_shared_one_page] (1 samples, 0.02%)</title><rect x="48.0620%" y="117" width="0.0155%" height="15" fill="rgb(242,107,0)" fg:x="3100" fg:w="1"/><text x="48.3120%" y="127.50"></text></g><g><title>[rmm::page::mapper::PageMapper<A,F>::map_phys] (1 samples, 0.02%)</title><rect x="48.0620%" y="101" width="0.0155%" height="15" fill="rgb(251,28,31)" fg:x="3100" fg:w="1"/><text x="48.3120%" y="111.50"></text></g><g><title>[core::ptr::drop_in_place<kernel::scheme::user::CaptureGuard<_,_>>] (3 samples, 0.05%)</title><rect x="48.0775%" y="133" width="0.0465%" height="15" fill="rgb(233,223,10)" fg:x="3101" fg:w="3"/><text x="48.3275%" y="143.50"></text></g><g><title>[<kernel::context::context::BorrowedHtBuf as core::ops::drop::Drop>::drop] (3 samples, 0.05%)</title><rect x="48.0775%" y="117" width="0.0465%" height="15" fill="rgb(215,21,27)" fg:x="3101" fg:w="3"/><text x="48.3275%" y="127.50"></text></g><g><title>[kernel::context::current] (1 samples, 0.02%)</title><rect x="48.1085%" y="101" width="0.0155%" height="15" fill="rgb(232,23,21)" fg:x="3103" fg:w="1"/><text x="48.3585%" y="111.50"></text></g><g><title>[kernel::context::memory::correct_inner] (3 samples, 0.05%)</title><rect x="48.1240%" y="85" width="0.0465%" height="15" fill="rgb(244,5,23)" fg:x="3104" fg:w="3"/><text x="48.3740%" y="95.50"></text></g><g><title>[kernel::memory::init_frame] (3 samples, 0.05%)</title><rect x="48.1240%" y="69" width="0.0465%" height="15" fill="rgb(226,81,46)" fg:x="3104" fg:w="3"/><text x="48.3740%" y="79.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate] (3 samples, 0.05%)</title><rect x="48.1240%" y="53" width="0.0465%" height="15" fill="rgb(247,70,30)" fg:x="3104" fg:w="3"/><text x="48.3740%" y="63.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::exception::page] (5 samples, 0.08%)</title><rect x="48.1240%" y="133" width="0.0775%" height="15" fill="rgb(212,68,19)" fg:x="3104" fg:w="5"/><text x="48.3740%" y="143.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::exception::page::inner] (5 samples, 0.08%)</title><rect x="48.1240%" y="117" width="0.0775%" height="15" fill="rgb(240,187,13)" fg:x="3104" fg:w="5"/><text x="48.3740%" y="127.50"></text></g><g><title>[kernel::context::memory::correct_inner] (5 samples, 0.08%)</title><rect x="48.1240%" y="101" width="0.0775%" height="15" fill="rgb(223,113,26)" fg:x="3104" fg:w="5"/><text x="48.3740%" y="111.50"></text></g><g><title>[kernel::context::memory::cow] (2 samples, 0.03%)</title><rect x="48.1705%" y="85" width="0.0310%" height="15" fill="rgb(206,192,2)" fg:x="3107" fg:w="2"/><text x="48.4205%" y="95.50"></text></g><g><title>[kernel::memory::init_frame] (2 samples, 0.03%)</title><rect x="48.1705%" y="69" width="0.0310%" height="15" fill="rgb(241,108,4)" fg:x="3107" fg:w="2"/><text x="48.4205%" y="79.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate] (2 samples, 0.03%)</title><rect x="48.1705%" y="53" width="0.0310%" height="15" fill="rgb(247,173,49)" fg:x="3107" fg:w="2"/><text x="48.4205%" y="63.50"></text></g><g><title>[kernel::context::memory::Flusher::flush] (1 samples, 0.02%)</title><rect x="48.2016%" y="85" width="0.0155%" height="15" fill="rgb(224,114,35)" fg:x="3109" fg:w="1"/><text x="48.4516%" y="95.50"></text></g><g><title>[kernel::context::memory::AddrSpace::munmap_inner] (2 samples, 0.03%)</title><rect x="48.2016%" y="101" width="0.0310%" height="15" fill="rgb(245,159,27)" fg:x="3109" fg:w="2"/><text x="48.4516%" y="111.50"></text></g><g><title>[kernel::context::memory::UserGrants::remove] (1 samples, 0.02%)</title><rect x="48.2171%" y="85" width="0.0155%" height="15" fill="rgb(245,172,44)" fg:x="3110" fg:w="1"/><text x="48.4671%" y="95.50"></text></g><g><title>[alloc::collections::btree::map::BTreeMap<K,V,A>::remove] (1 samples, 0.02%)</title><rect x="48.2171%" y="69" width="0.0155%" height="15" fill="rgb(236,23,11)" fg:x="3110" fg:w="1"/><text x="48.4671%" y="79.50"></text></g><g><title>[kernel::scheme::user::CaptureGuard<_,_>::release_inner] (4 samples, 0.06%)</title><rect x="48.2016%" y="133" width="0.0620%" height="15" fill="rgb(205,117,38)" fg:x="3109" fg:w="4"/><text x="48.4516%" y="143.50"></text></g><g><title>[kernel::context::memory::AddrSpaceWrapper::munmap] (4 samples, 0.06%)</title><rect x="48.2016%" y="117" width="0.0620%" height="15" fill="rgb(237,72,25)" fg:x="3109" fg:w="4"/><text x="48.4516%" y="127.50"></text></g><g><title>[kernel::context::memory::Flusher::flush] (2 samples, 0.03%)</title><rect x="48.2326%" y="101" width="0.0310%" height="15" fill="rgb(244,70,9)" fg:x="3111" fg:w="2"/><text x="48.4826%" y="111.50"></text></g><g><title>[kernel::context::switch::switch] (30 samples, 0.47%)</title><rect x="48.2791%" y="101" width="0.4651%" height="15" fill="rgb(217,125,39)" fg:x="3114" fg:w="30"/><text x="48.5291%" y="111.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (18 samples, 0.28%)</title><rect x="48.4651%" y="85" width="0.2791%" height="15" fill="rgb(235,36,10)" fg:x="3126" fg:w="18"/><text x="48.7151%" y="95.50"></text></g><g><title>[kernel::event::trigger] (1 samples, 0.02%)</title><rect x="48.7442%" y="101" width="0.0155%" height="15" fill="rgb(251,123,47)" fg:x="3144" fg:w="1"/><text x="48.9942%" y="111.50"></text></g><g><title>[kernel::sync::wait_condition::WaitCondition::notify] (1 samples, 0.02%)</title><rect x="48.7442%" y="85" width="0.0155%" height="15" fill="rgb(221,13,13)" fg:x="3144" fg:w="1"/><text x="48.9942%" y="95.50"></text></g><g><title>[kernel::scheme::user::UserInner::call] (35 samples, 0.54%)</title><rect x="48.2636%" y="133" width="0.5426%" height="15" fill="rgb(238,131,9)" fg:x="3113" fg:w="35"/><text x="48.5136%" y="143.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner] (34 samples, 0.53%)</title><rect x="48.2791%" y="117" width="0.5271%" height="15" fill="rgb(211,50,8)" fg:x="3114" fg:w="34"/><text x="48.5291%" y="127.50"></text></g><g><title>[kernel::sync::wait_condition::WaitCondition::notify] (3 samples, 0.05%)</title><rect x="48.7597%" y="101" width="0.0465%" height="15" fill="rgb(245,182,24)" fg:x="3145" fg:w="3"/><text x="49.0097%" y="111.50"></text></g><g><title>[kernel::context::memory::UserGrants::insert] (2 samples, 0.03%)</title><rect x="48.8062%" y="101" width="0.0310%" height="15" fill="rgb(242,14,37)" fg:x="3148" fg:w="2"/><text x="49.0562%" y="111.50"></text></g><g><title>[alloc::collections::btree::map::BTreeMap<K,V,A>::remove] (1 samples, 0.02%)</title><rect x="48.8217%" y="85" width="0.0155%" height="15" fill="rgb(246,228,12)" fg:x="3149" fg:w="1"/><text x="49.0717%" y="95.50"></text></g><g><title>[alloc::collections::btree::remove::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::KV>>::remove_leaf_kv] (1 samples, 0.02%)</title><rect x="48.8217%" y="69" width="0.0155%" height="15" fill="rgb(213,55,15)" fg:x="3149" fg:w="1"/><text x="49.0717%" y="79.50"></text></g><g><title>[memmove] (1 samples, 0.02%)</title><rect x="48.8217%" y="53" width="0.0155%" height="15" fill="rgb(209,9,3)" fg:x="3149" fg:w="1"/><text x="49.0717%" y="63.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::kread] (50 samples, 0.78%)</title><rect x="48.0775%" y="149" width="0.7752%" height="15" fill="rgb(230,59,30)" fg:x="3101" fg:w="50"/><text x="48.3275%" y="159.50"></text></g><g><title>[kernel::scheme::user::UserInner::capture_inner] (3 samples, 0.05%)</title><rect x="48.8062%" y="133" width="0.0465%" height="15" fill="rgb(209,121,21)" fg:x="3148" fg:w="3"/><text x="49.0562%" y="143.50"></text></g><g><title>[kernel::context::memory::AddrSpace::mmap] (3 samples, 0.05%)</title><rect x="48.8062%" y="117" width="0.0465%" height="15" fill="rgb(220,109,13)" fg:x="3148" fg:w="3"/><text x="49.0562%" y="127.50"></text></g><g><title>[rmm::page::mapper::PageMapper<A,F>::map_phys] (1 samples, 0.02%)</title><rect x="48.8372%" y="101" width="0.0155%" height="15" fill="rgb(232,18,1)" fg:x="3150" fg:w="1"/><text x="49.0872%" y="111.50"></text></g><g><title>[core::ptr::drop_in_place<kernel::scheme::user::CaptureGuard<_,_>>] (1 samples, 0.02%)</title><rect x="48.8527%" y="133" width="0.0155%" height="15" fill="rgb(215,41,42)" fg:x="3151" fg:w="1"/><text x="49.1027%" y="143.50"></text></g><g><title>[kernel::context::current] (1 samples, 0.02%)</title><rect x="48.8527%" y="117" width="0.0155%" height="15" fill="rgb(224,123,36)" fg:x="3151" fg:w="1"/><text x="49.1027%" y="127.50"></text></g><g><title>[kernel::arch::x86_64::arch_copy_to_user] (2 samples, 0.03%)</title><rect x="48.8682%" y="133" width="0.0310%" height="15" fill="rgb(240,125,3)" fg:x="3152" fg:w="2"/><text x="49.1182%" y="143.50"></text></g><g><title>[alloc::collections::btree::map::BTreeMap<K,V,A>::range_mut] (2 samples, 0.03%)</title><rect x="48.9302%" y="69" width="0.0310%" height="15" fill="rgb(205,98,50)" fg:x="3156" fg:w="2"/><text x="49.1802%" y="79.50"></text></g><g><title>[kernel::context::memory::UserGrants::remove] (4 samples, 0.06%)</title><rect x="48.9302%" y="85" width="0.0620%" height="15" fill="rgb(205,185,37)" fg:x="3156" fg:w="4"/><text x="49.1802%" y="95.50"></text></g><g><title>[alloc::collections::btree::map::BTreeMap<K,V,A>::remove] (2 samples, 0.03%)</title><rect x="48.9612%" y="69" width="0.0310%" height="15" fill="rgb(238,207,15)" fg:x="3158" fg:w="2"/><text x="49.2112%" y="79.50"></text></g><g><title>[alloc::collections::btree::remove::<impl alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,alloc::collections::btree::node::marker::Leaf>,alloc::collections::btree::node::marker::KV>>::remove_leaf_kv] (1 samples, 0.02%)</title><rect x="48.9767%" y="53" width="0.0155%" height="15" fill="rgb(213,199,42)" fg:x="3159" fg:w="1"/><text x="49.2267%" y="63.50"></text></g><g><title>[memmove] (1 samples, 0.02%)</title><rect x="48.9767%" y="37" width="0.0155%" height="15" fill="rgb(235,201,11)" fg:x="3159" fg:w="1"/><text x="49.2267%" y="47.50"></text></g><g><title>[kernel::context::memory::AddrSpace::munmap_inner] (9 samples, 0.14%)</title><rect x="48.8992%" y="101" width="0.1395%" height="15" fill="rgb(207,46,11)" fg:x="3154" fg:w="9"/><text x="49.1492%" y="111.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (3 samples, 0.05%)</title><rect x="48.9922%" y="85" width="0.0465%" height="15" fill="rgb(241,35,35)" fg:x="3160" fg:w="3"/><text x="49.2422%" y="95.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (3 samples, 0.05%)</title><rect x="48.9922%" y="69" width="0.0465%" height="15" fill="rgb(243,32,47)" fg:x="3160" fg:w="3"/><text x="49.2422%" y="79.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (2 samples, 0.03%)</title><rect x="49.0078%" y="53" width="0.0310%" height="15" fill="rgb(247,202,23)" fg:x="3161" fg:w="2"/><text x="49.2578%" y="63.50"></text></g><g><title>[kernel::scheme::user::CaptureGuard<_,_>::release_inner] (61 samples, 0.95%)</title><rect x="48.8992%" y="133" width="0.9457%" height="15" fill="rgb(219,102,11)" fg:x="3154" fg:w="61"/><text x="49.1492%" y="143.50"></text></g><g><title>[kernel::context::memory::AddrSpaceWrapper::munmap] (61 samples, 0.95%)</title><rect x="48.8992%" y="117" width="0.9457%" height="15" fill="rgb(243,110,44)" fg:x="3154" fg:w="61"/><text x="49.1492%" y="127.50"></text></g><g><title>[kernel::context::memory::Flusher::flush] (52 samples, 0.81%)</title><rect x="49.0388%" y="101" width="0.8062%" height="15" fill="rgb(222,74,54)" fg:x="3163" fg:w="52"/><text x="49.2888%" y="111.50"></text></g><g><title>[kernel::memory::get_page_info] (1 samples, 0.02%)</title><rect x="49.8295%" y="85" width="0.0155%" height="15" fill="rgb(216,99,12)" fg:x="3214" fg:w="1"/><text x="50.0795%" y="95.50"></text></g><g><title>[kernel::context::current] (1 samples, 0.02%)</title><rect x="49.8915%" y="101" width="0.0155%" height="15" fill="rgb(226,22,26)" fg:x="3218" fg:w="1"/><text x="50.1415%" y="111.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (176 samples, 2.73%)</title><rect x="52.9767%" y="85" width="2.7287%" height="15" fill="rgb(217,163,10)" fg:x="3417" fg:w="176"/><text x="53.2267%" y="95.50">[k..</text></g><g><title>[compiler_builtins::int::specialized_div_rem::u128_div_rem] (1 samples, 0.02%)</title><rect x="55.6899%" y="69" width="0.0155%" height="15" fill="rgb(213,25,53)" fg:x="3592" fg:w="1"/><text x="55.9399%" y="79.50"></text></g><g><title>[kernel::context::switch::switch] (376 samples, 5.83%)</title><rect x="49.9070%" y="101" width="5.8295%" height="15" fill="rgb(252,105,26)" fg:x="3219" fg:w="376"/><text x="50.1570%" y="111.50">[kernel..</text></g><g><title>[kernel::context::switch::switch_finish_hook] (2 samples, 0.03%)</title><rect x="55.7054%" y="85" width="0.0310%" height="15" fill="rgb(220,39,43)" fg:x="3593" fg:w="2"/><text x="55.9554%" y="95.50"></text></g><g><title>[kernel::event::trigger] (3 samples, 0.05%)</title><rect x="55.7364%" y="101" width="0.0465%" height="15" fill="rgb(229,68,48)" fg:x="3595" fg:w="3"/><text x="55.9864%" y="111.50"></text></g><g><title>[kernel::sync::wait_condition::WaitCondition::notify] (3 samples, 0.05%)</title><rect x="55.7364%" y="85" width="0.0465%" height="15" fill="rgb(252,8,32)" fg:x="3595" fg:w="3"/><text x="55.9864%" y="95.50"></text></g><g><title>[kernel::scheme::user::UserInner::call] (400 samples, 6.20%)</title><rect x="49.8450%" y="133" width="6.2016%" height="15" fill="rgb(223,20,43)" fg:x="3215" fg:w="400"/><text x="50.0950%" y="143.50">[kernel:..</text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner] (399 samples, 6.19%)</title><rect x="49.8605%" y="117" width="6.1860%" height="15" fill="rgb(229,81,49)" fg:x="3216" fg:w="399"/><text x="50.1105%" y="127.50">[kernel:..</text></g><g><title>[kernel::sync::wait_condition::WaitCondition::notify] (17 samples, 0.26%)</title><rect x="55.7829%" y="101" width="0.2636%" height="15" fill="rgb(236,28,36)" fg:x="3598" fg:w="17"/><text x="56.0329%" y="111.50"></text></g><g><title>[kernel::context::memory::Flusher::flush] (5 samples, 0.08%)</title><rect x="56.0620%" y="101" width="0.0775%" height="15" fill="rgb(249,185,26)" fg:x="3616" fg:w="5"/><text x="56.3120%" y="111.50"></text></g><g><title>[kernel::context::memory::Grant::allocated_shared_one_page] (1 samples, 0.02%)</title><rect x="56.1395%" y="101" width="0.0155%" height="15" fill="rgb(249,174,33)" fg:x="3621" fg:w="1"/><text x="56.3895%" y="111.50"></text></g><g><title>[rmm::page::mapper::PageMapper<A,F>::map_phys] (1 samples, 0.02%)</title><rect x="56.1395%" y="85" width="0.0155%" height="15" fill="rgb(233,201,37)" fg:x="3621" fg:w="1"/><text x="56.3895%" y="95.50"></text></g><g><title>[alloc::collections::btree::map::BTreeMap<K,V,A>::range] (1 samples, 0.02%)</title><rect x="56.1860%" y="85" width="0.0155%" height="15" fill="rgb(221,78,26)" fg:x="3624" fg:w="1"/><text x="56.4360%" y="95.50"></text></g><g><title>[kernel::context::memory::AddrSpace::mmap] (10 samples, 0.16%)</title><rect x="56.0620%" y="117" width="0.1550%" height="15" fill="rgb(250,127,30)" fg:x="3616" fg:w="10"/><text x="56.3120%" y="127.50"></text></g><g><title>[kernel::context::memory::UserGrants::insert] (4 samples, 0.06%)</title><rect x="56.1550%" y="101" width="0.0620%" height="15" fill="rgb(230,49,44)" fg:x="3622" fg:w="4"/><text x="56.4050%" y="111.50"></text></g><g><title>[memmove] (1 samples, 0.02%)</title><rect x="56.2016%" y="85" width="0.0155%" height="15" fill="rgb(229,67,23)" fg:x="3625" fg:w="1"/><text x="56.4516%" y="95.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::kwrite] (478 samples, 7.41%)</title><rect x="48.8527%" y="149" width="7.4109%" height="15" fill="rgb(249,83,47)" fg:x="3151" fg:w="478"/><text x="49.1027%" y="159.50">[<kernel::..</text></g><g><title>[kernel::scheme::user::UserInner::capture_inner] (14 samples, 0.22%)</title><rect x="56.0465%" y="133" width="0.2171%" height="15" fill="rgb(215,43,3)" fg:x="3615" fg:w="14"/><text x="56.2965%" y="143.50"></text></g><g><title>[memset] (3 samples, 0.05%)</title><rect x="56.2171%" y="117" width="0.0465%" height="15" fill="rgb(238,154,13)" fg:x="3626" fg:w="3"/><text x="56.4671%" y="127.50"></text></g><g><title>[kernel::arch::x86_64::arch_copy_to_user] (1 samples, 0.02%)</title><rect x="56.2636%" y="149" width="0.0155%" height="15" fill="rgb(219,56,2)" fg:x="3629" fg:w="1"/><text x="56.5136%" y="159.50"></text></g><g><title>[kernel::context::current] (2 samples, 0.03%)</title><rect x="56.2791%" y="149" width="0.0310%" height="15" fill="rgb(233,0,4)" fg:x="3630" fg:w="2"/><text x="56.5291%" y="159.50"></text></g><g><title>[kernel::context::switch::switch] (42 samples, 0.65%)</title><rect x="56.3101%" y="149" width="0.6512%" height="15" fill="rgb(235,30,7)" fg:x="3632" fg:w="42"/><text x="56.5601%" y="159.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (26 samples, 0.40%)</title><rect x="56.5581%" y="133" width="0.4031%" height="15" fill="rgb(250,79,13)" fg:x="3648" fg:w="26"/><text x="56.8081%" y="143.50"></text></g><g><title>[kernel::scheme::SchemeList::get] (1 samples, 0.02%)</title><rect x="56.9612%" y="149" width="0.0155%" height="15" fill="rgb(211,146,34)" fg:x="3674" fg:w="1"/><text x="57.2112%" y="159.50"></text></g><g><title>[<kernel::scheme::proc::ProcScheme<_> as kernel::scheme::KernelScheme>::close] (7 samples, 0.11%)</title><rect x="56.9767%" y="117" width="0.1085%" height="15" fill="rgb(228,22,38)" fg:x="3675" fg:w="7"/><text x="57.2267%" y="127.50"></text></g><g><title>[alloc::sync::Arc<T,A>::drop_slow] (7 samples, 0.11%)</title><rect x="56.9767%" y="101" width="0.1085%" height="15" fill="rgb(235,168,5)" fg:x="3675" fg:w="7"/><text x="57.2267%" y="111.50"></text></g><g><title>[<kernel::context::memory::AddrSpace as core::ops::drop::Drop>::drop] (6 samples, 0.09%)</title><rect x="56.9922%" y="85" width="0.0930%" height="15" fill="rgb(221,155,16)" fg:x="3676" fg:w="6"/><text x="57.2422%" y="95.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (6 samples, 0.09%)</title><rect x="56.9922%" y="69" width="0.0930%" height="15" fill="rgb(215,215,53)" fg:x="3676" fg:w="6"/><text x="57.2422%" y="79.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (4 samples, 0.06%)</title><rect x="57.0233%" y="53" width="0.0620%" height="15" fill="rgb(223,4,10)" fg:x="3678" fg:w="4"/><text x="57.2733%" y="63.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (4 samples, 0.06%)</title><rect x="57.0233%" y="37" width="0.0620%" height="15" fill="rgb(234,103,6)" fg:x="3678" fg:w="4"/><text x="57.2733%" y="47.50"></text></g><g><title>[kernel::syscall::fs::close] (11 samples, 0.17%)</title><rect x="56.9767%" y="149" width="0.1705%" height="15" fill="rgb(227,97,0)" fg:x="3675" fg:w="11"/><text x="57.2267%" y="159.50"></text></g><g><title>[kernel::context::file::FileDescription::try_close] (11 samples, 0.17%)</title><rect x="56.9767%" y="133" width="0.1705%" height="15" fill="rgb(234,150,53)" fg:x="3675" fg:w="11"/><text x="57.2267%" y="143.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::close] (4 samples, 0.06%)</title><rect x="57.0853%" y="117" width="0.0620%" height="15" fill="rgb(228,201,54)" fg:x="3682" fg:w="4"/><text x="57.3353%" y="127.50"></text></g><g><title>[kernel::scheme::user::UserInner::call] (4 samples, 0.06%)</title><rect x="57.0853%" y="101" width="0.0620%" height="15" fill="rgb(222,22,37)" fg:x="3682" fg:w="4"/><text x="57.3353%" y="111.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner] (4 samples, 0.06%)</title><rect x="57.0853%" y="85" width="0.0620%" height="15" fill="rgb(237,53,32)" fg:x="3682" fg:w="4"/><text x="57.3353%" y="95.50"></text></g><g><title>[kernel::context::switch::switch] (4 samples, 0.06%)</title><rect x="57.0853%" y="69" width="0.0620%" height="15" fill="rgb(233,25,53)" fg:x="3682" fg:w="4"/><text x="57.3353%" y="79.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (3 samples, 0.05%)</title><rect x="57.1008%" y="53" width="0.0465%" height="15" fill="rgb(210,40,34)" fg:x="3683" fg:w="3"/><text x="57.3508%" y="63.50"></text></g><g><title>[kernel::context::memory::AddrSpaceWrapper::new] (3 samples, 0.05%)</title><rect x="57.1473%" y="85" width="0.0465%" height="15" fill="rgb(241,220,44)" fg:x="3686" fg:w="3"/><text x="57.3973%" y="95.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate] (3 samples, 0.05%)</title><rect x="57.1473%" y="69" width="0.0465%" height="15" fill="rgb(235,28,35)" fg:x="3686" fg:w="3"/><text x="57.3973%" y="79.50"></text></g><g><title>[kernel::context::memory::cow] (2 samples, 0.03%)</title><rect x="57.1938%" y="69" width="0.0310%" height="15" fill="rgb(210,56,17)" fg:x="3689" fg:w="2"/><text x="57.4438%" y="79.50"></text></g><g><title>[kernel::memory::init_frame] (2 samples, 0.03%)</title><rect x="57.1938%" y="53" width="0.0310%" height="15" fill="rgb(224,130,29)" fg:x="3689" fg:w="2"/><text x="57.4438%" y="63.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate] (2 samples, 0.03%)</title><rect x="57.1938%" y="37" width="0.0310%" height="15" fill="rgb(235,212,8)" fg:x="3689" fg:w="2"/><text x="57.4438%" y="47.50"></text></g><g><title>[kernel::memory::init_frame] (59 samples, 0.91%)</title><rect x="57.2248%" y="69" width="0.9147%" height="15" fill="rgb(223,33,50)" fg:x="3691" fg:w="59"/><text x="57.4748%" y="79.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate] (59 samples, 0.91%)</title><rect x="57.2248%" y="53" width="0.9147%" height="15" fill="rgb(219,149,13)" fg:x="3691" fg:w="59"/><text x="57.4748%" y="63.50"></text></g><g><title>[memset] (1 samples, 0.02%)</title><rect x="58.1240%" y="37" width="0.0155%" height="15" fill="rgb(250,156,29)" fg:x="3749" fg:w="1"/><text x="58.3740%" y="47.50"></text></g><g><title>[kernel::context::memory::Grant::copy_mappings] (71 samples, 1.10%)</title><rect x="57.1938%" y="85" width="1.1008%" height="15" fill="rgb(216,193,19)" fg:x="3689" fg:w="71"/><text x="57.4438%" y="95.50"></text></g><g><title>[rmm::page::mapper::PageMapper<A,F>::map_phys] (10 samples, 0.16%)</title><rect x="58.1395%" y="69" width="0.1550%" height="15" fill="rgb(216,135,14)" fg:x="3750" fg:w="10"/><text x="58.3895%" y="79.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate] (10 samples, 0.16%)</title><rect x="58.1395%" y="53" width="0.1550%" height="15" fill="rgb(241,47,5)" fg:x="3750" fg:w="10"/><text x="58.3895%" y="63.50"></text></g><g><title>[kernel::memory::get_page_info] (2 samples, 0.03%)</title><rect x="58.2946%" y="85" width="0.0310%" height="15" fill="rgb(233,42,35)" fg:x="3760" fg:w="2"/><text x="58.5446%" y="95.50"></text></g><g><title>[kernel::syscall::fs::dup] (78 samples, 1.21%)</title><rect x="57.1473%" y="149" width="1.2093%" height="15" fill="rgb(231,13,6)" fg:x="3686" fg:w="78"/><text x="57.3973%" y="159.50"></text></g><g><title>[kernel::syscall::fs::duplicate_file] (78 samples, 1.21%)</title><rect x="57.1473%" y="133" width="1.2093%" height="15" fill="rgb(207,181,40)" fg:x="3686" fg:w="78"/><text x="57.3973%" y="143.50"></text></g><g><title>[<kernel::scheme::proc::ProcScheme<_> as kernel::scheme::KernelScheme>::kdup] (78 samples, 1.21%)</title><rect x="57.1473%" y="117" width="1.2093%" height="15" fill="rgb(254,173,49)" fg:x="3686" fg:w="78"/><text x="57.3973%" y="127.50"></text></g><g><title>[kernel::context::memory::AddrSpaceWrapper::try_clone] (78 samples, 1.21%)</title><rect x="57.1473%" y="101" width="1.2093%" height="15" fill="rgb(221,1,38)" fg:x="3686" fg:w="78"/><text x="57.3973%" y="111.50"></text></g><g><title>[rmm::page::mapper::PageMapper<A,F>::map_phys] (2 samples, 0.03%)</title><rect x="58.3256%" y="85" width="0.0310%" height="15" fill="rgb(206,124,46)" fg:x="3762" fg:w="2"/><text x="58.5756%" y="95.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate] (2 samples, 0.03%)</title><rect x="58.3256%" y="69" width="0.0310%" height="15" fill="rgb(249,21,11)" fg:x="3762" fg:w="2"/><text x="58.5756%" y="79.50"></text></g><g><title>[kernel::syscall::fs::fcntl] (2 samples, 0.03%)</title><rect x="58.3566%" y="149" width="0.0310%" height="15" fill="rgb(222,201,40)" fg:x="3764" fg:w="2"/><text x="58.6066%" y="159.50"></text></g><g><title>[kernel::context::memory::AddrSpace::mmap_anywhere] (1 samples, 0.02%)</title><rect x="58.3876%" y="117" width="0.0155%" height="15" fill="rgb(235,61,29)" fg:x="3766" fg:w="1"/><text x="58.6376%" y="127.50"></text></g><g><title>[kernel::memory::get_page_info] (1 samples, 0.02%)</title><rect x="58.3876%" y="101" width="0.0155%" height="15" fill="rgb(219,207,3)" fg:x="3766" fg:w="1"/><text x="58.6376%" y="111.50"></text></g><g><title>[kernel::memory::get_page_info] (1 samples, 0.02%)</title><rect x="58.4031%" y="117" width="0.0155%" height="15" fill="rgb(222,56,46)" fg:x="3767" fg:w="1"/><text x="58.6531%" y="127.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate] (14 samples, 0.22%)</title><rect x="58.4186%" y="101" width="0.2171%" height="15" fill="rgb(239,76,54)" fg:x="3768" fg:w="14"/><text x="58.6686%" y="111.50"></text></g><g><title>[memset] (10 samples, 0.16%)</title><rect x="58.4806%" y="85" width="0.1550%" height="15" fill="rgb(231,124,27)" fg:x="3772" fg:w="10"/><text x="58.7306%" y="95.50"></text></g><g><title>[<kernel::scheme::memory::MemoryScheme as kernel::scheme::KernelScheme>::kfmap] (17 samples, 0.26%)</title><rect x="58.3876%" y="133" width="0.2636%" height="15" fill="rgb(249,195,6)" fg:x="3766" fg:w="17"/><text x="58.6376%" y="143.50"></text></g><g><title>[kernel::scheme::memory::MemoryScheme::fmap_anonymous] (15 samples, 0.23%)</title><rect x="58.4186%" y="117" width="0.2326%" height="15" fill="rgb(237,174,47)" fg:x="3768" fg:w="15"/><text x="58.6686%" y="127.50"></text></g><g><title>[kernel::memory::get_page_info] (1 samples, 0.02%)</title><rect x="58.6357%" y="101" width="0.0155%" height="15" fill="rgb(206,201,31)" fg:x="3782" fg:w="1"/><text x="58.8857%" y="111.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::fsync] (6 samples, 0.09%)</title><rect x="58.6512%" y="133" width="0.0930%" height="15" fill="rgb(231,57,52)" fg:x="3783" fg:w="6"/><text x="58.9012%" y="143.50"></text></g><g><title>[kernel::scheme::user::UserInner::call] (6 samples, 0.09%)</title><rect x="58.6512%" y="117" width="0.0930%" height="15" fill="rgb(248,177,22)" fg:x="3783" fg:w="6"/><text x="58.9012%" y="127.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner] (6 samples, 0.09%)</title><rect x="58.6512%" y="101" width="0.0930%" height="15" fill="rgb(215,211,37)" fg:x="3783" fg:w="6"/><text x="58.9012%" y="111.50"></text></g><g><title>[kernel::context::switch::switch] (6 samples, 0.09%)</title><rect x="58.6512%" y="85" width="0.0930%" height="15" fill="rgb(241,128,51)" fg:x="3783" fg:w="6"/><text x="58.9012%" y="95.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (2 samples, 0.03%)</title><rect x="58.7132%" y="69" width="0.0310%" height="15" fill="rgb(227,165,31)" fg:x="3787" fg:w="2"/><text x="58.9632%" y="79.50"></text></g><g><title>[kernel::context::switch::switch] (38 samples, 0.59%)</title><rect x="58.7442%" y="85" width="0.5891%" height="15" fill="rgb(228,167,24)" fg:x="3789" fg:w="38"/><text x="58.9942%" y="95.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (14 samples, 0.22%)</title><rect x="59.1163%" y="69" width="0.2171%" height="15" fill="rgb(228,143,12)" fg:x="3813" fg:w="14"/><text x="59.3663%" y="79.50"></text></g><g><title>[kernel::syscall::fs::file_op_generic_ext] (65 samples, 1.01%)</title><rect x="58.3876%" y="149" width="1.0078%" height="15" fill="rgb(249,149,8)" fg:x="3766" fg:w="65"/><text x="58.6376%" y="159.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::seek] (42 samples, 0.65%)</title><rect x="58.7442%" y="133" width="0.6512%" height="15" fill="rgb(243,35,44)" fg:x="3789" fg:w="42"/><text x="58.9942%" y="143.50"></text></g><g><title>[kernel::scheme::user::UserInner::call] (42 samples, 0.65%)</title><rect x="58.7442%" y="117" width="0.6512%" height="15" fill="rgb(246,89,9)" fg:x="3789" fg:w="42"/><text x="58.9942%" y="127.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner] (42 samples, 0.65%)</title><rect x="58.7442%" y="101" width="0.6512%" height="15" fill="rgb(233,213,13)" fg:x="3789" fg:w="42"/><text x="58.9942%" y="111.50"></text></g><g><title>[kernel::event::trigger] (4 samples, 0.06%)</title><rect x="59.3333%" y="85" width="0.0620%" height="15" fill="rgb(233,141,41)" fg:x="3827" fg:w="4"/><text x="59.5833%" y="95.50"></text></g><g><title>[kernel::sync::wait_condition::WaitCondition::notify] (3 samples, 0.05%)</title><rect x="59.3488%" y="69" width="0.0465%" height="15" fill="rgb(239,167,4)" fg:x="3828" fg:w="3"/><text x="59.5988%" y="79.50"></text></g><g><title>[kernel::syscall::fs::fstat] (2 samples, 0.03%)</title><rect x="59.3953%" y="149" width="0.0310%" height="15" fill="rgb(209,217,16)" fg:x="3831" fg:w="2"/><text x="59.6453%" y="159.50"></text></g><g><title>[<kernel::scheme::user::UserScheme as kernel::scheme::KernelScheme>::kfstat] (2 samples, 0.03%)</title><rect x="59.3953%" y="133" width="0.0310%" height="15" fill="rgb(219,88,35)" fg:x="3831" fg:w="2"/><text x="59.6453%" y="143.50"></text></g><g><title>[kernel::scheme::user::UserInner::call] (2 samples, 0.03%)</title><rect x="59.3953%" y="117" width="0.0310%" height="15" fill="rgb(220,193,23)" fg:x="3831" fg:w="2"/><text x="59.6453%" y="127.50"></text></g><g><title>[kernel::scheme::user::UserInner::call_extended_inner] (2 samples, 0.03%)</title><rect x="59.3953%" y="101" width="0.0310%" height="15" fill="rgb(230,90,52)" fg:x="3831" fg:w="2"/><text x="59.6453%" y="111.50"></text></g><g><title>[kernel::context::switch::switch] (2 samples, 0.03%)</title><rect x="59.3953%" y="85" width="0.0310%" height="15" fill="rgb(252,106,19)" fg:x="3831" fg:w="2"/><text x="59.6453%" y="95.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (1 samples, 0.02%)</title><rect x="59.4109%" y="69" width="0.0155%" height="15" fill="rgb(206,74,20)" fg:x="3832" fg:w="1"/><text x="59.6609%" y="79.50"></text></g><g><title>[kernel::context::memory::AddrSpace::munmap_inner] (2 samples, 0.03%)</title><rect x="59.4264%" y="117" width="0.0310%" height="15" fill="rgb(230,138,44)" fg:x="3833" fg:w="2"/><text x="59.6764%" y="127.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (2 samples, 0.03%)</title><rect x="59.4264%" y="101" width="0.0310%" height="15" fill="rgb(235,182,43)" fg:x="3833" fg:w="2"/><text x="59.6764%" y="111.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (2 samples, 0.03%)</title><rect x="59.4264%" y="85" width="0.0310%" height="15" fill="rgb(242,16,51)" fg:x="3833" fg:w="2"/><text x="59.6764%" y="95.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (1 samples, 0.02%)</title><rect x="59.4419%" y="69" width="0.0155%" height="15" fill="rgb(248,9,4)" fg:x="3834" fg:w="1"/><text x="59.6919%" y="79.50"></text></g><g><title>[kernel::syscall::fs::funmap] (3 samples, 0.05%)</title><rect x="59.4264%" y="149" width="0.0465%" height="15" fill="rgb(210,31,22)" fg:x="3833" fg:w="3"/><text x="59.6764%" y="159.50"></text></g><g><title>[kernel::context::memory::AddrSpaceWrapper::munmap] (3 samples, 0.05%)</title><rect x="59.4264%" y="133" width="0.0465%" height="15" fill="rgb(239,54,39)" fg:x="3833" fg:w="3"/><text x="59.6764%" y="143.50"></text></g><g><title>[kernel::context::memory::Flusher::flush] (1 samples, 0.02%)</title><rect x="59.4574%" y="117" width="0.0155%" height="15" fill="rgb(230,99,41)" fg:x="3835" fg:w="1"/><text x="59.7074%" y="127.50"></text></g><g><title>[memcpy] (1 samples, 0.02%)</title><rect x="59.4574%" y="101" width="0.0155%" height="15" fill="rgb(253,106,12)" fg:x="3835" fg:w="1"/><text x="59.7074%" y="111.50"></text></g><g><title>[kernel::syscall::process::exit] (2 samples, 0.03%)</title><rect x="59.4729%" y="149" width="0.0310%" height="15" fill="rgb(213,46,41)" fg:x="3836" fg:w="2"/><text x="59.7229%" y="159.50"></text></g><g><title>[<kernel::context::memory::AddrSpace as core::ops::drop::Drop>::drop] (2 samples, 0.03%)</title><rect x="59.4729%" y="133" width="0.0310%" height="15" fill="rgb(215,133,35)" fg:x="3836" fg:w="2"/><text x="59.7229%" y="143.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (2 samples, 0.03%)</title><rect x="59.4729%" y="117" width="0.0310%" height="15" fill="rgb(213,28,5)" fg:x="3836" fg:w="2"/><text x="59.7229%" y="127.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (2 samples, 0.03%)</title><rect x="59.4729%" y="101" width="0.0310%" height="15" fill="rgb(215,77,49)" fg:x="3836" fg:w="2"/><text x="59.7229%" y="111.50"></text></g><g><title>[rmm::page::mapper::unmap_phys_inner] (1 samples, 0.02%)</title><rect x="59.4884%" y="85" width="0.0155%" height="15" fill="rgb(248,100,22)" fg:x="3837" fg:w="1"/><text x="59.7384%" y="95.50"></text></g><g><title>[kernel::syscall::process::kill] (8 samples, 0.12%)</title><rect x="59.5039%" y="149" width="0.1240%" height="15" fill="rgb(208,67,9)" fg:x="3838" fg:w="8"/><text x="59.7539%" y="159.50"></text></g><g><title>[kernel::context::switch::switch] (8 samples, 0.12%)</title><rect x="59.5039%" y="133" width="0.1240%" height="15" fill="rgb(219,133,21)" fg:x="3838" fg:w="8"/><text x="59.7539%" y="143.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (7 samples, 0.11%)</title><rect x="59.5194%" y="117" width="0.1085%" height="15" fill="rgb(246,46,29)" fg:x="3839" fg:w="7"/><text x="59.7694%" y="127.50"></text></g><g><title>[kernel::syscall::process::waitpid] (2 samples, 0.03%)</title><rect x="59.6279%" y="149" width="0.0310%" height="15" fill="rgb(246,185,52)" fg:x="3846" fg:w="2"/><text x="59.8779%" y="159.50"></text></g><g><title>[kernel::sync::wait_condition::WaitCondition::wait] (2 samples, 0.03%)</title><rect x="59.6279%" y="133" width="0.0310%" height="15" fill="rgb(252,136,11)" fg:x="3846" fg:w="2"/><text x="59.8779%" y="143.50"></text></g><g><title>[kernel::context::switch::switch] (2 samples, 0.03%)</title><rect x="59.6279%" y="117" width="0.0310%" height="15" fill="rgb(219,138,53)" fg:x="3846" fg:w="2"/><text x="59.8779%" y="127.50"></text></g><g><title>[kernel::syscall::syscall] (1,538 samples, 23.84%)</title><rect x="36.2016%" y="165" width="23.8450%" height="15" fill="rgb(211,51,23)" fg:x="2335" fg:w="1538"/><text x="36.4516%" y="175.50">[kernel::syscall::syscall]</text></g><g><title>[kernel::syscall::time::clock_gettime] (25 samples, 0.39%)</title><rect x="59.6589%" y="149" width="0.3876%" height="15" fill="rgb(247,221,28)" fg:x="3848" fg:w="25"/><text x="59.9089%" y="159.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (20 samples, 0.31%)</title><rect x="59.7364%" y="133" width="0.3101%" height="15" fill="rgb(251,222,45)" fg:x="3853" fg:w="20"/><text x="59.9864%" y="143.50"></text></g><g><title>[__inner_syscall_instruction] (1,540 samples, 23.88%)</title><rect x="36.1860%" y="181" width="23.8760%" height="15" fill="rgb(217,162,53)" fg:x="2334" fg:w="1540"/><text x="36.4360%" y="191.50">[__inner_syscall_instruction]</text></g><g><title>[redox_path::RedoxPath::from_absolute] (1 samples, 0.02%)</title><rect x="60.0465%" y="165" width="0.0155%" height="15" fill="rgb(229,93,14)" fg:x="3873" fg:w="1"/><text x="60.2965%" y="175.50"></text></g><g><title>[kernel::context::memory::Flusher::flush] (1 samples, 0.02%)</title><rect x="60.0930%" y="133" width="0.0155%" height="15" fill="rgb(209,67,49)" fg:x="3876" fg:w="1"/><text x="60.3430%" y="143.50"></text></g><g><title>[memcpy] (1 samples, 0.02%)</title><rect x="60.0930%" y="117" width="0.0155%" height="15" fill="rgb(213,87,29)" fg:x="3876" fg:w="1"/><text x="60.3430%" y="127.50"></text></g><g><title>[kernel::memory::init_frame] (3 samples, 0.05%)</title><rect x="60.1085%" y="133" width="0.0465%" height="15" fill="rgb(205,151,52)" fg:x="3877" fg:w="3"/><text x="60.3585%" y="143.50"></text></g><g><title>[<rmm::allocator::frame::buddy::BuddyAllocator<A> as rmm::allocator::frame::FrameAllocator>::allocate] (2 samples, 0.03%)</title><rect x="60.1240%" y="117" width="0.0310%" height="15" fill="rgb(253,215,39)" fg:x="3878" fg:w="2"/><text x="60.3740%" y="127.50"></text></g><g><title>[memset] (2 samples, 0.03%)</title><rect x="60.1240%" y="101" width="0.0310%" height="15" fill="rgb(221,220,41)" fg:x="3878" fg:w="2"/><text x="60.3740%" y="111.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::syscall::syscall_instruction] (1,549 samples, 24.02%)</title><rect x="36.1550%" y="197" width="24.0155%" height="15" fill="rgb(218,133,21)" fg:x="2332" fg:w="1549"/><text x="36.4050%" y="207.50">[kernel::arch::x86_64::interrupt::sysc..</text></g><g><title>[kernel::arch::x86_64::interrupt::exception::page] (7 samples, 0.11%)</title><rect x="60.0620%" y="181" width="0.1085%" height="15" fill="rgb(221,193,43)" fg:x="3874" fg:w="7"/><text x="60.3120%" y="191.50"></text></g><g><title>[kernel::arch::x86_64::interrupt::exception::page::inner] (5 samples, 0.08%)</title><rect x="60.0930%" y="165" width="0.0775%" height="15" fill="rgb(240,128,52)" fg:x="3876" fg:w="5"/><text x="60.3430%" y="175.50"></text></g><g><title>[kernel::context::memory::correct_inner] (5 samples, 0.08%)</title><rect x="60.0930%" y="149" width="0.0775%" height="15" fill="rgb(253,114,12)" fg:x="3876" fg:w="5"/><text x="60.3430%" y="159.50"></text></g><g><title>[rmm::page::mapper::PageMapper<A,F>::map_phys] (1 samples, 0.02%)</title><rect x="60.1550%" y="133" width="0.0155%" height="15" fill="rgb(215,223,47)" fg:x="3880" fg:w="1"/><text x="60.4050%" y="143.50"></text></g><g><title>[kernel::arch::x86_shared::interrupt::ipi::pit::inner] (3 samples, 0.05%)</title><rect x="60.1705%" y="197" width="0.0465%" height="15" fill="rgb(248,225,23)" fg:x="3881" fg:w="3"/><text x="60.4205%" y="207.50"></text></g><g><title>[kernel::arch::x86_shared::interrupt::ipi::tlb::inner] (7 samples, 0.11%)</title><rect x="60.2171%" y="197" width="0.1085%" height="15" fill="rgb(250,108,0)" fg:x="3884" fg:w="7"/><text x="60.4671%" y="207.50"></text></g><g><title>[kernel::arch::x86_shared::interrupt::ipi::tlb] (4 samples, 0.06%)</title><rect x="60.3256%" y="197" width="0.0620%" height="15" fill="rgb(228,208,7)" fg:x="3891" fg:w="4"/><text x="60.5756%" y="207.50"></text></g><g><title>[kernel::arch::x86_shared::interrupt::ipi::wakeup::inner] (35 samples, 0.54%)</title><rect x="60.3876%" y="197" width="0.5426%" height="15" fill="rgb(244,45,10)" fg:x="3895" fg:w="35"/><text x="60.6376%" y="207.50"></text></g><g><title>[kernel::arch::x86_shared::interrupt::ipi::wakeup] (44 samples, 0.68%)</title><rect x="60.9302%" y="197" width="0.6822%" height="15" fill="rgb(207,125,25)" fg:x="3930" fg:w="44"/><text x="61.1802%" y="207.50"></text></g><g><title>[kernel::arch::x86_shared::interrupt::ipi::wakeup::inner] (13 samples, 0.20%)</title><rect x="61.4109%" y="181" width="0.2016%" height="15" fill="rgb(210,195,18)" fg:x="3961" fg:w="13"/><text x="61.6609%" y="191.50"></text></g><g><title>[kernel::arch::x86_shared::time::counter] (800 samples, 12.40%)</title><rect x="61.6124%" y="197" width="12.4031%" height="15" fill="rgb(249,80,12)" fg:x="3974" fg:w="800"/><text x="61.8624%" y="207.50">[kernel::arch::x86_..</text></g><g><title>[kernel::context::switch::switch] (1,672 samples, 25.92%)</title><rect x="74.0155%" y="197" width="25.9225%" height="15" fill="rgb(221,65,9)" fg:x="4774" fg:w="1672"/><text x="74.2655%" y="207.50">[kernel::context::switch::switch]</text></g><g><title>all (6,450 samples, 100%)</title><rect x="0.0000%" y="229" width="100.0000%" height="15" fill="rgb(235,49,36)" fg:x="0" fg:w="6450"/><text x="0.2500%" y="239.50"></text></g><g><title>kernel (6,450 samples, 100.00%)</title><rect x="0.0000%" y="213" width="100.0000%" height="15" fill="rgb(225,32,20)" fg:x="0" fg:w="6450"/><text x="0.2500%" y="223.50">kernel</text></g><g><title>[kernel::context::switch::switch_finish_hook] (4 samples, 0.06%)</title><rect x="99.9380%" y="197" width="0.0620%" height="15" fill="rgb(215,141,46)" fg:x="6446" fg:w="4"/><text x="100.1880%" y="207.50"></text></g></svg></svg> -- GitLab