Skip to content

Instantly share code, notes, and snippets.

@SaveTheRbtz
Last active April 10, 2024 15:20
Show Gist options
  • Save SaveTheRbtz/807be09f73d13b80e429d45bd1707e00 to your computer and use it in GitHub Desktop.
Save SaveTheRbtz/807be09f73d13b80e429d45bd1707e00 to your computer and use it in GitHub Desktop.
eBPF-based lock profiling tool inspired by lockstat(1M)
#!/usr/bin/env python
"""
The MIT License (MIT)
Copyright (c) 2017 Sasha Goldshtein
Copyright (c) 2018 Alexey Ivanov
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
"""
# Based on https://github.com/goldshtn/linux-tracing-workshop
from __future__ import division, print_function, unicode_literals
import argparse
import itertools
import sys
from time import sleep, strftime
# import: bcc comes from the dpkg_lib called bcc_libs
from bcc import BPF
# language=C
text = """
#include <linux/ptrace.h>
struct thread_mutex_key_t {
u32 tid;
u64 mtx;
int lock_stack_id;
};
struct thread_mutex_val_t {
u64 wait_time_ns;
u64 max_wait_time_ns;
u64 lock_time_ns;
u64 max_lock_time_ns;
u64 enter_count;
};
struct mutex_timestamp_t {
u64 mtx;
u64 timestamp;
};
struct mutex_lock_time_key_t {
u32 tid;
u64 mtx;
};
struct mutex_lock_time_val_t {
u64 timestamp;
int stack_id;
};
// Mutex to the stack id which initialized that mutex
BPF_HASH(init_stacks, u64, int);
// Main info database about mutex and thread pairs
BPF_HASH(locks, struct thread_mutex_key_t, struct thread_mutex_val_t);
// Pid to the mutex address and timestamp of when the wait started
BPF_HASH(lock_start, u32, struct mutex_timestamp_t);
// Pid and mutex address to the timestamp of when the wait ended (mutex acquired) and the stack id
BPF_HASH(lock_end, struct mutex_lock_time_key_t, struct mutex_lock_time_val_t);
// Histogram of wait times
BPF_HISTOGRAM(mutex_wait_hist, u64);
// Histogram of hold times
BPF_HISTOGRAM(mutex_lock_hist, u64);
BPF_STACK_TRACE(stacks, 65535);
int probe_mutex_lock(struct pt_regs *ctx)
{
u64 now = bpf_ktime_get_ns();
u32 pid = bpf_get_current_pid_tgid();
struct mutex_timestamp_t val = {};
val.mtx = PT_REGS_PARM1(ctx);
val.timestamp = now;
lock_start.update(&pid, &val);
return 0;
}
int probe_mutex_lock_return(struct pt_regs *ctx)
{
u64 now = bpf_ktime_get_ns();
u32 pid = bpf_get_current_pid_tgid();
struct mutex_timestamp_t *entry = lock_start.lookup(&pid);
if (entry == 0)
return 0; // Missed the entry
u64 wait_time = now - entry->timestamp;
int stack_id = stacks.get_stackid(ctx, BPF_F_REUSE_STACKID|BPF_F_USER_STACK);
// If pthread_mutex_lock() returned 0, we have the lock
if (PT_REGS_RC(ctx) == 0) {
// Record the lock acquisition timestamp so that we can read it when unlocking
struct mutex_lock_time_key_t key = {};
key.mtx = entry->mtx;
key.tid = pid;
struct mutex_lock_time_val_t val = {};
val.timestamp = now;
val.stack_id = stack_id;
lock_end.update(&key, &val);
}
// Record the wait time for this mutex-tid-stack combination even if locking failed
struct thread_mutex_key_t tm_key = {};
tm_key.mtx = entry->mtx;
tm_key.tid = pid;
tm_key.lock_stack_id = stack_id;
struct thread_mutex_val_t *existing_tm_val, new_tm_val = {};
existing_tm_val = locks.lookup_or_init(&tm_key, &new_tm_val);
if (existing_tm_val->max_wait_time_ns < wait_time) {
existing_tm_val->max_wait_time_ns = wait_time;
}
existing_tm_val->wait_time_ns += wait_time;
if (PT_REGS_RC(ctx) == 0) {
existing_tm_val->enter_count += 1;
}
u64 mtx_slot = bpf_log2l(wait_time / 1000);
mutex_wait_hist.increment(mtx_slot);
lock_start.delete(&pid);
return 0;
}
int probe_mutex_unlock(struct pt_regs *ctx)
{
u64 now = bpf_ktime_get_ns();
u64 mtx = PT_REGS_PARM1(ctx);
u32 pid = bpf_get_current_pid_tgid();
struct mutex_lock_time_key_t lock_key = {};
lock_key.mtx = mtx;
lock_key.tid = pid;
struct mutex_lock_time_val_t *lock_val = lock_end.lookup(&lock_key);
if (lock_val == 0)
return 0; // Missed the lock of this mutex
u64 hold_time = now - lock_val->timestamp;
struct thread_mutex_key_t tm_key = {};
tm_key.mtx = mtx;
tm_key.tid = pid;
tm_key.lock_stack_id = lock_val->stack_id;
struct thread_mutex_val_t *existing_tm_val = locks.lookup(&tm_key);
if (existing_tm_val == 0)
return 0; // Couldn't find this record
if (existing_tm_val->max_lock_time_ns < hold_time) {
existing_tm_val->max_lock_time_ns = hold_time;
}
existing_tm_val->lock_time_ns += hold_time;
u64 slot = bpf_log2l(hold_time / 1000);
mutex_lock_hist.increment(slot);
lock_end.delete(&lock_key);
return 0;
}
int probe_mutex_init(struct pt_regs *ctx)
{
int stack_id = stacks.get_stackid(ctx, BPF_F_REUSE_STACKID|BPF_F_USER_STACK);
u64 mutex_addr = PT_REGS_PARM1(ctx);
init_stacks.update(&mutex_addr, &stack_id);
return 0;
}
"""
def attach(bpf, pid):
bpf.attach_uprobe(name="pthread", sym="pthread_mutex_init", fn_name="probe_mutex_init", pid=pid)
bpf.attach_uprobe(name="pthread", sym="pthread_mutex_lock", fn_name="probe_mutex_lock", pid=pid)
bpf.attach_uretprobe(name="pthread", sym="pthread_mutex_lock", fn_name="probe_mutex_lock_return", pid=pid)
bpf.attach_uprobe(name="pthread", sym="pthread_mutex_unlock", fn_name="probe_mutex_unlock", pid=pid)
def format_stack(bpf, pid, stacks, stack_id):
formatted = []
for addr in stacks.walk(stack_id):
formatted.append(
"\t\t{:16s} ({:x})".format(bpf.sym(
addr, pid, show_module=True, show_offset=True), addr)
)
return "\n".join(formatted)
parser = argparse.ArgumentParser(
description=(
"Profile lock contention"
),
formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument("-p", "--pid", type=int,
help="pid of the process to profile", required=True)
parser.add_argument("interval", nargs="?", default=99999999, type=int,
help="output interval, in seconds")
parser.add_argument("count", nargs="?", default=99999999, type=int,
help="number of outputs")
parser.add_argument("-I", "--show-mutex-init", action="store_true",
help="print all mutex creations")
parser.add_argument("-f", "--folded", action="store_true",
help="output folded format")
parser.add_argument("-T", "--timestamp", action="store_true",
help="include timestamp on output")
parser.add_argument("--min-avg-wait-time-us", default=0, type=int,
help="do not print locks with average wait time less than given number of us")
parser.add_argument("--min-avg-hold-time-us", default=0, type=int,
help="do not print locks with average hold time less than given number of us")
parser.add_argument("--min-total-wait-time-us", default=0, type=int,
help="do not print locks with total wait time less than given number of us")
parser.add_argument("--min-total-hold-time-us", default=0, type=int,
help="do not print locks with total hold time less than given number of us")
parser.add_argument("--min-max-wait-time-us", default=0, type=int,
help="do not print locks with max wait time less than given number of us")
parser.add_argument("--min-max-hold-time-us", default=0, type=int,
help="do not print locks with max hold time less than given number of us")
parser.add_argument("--min-enter-count", default=0, type=int,
help="do not print locks with less than given number of hits")
args = parser.parse_args()
bpf = BPF(text=text)
attach(bpf, args.pid)
init_stacks = bpf["init_stacks"]
stacks = bpf["stacks"]
locks = bpf["locks"]
mutex_lock_hist = bpf["mutex_lock_hist"]
mutex_wait_hist = bpf["mutex_wait_hist"]
countdown = args.count
exiting = 0
while True:
if args.timestamp:
print("{:<8s}\n".format(strftime(b"%H:%M:%S")))
try:
sleep(args.interval)
except KeyboardInterrupt:
exiting = 1
mutex_ids = {}
next_mutex_id = 1
for k, v in init_stacks.items():
mutex_id = "#{:d}".format(next_mutex_id)
next_mutex_id += 1
mutex_ids[k.value] = mutex_id
if args.show_mutex_init:
print("init stack for mutex {:x} ({:s})".format(k.value, mutex_id))
print(format_stack(bpf, args.pid, stacks, v.value))
print("")
if args.folded:
for k, v in locks.items():
value = v.wait_time_ns
line = [bpf.sym(addr, args.pid, show_module=True)
for addr in reversed(list(stacks.walk(k.lock_stack_id)))]
if not line:
line = ["unknown"]
print("{:s} {:d}".format(";".join(line), value))
else:
grouper = lambda (k, v): k.tid
sorted_by_thread = sorted(locks.items(), key=grouper)
locks_by_thread = itertools.groupby(sorted_by_thread, grouper)
for tid, items in locks_by_thread:
formatted = []
for k, v in sorted(items, key=lambda (k, v): -v.wait_time_ns):
if v.enter_count < args.min_enter_count:
continue
total_wait_time_us = v.wait_time_ns / 1000.0
total_hold_time_us = v.lock_time_ns / 1000.0
if total_wait_time_us < args.min_total_wait_time_us:
continue
if total_hold_time_us < args.min_total_hold_time_us:
continue
avg_wait_time_us = total_wait_time_us / v.enter_count
avg_hold_time_us = total_hold_time_us / v.enter_count
if avg_wait_time_us < args.min_avg_wait_time_us:
continue
if avg_hold_time_us < args.min_avg_hold_time_us:
continue
max_wait_time_us = v.max_wait_time_ns / 1000.0
max_hold_time_us = v.max_lock_time_ns / 1000.0
if max_wait_time_us < args.min_max_wait_time_us:
continue
if max_hold_time_us < args.min_max_hold_time_us:
continue
mutex_descr = mutex_ids[k.mtx] if k.mtx in mutex_ids else bpf.sym(k.mtx, args.pid)
formatted.append(
"\tmutex {:s}, "
"total_wait_time_us {:.2f}, total_hold_time_us {:.2f}, "
"avg_wait_time_us {:.2f}, avg_hold_time_us {:.2f}, "
"max_wait_time_us {:.2f}, max_hold_time_us {:.2f}, "
"enter_count {:d}".format(
mutex_descr,
total_wait_time_us, total_hold_time_us,
avg_wait_time_us, avg_hold_time_us,
max_wait_time_us, max_hold_time_us,
v.enter_count,
)
)
formatted.append(format_stack(bpf, args.pid, stacks, k.lock_stack_id))
if formatted:
print("thread {:d}".format(tid))
for s in formatted:
print(s)
print()
if not args.folded:
mutex_wait_hist.print_log2_hist(val_type="wait time (us)")
print()
mutex_lock_hist.print_log2_hist(val_type="hold time (us)")
print("\n")
mutex_wait_hist.clear()
mutex_lock_hist.clear()
stacks.clear()
locks.clear()
init_stacks.clear()
countdown -= 1
if exiting or countdown == 0:
sys.exit()
Display the source blob
Display the rendered blob
Raw
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="1200" height="422" onload="init(evt)" viewBox="0 0 1200 422" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Flame graph stack visualization. See https://github.com/brendangregg/FlameGraph for latest version, and http://www.brendangregg.com/flamegraphs.html for examples. -->
<!-- NOTES: -->
<defs >
<linearGradient id="background" y1="0" y2="1" x1="0" x2="0" >
<stop stop-color="#eeeeee" offset="5%" />
<stop stop-color="#eeeeb0" offset="95%" />
</linearGradient>
</defs>
<style type="text/css">
.func_g:hover { stroke:black; stroke-width:0.5; cursor:pointer; }
</style>
<script type="text/ecmascript">
<![CDATA[
var details, searchbtn, matchedtxt, svg;
function init(evt) {
details = document.getElementById("details").firstChild;
searchbtn = document.getElementById("search");
matchedtxt = document.getElementById("matched");
svg = document.getElementsByTagName("svg")[0];
searching = 0;
}
// mouse-over for info
function s(node) { // show
info = g_to_text(node);
details.nodeValue = "Function: " + info;
}
function c() { // clear
details.nodeValue = ' ';
}
// ctrl-F for search
window.addEventListener("keydown",function (e) {
if (e.keyCode === 114 || (e.ctrlKey && e.keyCode === 70)) {
e.preventDefault();
search_prompt();
}
})
// functions
function find_child(parent, name, attr) {
var children = parent.childNodes;
for (var i=0; i<children.length;i++) {
if (children[i].tagName == name)
return (attr != undefined) ? children[i].attributes[attr].value : children[i];
}
return;
}
function orig_save(e, attr, val) {
if (e.attributes["_orig_"+attr] != undefined) return;
if (e.attributes[attr] == undefined) return;
if (val == undefined) val = e.attributes[attr].value;
e.setAttribute("_orig_"+attr, val);
}
function orig_load(e, attr) {
if (e.attributes["_orig_"+attr] == undefined) return;
e.attributes[attr].value = e.attributes["_orig_"+attr].value;
e.removeAttribute("_orig_"+attr);
}
function g_to_text(e) {
var text = find_child(e, "title").firstChild.nodeValue;
return (text)
}
function g_to_func(e) {
var func = g_to_text(e);
// if there's any manipulation we want to do to the function
// name before it's searched, do it here before returning.
return (func);
}
function update_text(e) {
var r = find_child(e, "rect");
var t = find_child(e, "text");
var w = parseFloat(r.attributes["width"].value) -3;
var txt = find_child(e, "title").textContent.replace(/\([^(]*\)$/,"");
t.attributes["x"].value = parseFloat(r.attributes["x"].value) +3;
// Smaller than this size won't fit anything
if (w < 2*12*0.59) {
t.textContent = "";
return;
}
t.textContent = txt;
// Fit in full text width
if (/^ *$/.test(txt) || t.getSubStringLength(0, txt.length) < w)
return;
for (var x=txt.length-2; x>0; x--) {
if (t.getSubStringLength(0, x+2) <= w) {
t.textContent = txt.substring(0,x) + "..";
return;
}
}
t.textContent = "";
}
// zoom
function zoom_reset(e) {
if (e.attributes != undefined) {
orig_load(e, "x");
orig_load(e, "width");
}
if (e.childNodes == undefined) return;
for(var i=0, c=e.childNodes; i<c.length; i++) {
zoom_reset(c[i]);
}
}
function zoom_child(e, x, ratio) {
if (e.attributes != undefined) {
if (e.attributes["x"] != undefined) {
orig_save(e, "x");
e.attributes["x"].value = (parseFloat(e.attributes["x"].value) - x - 10) * ratio + 10;
if(e.tagName == "text") e.attributes["x"].value = find_child(e.parentNode, "rect", "x") + 3;
}
if (e.attributes["width"] != undefined) {
orig_save(e, "width");
e.attributes["width"].value = parseFloat(e.attributes["width"].value) * ratio;
}
}
if (e.childNodes == undefined) return;
for(var i=0, c=e.childNodes; i<c.length; i++) {
zoom_child(c[i], x-10, ratio);
}
}
function zoom_parent(e) {
if (e.attributes) {
if (e.attributes["x"] != undefined) {
orig_save(e, "x");
e.attributes["x"].value = 10;
}
if (e.attributes["width"] != undefined) {
orig_save(e, "width");
e.attributes["width"].value = parseInt(svg.width.baseVal.value) - (10*2);
}
}
if (e.childNodes == undefined) return;
for(var i=0, c=e.childNodes; i<c.length; i++) {
zoom_parent(c[i]);
}
}
function zoom(node) {
var attr = find_child(node, "rect").attributes;
var width = parseFloat(attr["width"].value);
var xmin = parseFloat(attr["x"].value);
var xmax = parseFloat(xmin + width);
var ymin = parseFloat(attr["y"].value);
var ratio = (svg.width.baseVal.value - 2*10) / width;
// XXX: Workaround for JavaScript float issues (fix me)
var fudge = 0.0001;
var unzoombtn = document.getElementById("unzoom");
unzoombtn.style["opacity"] = "1.0";
var el = document.getElementsByTagName("g");
for(var i=0;i<el.length;i++){
var e = el[i];
var a = find_child(e, "rect").attributes;
var ex = parseFloat(a["x"].value);
var ew = parseFloat(a["width"].value);
// Is it an ancestor
if (0 == 0) {
var upstack = parseFloat(a["y"].value) > ymin;
} else {
var upstack = parseFloat(a["y"].value) < ymin;
}
if (upstack) {
// Direct ancestor
if (ex <= xmin && (ex+ew+fudge) >= xmax) {
e.style["opacity"] = "0.5";
zoom_parent(e);
e.onclick = function(e){unzoom(); zoom(this);};
update_text(e);
}
// not in current path
else
e.style["display"] = "none";
}
// Children maybe
else {
// no common path
if (ex < xmin || ex + fudge >= xmax) {
e.style["display"] = "none";
}
else {
zoom_child(e, xmin, ratio);
e.onclick = function(e){zoom(this);};
update_text(e);
}
}
}
}
function unzoom() {
var unzoombtn = document.getElementById("unzoom");
unzoombtn.style["opacity"] = "0.0";
var el = document.getElementsByTagName("g");
for(i=0;i<el.length;i++) {
el[i].style["display"] = "block";
el[i].style["opacity"] = "1";
zoom_reset(el[i]);
update_text(el[i]);
}
}
// search
function reset_search() {
var el = document.getElementsByTagName("rect");
for (var i=0; i < el.length; i++) {
orig_load(el[i], "fill")
}
}
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.style["opacity"] = "0.1";
searchbtn.firstChild.nodeValue = "Search"
matchedtxt.style["opacity"] = "0.0";
matchedtxt.firstChild.nodeValue = ""
}
}
function search(term) {
var re = new RegExp(term);
var el = document.getElementsByTagName("g");
var matches = new Object();
var maxwidth = 0;
for (var i = 0; i < el.length; i++) {
var e = el[i];
if (e.attributes["class"].value != "func_g")
continue;
var func = g_to_func(e);
var rect = find_child(e, "rect");
if (rect == null) {
// the rect might be wrapped in an anchor
// if nameattr href is being used
if (rect = find_child(e, "a")) {
rect = find_child(r, "rect");
}
}
if (func == null || rect == null)
continue;
// Save max width. Only works as we have a root frame
var w = parseFloat(rect.attributes["width"].value);
if (w > maxwidth)
maxwidth = w;
if (func.match(re)) {
// highlight
var x = parseFloat(rect.attributes["x"].value);
orig_save(rect, "fill");
rect.attributes["fill"].value =
"rgb(230,0,230)";
// remember matches
if (matches[x] == undefined) {
matches[x] = w;
} else {
if (w > matches[x]) {
// overwrite with parent
matches[x] = w;
}
}
searching = 1;
}
}
if (!searching)
return;
searchbtn.style["opacity"] = "1.0";
searchbtn.firstChild.nodeValue = "Reset Search"
// calculate percent matched, excluding vertical overlap
var count = 0;
var lastx = -1;
var lastw = 0;
var keys = Array();
for (k in matches) {
if (matches.hasOwnProperty(k))
keys.push(k);
}
// sort the matched frames by their x location
// ascending, then width descending
keys.sort(function(a, b){
return a - b;
});
// Step through frames saving only the biggest bottom-up frames
// thanks to the sort order. This relies on the tree property
// where children are always smaller than their parents.
var fudge = 0.0001; // JavaScript floating point
for (var k in keys) {
var x = parseFloat(keys[k]);
var w = matches[keys[k]];
if (x >= lastx + lastw - fudge) {
count += w;
lastx = x;
lastw = w;
}
}
// display matched percent
matchedtxt.style["opacity"] = "1.0";
pct = 100 * count / maxwidth;
if (pct == 100)
pct = "100"
else
pct = pct.toFixed(1)
matchedtxt.firstChild.nodeValue = "Matched: " + pct + "%";
}
function searchover(e) {
searchbtn.style["opacity"] = "1.0";
}
function searchout(e) {
if (searching) {
searchbtn.style["opacity"] = "1.0";
} else {
searchbtn.style["opacity"] = "0.1";
}
}
]]>
</script>
<rect x="0.0" y="0" width="1200.0" height="422.0" fill="url(#background)" />
<text text-anchor="middle" x="600.00" y="24" font-size="17" font-family="Verdana" fill="rgb(0,0,0)" >Flame Graph</text>
<text text-anchor="" x="10.00" y="405" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" id="details" > </text>
<text text-anchor="" x="10.00" y="24" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" id="unzoom" onclick="unzoom()" style="opacity:0.0;cursor:pointer" >Reset Zoom</text>
<text text-anchor="" x="1090.00" y="24" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" id="search" onmouseover="searchover()" onmouseout="searchout()" onclick="search_prompt()" style="opacity:0.1;cursor:pointer" >Search</text>
<text text-anchor="" x="1090.00" y="405" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" id="matched" > </text>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>start_thread [libpthread.so.0] (7,587,757,730 samples, 99.26%)</title><rect x="18.7" y="357" width="1171.3" height="15.0" fill="rgb(206,70,12)" rx="2" ry="2" />
<text text-anchor="" x="21.67" y="367.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >start_thread [libpthread.so.0]</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>Global_backup_lock::acquire_protection(THD*, enum_mdl_duration, unsigned long) [mysqld] (10,327,213 samples, 0.14%)</title><rect x="1132.5" y="197" width="1.6" height="15.0" fill="rgb(206,194,0)" rx="2" ry="2" />
<text text-anchor="" x="1135.49" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>plugin_unlock_list(THD*, st_plugin_int**, unsigned int) [mysqld] (83,091,547 samples, 1.09%)</title><rect x="106.6" y="229" width="12.8" height="15.0" fill="rgb(210,68,14)" rx="2" ry="2" />
<text text-anchor="" x="109.59" y="239.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>ha_prepare_low(THD*, bool) [mysqld] (3,967,877 samples, 0.05%)</title><rect x="1172.0" y="213" width="0.7" height="15.0" fill="rgb(210,202,14)" rx="2" ry="2" />
<text text-anchor="" x="1175.05" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>os_event_reset(os_event*) [mysqld] (17,679,198 samples, 0.23%)</title><rect x="1164.8" y="133" width="2.7" height="15.0" fill="rgb(218,55,42)" rx="2" ry="2" />
<text text-anchor="" x="1167.82" y="143.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>je_arena_tcache_fill_small [mysqld] (4,865,380 samples, 0.06%)</title><rect x="17.7" y="357" width="0.8" height="15.0" fill="rgb(232,219,4)" rx="2" ry="2" />
<text text-anchor="" x="20.74" y="367.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_map_partition::move_from_hash_to_lock_mutex(MDL_lock*) [mysqld] (1,081,952 samples, 0.01%)</title><rect x="1121.7" y="133" width="0.1" height="15.0" fill="rgb(241,154,0)" rx="2" ry="2" />
<text text-anchor="" x="1124.65" y="143.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_map::find_or_insert(MDL_key const*) [mysqld] (36,637,385 samples, 0.48%)</title><rect x="1121.0" y="149" width="5.6" height="15.0" fill="rgb(242,169,16)" rx="2" ry="2" />
<text text-anchor="" x="1123.97" y="159.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>ReplSemiSyncMaster::lock() [semisync_master.so] (25,091,920 samples, 0.33%)</title><rect x="46.4" y="181" width="3.9" height="15.0" fill="rgb(233,145,42)" rx="2" ry="2" />
<text text-anchor="" x="49.44" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>thr_lock_init [mysqld] (1,605,042 samples, 0.02%)</title><rect x="1053.3" y="69" width="0.2" height="15.0" fill="rgb(218,190,31)" rx="2" ry="2" />
<text text-anchor="" x="1056.27" y="79.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>inline_mysql_mutex_lock.constprop.161 [mysqld] (6,008,839 samples, 0.08%)</title><rect x="1170.7" y="165" width="0.9" height="15.0" fill="rgb(211,167,44)" rx="2" ry="2" />
<text text-anchor="" x="1173.72" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>log_write_up_to(unsigned long, unsigned long, unsigned long) [clone .part.24] [mysqld] (47,923,727 samples, 0.63%)</title><rect x="1162.8" y="149" width="7.4" height="15.0" fill="rgb(236,45,22)" rx="2" ry="2" />
<text text-anchor="" x="1165.76" y="159.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>innobase_xa_prepare(handlerton*, THD*, bool) [mysqld] (47,930,108 samples, 0.63%)</title><rect x="1162.8" y="197" width="7.4" height="15.0" fill="rgb(218,215,46)" rx="2" ry="2" />
<text text-anchor="" x="1165.76" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::acquire_lock(MDL_request*, unsigned long) [mysqld] (686,301 samples, 0.01%)</title><rect x="1120.9" y="181" width="0.1" height="15.0" fill="rgb(213,37,37)" rx="2" ry="2" />
<text text-anchor="" x="1123.86" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>thr_lock_delete [mysqld] (2,061,824 samples, 0.03%)</title><rect x="1053.0" y="117" width="0.3" height="15.0" fill="rgb(228,192,33)" rx="2" ry="2" />
<text text-anchor="" x="1055.96" y="127.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>com_binlog_dump_gtid(THD*, char*, unsigned int) [mysqld] (6,508,865,732 samples, 85.15%)</title><rect x="19.6" y="277" width="1004.8" height="15.0" fill="rgb(239,159,35)" rx="2" ry="2" />
<text text-anchor="" x="22.58" y="287.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >com_binlog_dump_gtid(THD*, char*, unsigned int) [mysqld]</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_lock::remove_ticket(MDL_lock::Ticket_list MDL_lock::*, MDL_ticket*) [mysqld] (11,388,027 samples, 0.15%)</title><rect x="1130.7" y="197" width="1.8" height="15.0" fill="rgb(243,134,54)" rx="2" ry="2" />
<text text-anchor="" x="1133.73" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>os_event_set(os_event*) [mysqld] (965,619 samples, 0.01%)</title><rect x="1172.0" y="117" width="0.2" height="15.0" fill="rgb(234,6,6)" rx="2" ry="2" />
<text text-anchor="" x="1175.05" y="127.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::release_lock(enum_mdl_duration, MDL_ticket*) [mysqld] (691,667 samples, 0.01%)</title><rect x="1170.3" y="213" width="0.2" height="15.0" fill="rgb(226,170,21)" rx="2" ry="2" />
<text text-anchor="" x="1173.35" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>rw_pr_wrlock [mysqld] (13,694,155 samples, 0.18%)</title><rect x="1128.6" y="165" width="2.1" height="15.0" fill="rgb(249,159,36)" rx="2" ry="2" />
<text text-anchor="" x="1131.61" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MYSQL_BIN_LOG::finish_commit(THD*) [mysqld] (22,680,762 samples, 0.30%)</title><rect x="1155.5" y="181" width="3.5" height="15.0" fill="rgb(249,4,47)" rx="2" ry="2" />
<text text-anchor="" x="1158.46" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>Group_cache::generate_automatic_gno(THD*) [mysqld] (9,116,271 samples, 0.12%)</title><rect x="1161.4" y="117" width="1.4" height="15.0" fill="rgb(209,225,1)" rx="2" ry="2" />
<text text-anchor="" x="1164.36" y="127.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>mysql_select(THD*, TABLE_LIST*, unsigned int, List&lt;Item&gt;&amp;, Item*, SQL_I_List&lt;st_order&gt;*, SQL_I_List&lt;st_order&gt;*, Item*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*) [mysqld] (2,735,542 samples, 0.04%)</title><rect x="1052.5" y="213" width="0.5" height="15.0" fill="rgb(233,27,43)" rx="2" ry="2" />
<text text-anchor="" x="1055.53" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>mysql_insert(THD*, TABLE_LIST*, List&lt;Item&gt;&amp;, List&lt;List&lt;Item&gt; &gt;&amp;, List&lt;Item&gt;&amp;, List&lt;Item&gt;&amp;, enum_duplicates, bool) [mysqld] (36,850,747 samples, 0.48%)</title><rect x="1121.0" y="245" width="5.7" height="15.0" fill="rgb(231,43,29)" rx="2" ry="2" />
<text text-anchor="" x="1123.97" y="255.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>ReplSemiSyncMaster::lock() [semisync_master.so] (70,997,583 samples, 0.93%)</title><rect x="50.3" y="213" width="11.0" height="15.0" fill="rgb(236,156,46)" rx="2" ry="2" />
<text text-anchor="" x="53.32" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>rw_pr_wrlock [mysqld] (60,657,324 samples, 0.79%)</title><rect x="1111.5" y="117" width="9.4" height="15.0" fill="rgb(235,201,0)" rx="2" ry="2" />
<text text-anchor="" x="1114.50" y="127.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::acquire_lock(MDL_request*, unsigned long) [mysqld] (435,726,460 samples, 5.70%)</title><rect x="1053.6" y="181" width="67.3" height="15.0" fill="rgb(207,133,10)" rx="2" ry="2" />
<text text-anchor="" x="1056.60" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >MDL_con..</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_map::remove(MDL_lock*) [mysqld] (73,241,903 samples, 0.96%)</title><rect x="1024.4" y="197" width="11.3" height="15.0" fill="rgb(246,124,14)" rx="2" ry="2" />
<text text-anchor="" x="1027.35" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_map::find_or_insert(MDL_key const*) [mysqld] (10,327,213 samples, 0.14%)</title><rect x="1132.5" y="149" width="1.6" height="15.0" fill="rgb(208,201,16)" rx="2" ry="2" />
<text text-anchor="" x="1135.49" y="159.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>ha_commit_low(THD*, bool, bool) [mysqld] (5,149,062 samples, 0.07%)</title><rect x="1159.1" y="165" width="0.8" height="15.0" fill="rgb(222,114,23)" rx="2" ry="2" />
<text text-anchor="" x="1162.12" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_map::find_or_insert(MDL_key const*) [mysqld] (686,301 samples, 0.01%)</title><rect x="1120.9" y="149" width="0.1" height="15.0" fill="rgb(219,103,29)" rx="2" ry="2" />
<text text-anchor="" x="1123.86" y="159.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MYSQL_BIN_LOG::ordered_commit(THD*, bool, bool) [mysqld] (174,849,226 samples, 2.29%)</title><rect x="1135.8" y="197" width="27.0" height="15.0" fill="rgb(206,165,41)" rx="2" ry="2" />
<text text-anchor="" x="1138.77" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >M..</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>trx_purge(unsigned long, unsigned long, bool) [mysqld] (1,639,344 samples, 0.02%)</title><rect x="1189.7" y="325" width="0.3" height="15.0" fill="rgb(240,128,43)" rx="2" ry="2" />
<text text-anchor="" x="1192.75" y="335.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>os_event_set(os_event*) [mysqld] (16,871,717 samples, 0.22%)</title><rect x="1167.5" y="133" width="2.7" height="15.0" fill="rgb(242,85,49)" rx="2" ry="2" />
<text text-anchor="" x="1170.55" y="143.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>je_arena_malloc_large [mysqld] (32,635,597 samples, 0.43%)</title><rect x="12.1" y="357" width="5.1" height="15.0" fill="rgb(215,37,51)" rx="2" ry="2" />
<text text-anchor="" x="15.12" y="367.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>fil_flush(unsigned long) [mysqld] (13,106,135 samples, 0.17%)</title><rect x="1162.8" y="133" width="2.0" height="15.0" fill="rgb(226,19,33)" rx="2" ry="2" />
<text text-anchor="" x="1165.76" y="143.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>hp_close [mysqld] (2,061,824 samples, 0.03%)</title><rect x="1053.0" y="149" width="0.3" height="15.0" fill="rgb(249,229,54)" rx="2" ry="2" />
<text text-anchor="" x="1055.96" y="159.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>mysql_execute_command(THD*) [mysqld] (960,725,340 samples, 12.57%)</title><rect x="1024.4" y="261" width="148.3" height="15.0" fill="rgb(216,21,23)" rx="2" ry="2" />
<text text-anchor="" x="1027.35" y="271.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >mysql_execute_comm..</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>os_event_reset(os_event*) [mysqld] (76,398,528 samples, 1.00%)</title><rect x="1173.0" y="325" width="11.8" height="15.0" fill="rgb(230,81,29)" rx="2" ry="2" />
<text text-anchor="" x="1176.04" y="335.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MYSQL_BIN_LOG::set_status_variables(THD*) [mysqld] (2,570,852 samples, 0.03%)</title><rect x="1052.5" y="101" width="0.4" height="15.0" fill="rgb(226,228,53)" rx="2" ry="2" />
<text text-anchor="" x="1055.53" y="111.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>plugin_lock(THD*, st_plugin_int**) [mysqld] (20,175,656 samples, 0.26%)</title><rect x="119.4" y="229" width="3.1" height="15.0" fill="rgb(207,26,29)" rx="2" ry="2" />
<text text-anchor="" x="122.42" y="239.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>plugin_unlock_list(THD*, st_plugin_int**, unsigned int) [mysqld] (154,221,735 samples, 2.02%)</title><rect x="22.6" y="229" width="23.8" height="15.0" fill="rgb(205,172,29)" rx="2" ry="2" />
<text text-anchor="" x="25.64" y="239.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >p..</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>ReplSemiSyncMaster::readSlaveReply(st_net*, unsigned int, char const*) [semisync_master.so] (25,091,920 samples, 0.33%)</title><rect x="46.4" y="213" width="3.9" height="15.0" fill="rgb(231,205,10)" rx="2" ry="2" />
<text text-anchor="" x="49.44" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>trx_commit_low(trx_t*, mtr_t*) [mysqld] (5,149,062 samples, 0.07%)</title><rect x="1159.1" y="101" width="0.8" height="15.0" fill="rgb(243,35,17)" rx="2" ry="2" />
<text text-anchor="" x="1162.12" y="111.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>rw_pr_wrlock [mysqld] (1,081,952 samples, 0.01%)</title><rect x="1121.7" y="117" width="0.1" height="15.0" fill="rgb(216,14,30)" rx="2" ry="2" />
<text text-anchor="" x="1124.65" y="127.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>os_event_set(os_event*) [mysqld] (13,106,135 samples, 0.17%)</title><rect x="1162.8" y="117" width="2.0" height="15.0" fill="rgb(243,25,37)" rx="2" ry="2" />
<text text-anchor="" x="1165.76" y="127.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::try_acquire_lock_impl(MDL_request*, MDL_ticket**) [mysqld] (11,894,931 samples, 0.16%)</title><rect x="1126.7" y="165" width="1.8" height="15.0" fill="rgb(244,176,8)" rx="2" ry="2" />
<text text-anchor="" x="1129.66" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>row_purge_step(que_thr_t*) [mysqld] (1,212,619 samples, 0.02%)</title><rect x="1189.7" y="293" width="0.2" height="15.0" fill="rgb(219,212,46)" rx="2" ry="2" />
<text text-anchor="" x="1192.75" y="303.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>open_normal_and_derived_tables(THD*, TABLE_LIST*, unsigned int) [mysqld] (36,637,385 samples, 0.48%)</title><rect x="1121.0" y="229" width="5.6" height="15.0" fill="rgb(236,4,50)" rx="2" ry="2" />
<text text-anchor="" x="1123.97" y="239.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_map::find_or_insert(MDL_key const*) [mysqld] (13,694,155 samples, 0.18%)</title><rect x="1128.6" y="181" width="2.1" height="15.0" fill="rgb(227,93,18)" rx="2" ry="2" />
<text text-anchor="" x="1131.61" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>srv_purge_coordinator_thread [mysqld] (110,168,734 samples, 1.44%)</title><rect x="1173.0" y="341" width="17.0" height="15.0" fill="rgb(236,227,0)" rx="2" ry="2" />
<text text-anchor="" x="1175.99" y="351.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::try_acquire_lock_impl(MDL_request*, MDL_ticket**) [mysqld] (772,271 samples, 0.01%)</title><rect x="1128.5" y="181" width="0.1" height="15.0" fill="rgb(233,47,14)" rx="2" ry="2" />
<text text-anchor="" x="1131.49" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>open_normal_and_derived_tables(THD*, TABLE_LIST*, unsigned int) [mysqld] (11,894,931 samples, 0.16%)</title><rect x="1126.7" y="229" width="1.8" height="15.0" fill="rgb(244,7,26)" rx="2" ry="2" />
<text text-anchor="" x="1129.66" y="239.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>open_tables(THD*, TABLE_LIST**, unsigned int*, unsigned int, Prelocking_strategy*) [mysqld] (436,191,122 samples, 5.71%)</title><rect x="1053.5" y="213" width="67.4" height="15.0" fill="rgb(208,207,50)" rx="2" ry="2" />
<text text-anchor="" x="1056.52" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >open_ta..</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>plugin_unlock_list(THD*, st_plugin_int**, unsigned int) [mysqld] (971,517 samples, 0.01%)</title><rect x="1159.0" y="149" width="0.1" height="15.0" fill="rgb(226,58,39)" rx="2" ry="2" />
<text text-anchor="" x="1161.97" y="159.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>buf_flush_lru_manager_thread [mysqld] (5,844,545 samples, 0.08%)</title><rect x="18.7" y="341" width="0.9" height="15.0" fill="rgb(244,59,18)" rx="2" ry="2" />
<text text-anchor="" x="21.67" y="351.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>dispatch_command(enum_server_command, THD*, char*, unsigned int) [mysqld] (7,471,662,381 samples, 97.75%)</title><rect x="19.6" y="293" width="1153.4" height="15.0" fill="rgb(228,78,36)" rx="2" ry="2" />
<text text-anchor="" x="22.58" y="303.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >dispatch_command(enum_server_command, THD*, char*, unsigned int) [mysqld]</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>row_purge_poss_sec(purge_node_t*, dict_index_t*, dtuple_t const*) [mysqld] (1,138,196 samples, 0.01%)</title><rect x="1189.7" y="245" width="0.2" height="15.0" fill="rgb(252,199,40)" rx="2" ry="2" />
<text text-anchor="" x="1192.75" y="255.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>st_select_lex_unit::prepare(THD*, select_result*, unsigned long) [mysqld] (1,625,743 samples, 0.02%)</title><rect x="1053.3" y="197" width="0.2" height="15.0" fill="rgb(247,113,23)" rx="2" ry="2" />
<text text-anchor="" x="1056.27" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>os_event_set(os_event*) [mysqld] (1,627,677 samples, 0.02%)</title><rect x="1172.4" y="133" width="0.3" height="15.0" fill="rgb(233,170,41)" rx="2" ry="2" />
<text text-anchor="" x="1175.41" y="143.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_lock::remove_ticket(MDL_lock::Ticket_list MDL_lock::*, MDL_ticket*) [mysqld] (1,059,392 samples, 0.01%)</title><rect x="1170.6" y="165" width="0.1" height="15.0" fill="rgb(254,198,19)" rx="2" ry="2" />
<text text-anchor="" x="1173.55" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>ReplSemiSyncMaster::updateSyncHeader(unsigned char*, char const*, unsigned long long, unsigned int) [semisync_master.so] (70,997,583 samples, 0.93%)</title><rect x="50.3" y="229" width="11.0" height="15.0" fill="rgb(238,176,36)" rx="2" ry="2" />
<text text-anchor="" x="53.32" y="239.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>execute_sqlcom_select(THD*, TABLE_LIST*) [mysqld] (442,635,663 samples, 5.79%)</title><rect x="1052.5" y="245" width="68.4" height="15.0" fill="rgb(249,64,11)" rx="2" ry="2" />
<text text-anchor="" x="1055.53" y="255.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >execute..</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>fill_status(THD*, TABLE_LIST*, Item*) [mysqld] (2,570,852 samples, 0.03%)</title><rect x="1052.5" y="149" width="0.4" height="15.0" fill="rgb(236,179,29)" rx="2" ry="2" />
<text text-anchor="" x="1055.53" y="159.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>rw_lock_s_lock_spin(void*, unsigned long, bool, bool, char const*, unsigned long) [mysqld] (1,138,196 samples, 0.01%)</title><rect x="1189.7" y="197" width="0.2" height="15.0" fill="rgb(222,145,30)" rx="2" ry="2" />
<text text-anchor="" x="1192.75" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>open_table(THD*, TABLE_LIST*, Open_table_context*) [mysqld] (772,271 samples, 0.01%)</title><rect x="1128.5" y="213" width="0.1" height="15.0" fill="rgb(227,129,45)" rx="2" ry="2" />
<text text-anchor="" x="1131.49" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>rw_pr_wrlock [mysqld] (10,959,345 samples, 0.14%)</title><rect x="1134.1" y="149" width="1.7" height="15.0" fill="rgb(212,153,16)" rx="2" ry="2" />
<text text-anchor="" x="1137.08" y="159.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>heap_create [mysqld] (1,605,042 samples, 0.02%)</title><rect x="1053.3" y="85" width="0.2" height="15.0" fill="rgb(219,147,7)" rx="2" ry="2" />
<text text-anchor="" x="1056.27" y="95.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>show_status_array(THD*, char const*, st_mysql_show_var*, enum_var_type, system_status_var*, char const*, TABLE*, bool, Item*) [mysqld] (2,570,852 samples, 0.03%)</title><rect x="1052.5" y="133" width="0.4" height="15.0" fill="rgb(231,157,3)" rx="2" ry="2" />
<text text-anchor="" x="1055.53" y="143.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_map::find_or_insert(MDL_key const*) [mysqld] (435,726,460 samples, 5.70%)</title><rect x="1053.6" y="149" width="67.3" height="15.0" fill="rgb(248,74,15)" rx="2" ry="2" />
<text text-anchor="" x="1056.60" y="159.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >MDL_map..</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::release_locks_stored_before(enum_mdl_duration, MDL_ticket*) [mysqld] (746,911 samples, 0.01%)</title><rect x="1052.4" y="229" width="0.1" height="15.0" fill="rgb(226,60,2)" rx="2" ry="2" />
<text text-anchor="" x="1055.37" y="239.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MYSQL_BIN_LOG::process_flush_stage_queue(unsigned long long*, bool*, THD**) [mysqld] (1,198,903 samples, 0.02%)</title><rect x="1171.9" y="181" width="0.1" height="15.0" fill="rgb(207,151,31)" rx="2" ry="2" />
<text text-anchor="" x="1174.86" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>os_event_set(os_event*) [mysqld] (2,953,874 samples, 0.04%)</title><rect x="18.7" y="309" width="0.4" height="15.0" fill="rgb(207,7,51)" rx="2" ry="2" />
<text text-anchor="" x="21.68" y="319.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MYSQL_BIN_LOG::process_flush_stage_queue(unsigned long long*, bool*, THD**) [mysqld] (18,448,447 samples, 0.24%)</title><rect x="1159.9" y="181" width="2.9" height="15.0" fill="rgb(212,223,46)" rx="2" ry="2" />
<text text-anchor="" x="1162.92" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::release_lock(enum_mdl_duration, MDL_ticket*) [mysqld] (181,482,031 samples, 2.37%)</title><rect x="1024.4" y="229" width="28.0" height="15.0" fill="rgb(224,40,53)" rx="2" ry="2" />
<text text-anchor="" x="1027.35" y="239.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >M..</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>open_tables(THD*, TABLE_LIST**, unsigned int*, unsigned int, Prelocking_strategy*) [mysqld] (11,894,931 samples, 0.16%)</title><rect x="1126.7" y="213" width="1.8" height="15.0" fill="rgb(226,34,37)" rx="2" ry="2" />
<text text-anchor="" x="1129.66" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>Trans_delegate::after_commit(THD*, bool) [mysqld] (1,050,053 samples, 0.01%)</title><rect x="1159.0" y="165" width="0.1" height="15.0" fill="rgb(225,67,18)" rx="2" ry="2" />
<text text-anchor="" x="1161.96" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>trx_prepare_for_mysql(trx_t*) [mysqld] (3,967,877 samples, 0.05%)</title><rect x="1172.0" y="181" width="0.7" height="15.0" fill="rgb(222,114,31)" rx="2" ry="2" />
<text text-anchor="" x="1175.05" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>trx_commit_for_mysql(trx_t*) [mysqld] (5,149,062 samples, 0.07%)</title><rect x="1159.1" y="133" width="0.8" height="15.0" fill="rgb(236,225,49)" rx="2" ry="2" />
<text text-anchor="" x="1162.12" y="143.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>Gtid_state::update_on_flush(THD*) [mysqld] (9,332,176 samples, 0.12%)</title><rect x="1159.9" y="117" width="1.5" height="15.0" fill="rgb(246,40,31)" rx="2" ry="2" />
<text text-anchor="" x="1162.92" y="127.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>row_purge_upd_exist_or_extern_func(purge_node_t*, unsigned char*) [mysqld] (1,212,619 samples, 0.02%)</title><rect x="1189.7" y="277" width="0.2" height="15.0" fill="rgb(239,227,39)" rx="2" ry="2" />
<text text-anchor="" x="1192.75" y="287.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>Binlog_transmit_delegate::reserve_header(THD*, unsigned short, String*) [mysqld] (57,745,821 samples, 0.76%)</title><rect x="119.4" y="245" width="8.9" height="15.0" fill="rgb(242,221,41)" rx="2" ry="2" />
<text text-anchor="" x="122.42" y="255.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::release_locks_stored_before(enum_mdl_duration, MDL_ticket*) [mysqld] (181,482,031 samples, 2.37%)</title><rect x="1024.4" y="245" width="28.0" height="15.0" fill="rgb(221,208,51)" rx="2" ry="2" />
<text text-anchor="" x="1027.35" y="255.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >M..</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::acquire_lock(MDL_request*, unsigned long) [mysqld] (772,271 samples, 0.01%)</title><rect x="1128.5" y="197" width="0.1" height="15.0" fill="rgb(213,208,44)" rx="2" ry="2" />
<text text-anchor="" x="1131.49" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MYSQL_BIN_LOG::process_after_commit_stage_queue(THD*, THD*) [mysqld] (1,050,053 samples, 0.01%)</title><rect x="1159.0" y="181" width="0.1" height="15.0" fill="rgb(247,124,51)" rx="2" ry="2" />
<text text-anchor="" x="1161.96" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::try_acquire_lock_impl(MDL_request*, MDL_ticket**) [mysqld] (435,726,460 samples, 5.70%)</title><rect x="1053.6" y="165" width="67.3" height="15.0" fill="rgb(214,117,26)" rx="2" ry="2" />
<text text-anchor="" x="1056.60" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >MDL_con..</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>JOIN::prepare_result(List&lt;Item&gt;**) [mysqld] (2,581,082 samples, 0.03%)</title><rect x="1052.5" y="181" width="0.4" height="15.0" fill="rgb(250,224,28)" rx="2" ry="2" />
<text text-anchor="" x="1055.53" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::acquire_lock(MDL_request*, unsigned long) [mysqld] (11,894,931 samples, 0.16%)</title><rect x="1126.7" y="181" width="1.8" height="15.0" fill="rgb(237,80,30)" rx="2" ry="2" />
<text text-anchor="" x="1129.66" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>rw_pr_wrlock [mysqld] (1,215,112 samples, 0.02%)</title><rect x="1170.2" y="165" width="0.1" height="15.0" fill="rgb(252,186,52)" rx="2" ry="2" />
<text text-anchor="" x="1173.16" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>get_schema_tables_result(JOIN*, enum_schema_table_state) [mysqld] (2,581,082 samples, 0.03%)</title><rect x="1052.5" y="165" width="0.4" height="15.0" fill="rgb(244,30,8)" rx="2" ry="2" />
<text text-anchor="" x="1055.53" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>open_tables(THD*, TABLE_LIST**, unsigned int*, unsigned int, Prelocking_strategy*) [mysqld] (692,710 samples, 0.01%)</title><rect x="1120.9" y="213" width="0.1" height="15.0" fill="rgb(209,226,37)" rx="2" ry="2" />
<text text-anchor="" x="1123.86" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>pfs_spawn_thread [mysqld] (7,471,739,211 samples, 97.75%)</title><rect x="19.6" y="341" width="1153.4" height="15.0" fill="rgb(218,84,1)" rx="2" ry="2" />
<text text-anchor="" x="22.58" y="351.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >pfs_spawn_thread [mysqld]</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>handle_select(THD*, select_result*, unsigned long) [mysqld] (6,444,541 samples, 0.08%)</title><rect x="1052.5" y="229" width="1.0" height="15.0" fill="rgb(217,164,42)" rx="2" ry="2" />
<text text-anchor="" x="1055.53" y="239.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>handle_one_connection [mysqld] (7,471,739,211 samples, 97.75%)</title><rect x="19.6" y="325" width="1153.4" height="15.0" fill="rgb(242,32,16)" rx="2" ry="2" />
<text text-anchor="" x="22.58" y="335.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >handle_one_connection [mysqld]</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::acquire_lock(MDL_request*, unsigned long) [mysqld] (1,215,112 samples, 0.02%)</title><rect x="1170.2" y="213" width="0.1" height="15.0" fill="rgb(237,84,45)" rx="2" ry="2" />
<text text-anchor="" x="1173.16" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>Binlog_transmit_delegate::reserve_header(THD*, unsigned short, String*) [mysqld] (671,587 samples, 0.01%)</title><rect x="1024.2" y="229" width="0.2" height="15.0" fill="rgb(242,79,34)" rx="2" ry="2" />
<text text-anchor="" x="1027.25" y="239.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>open_tables(THD*, TABLE_LIST**, unsigned int*, unsigned int, Prelocking_strategy*) [mysqld] (772,271 samples, 0.01%)</title><rect x="1128.5" y="229" width="0.1" height="15.0" fill="rgb(229,203,24)" rx="2" ry="2" />
<text text-anchor="" x="1131.49" y="239.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>os_event_wait_low(os_event*, long) [mysqld] (2,829,914 samples, 0.04%)</title><rect x="1184.8" y="325" width="0.5" height="15.0" fill="rgb(221,69,15)" rx="2" ry="2" />
<text text-anchor="" x="1187.83" y="335.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_lock::remove_ticket(MDL_lock::Ticket_list MDL_lock::*, MDL_ticket*) [mysqld] (181,482,031 samples, 2.37%)</title><rect x="1024.4" y="213" width="28.0" height="15.0" fill="rgb(249,201,30)" rx="2" ry="2" />
<text text-anchor="" x="1027.35" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >M..</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>fil_flush(unsigned long) [mysqld] (965,619 samples, 0.01%)</title><rect x="1172.0" y="133" width="0.2" height="15.0" fill="rgb(239,76,45)" rx="2" ry="2" />
<text text-anchor="" x="1175.05" y="143.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>ha_commit_trans(THD*, bool, bool) [mysqld] (16,190,143 samples, 0.21%)</title><rect x="1170.2" y="229" width="2.5" height="15.0" fill="rgb(212,225,3)" rx="2" ry="2" />
<text text-anchor="" x="1173.16" y="239.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>innobase_xa_prepare(handlerton*, THD*, bool) [mysqld] (3,967,877 samples, 0.05%)</title><rect x="1172.0" y="197" width="0.7" height="15.0" fill="rgb(236,199,36)" rx="2" ry="2" />
<text text-anchor="" x="1175.05" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>free_tmp_table(THD*, TABLE*) [mysqld] (2,081,076 samples, 0.03%)</title><rect x="1053.0" y="165" width="0.3" height="15.0" fill="rgb(206,116,23)" rx="2" ry="2" />
<text text-anchor="" x="1055.95" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::try_acquire_lock_impl(MDL_request*, MDL_ticket**) [mysqld] (36,637,385 samples, 0.48%)</title><rect x="1121.0" y="165" width="5.6" height="15.0" fill="rgb(232,119,0)" rx="2" ry="2" />
<text text-anchor="" x="1123.97" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>que_run_threads(que_thr_t*) [mysqld] (1,212,619 samples, 0.02%)</title><rect x="1189.7" y="309" width="0.2" height="15.0" fill="rgb(225,57,2)" rx="2" ry="2" />
<text text-anchor="" x="1192.75" y="319.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>show_binlog_vars(THD*, st_mysql_show_var*, char*) [mysqld] (2,570,852 samples, 0.03%)</title><rect x="1052.5" y="117" width="0.4" height="15.0" fill="rgb(210,124,30)" rx="2" ry="2" />
<text text-anchor="" x="1055.53" y="127.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>trx_prepare_for_mysql(trx_t*) [mysqld] (47,930,108 samples, 0.63%)</title><rect x="1162.8" y="181" width="7.4" height="15.0" fill="rgb(248,30,51)" rx="2" ry="2" />
<text text-anchor="" x="1165.76" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>open_table(THD*, TABLE_LIST*, Open_table_context*) [mysqld] (686,301 samples, 0.01%)</title><rect x="1120.9" y="197" width="0.1" height="15.0" fill="rgb(251,169,26)" rx="2" ry="2" />
<text text-anchor="" x="1123.86" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>binlog_cache_data::flush(THD*, unsigned long long*, bool*) [mysqld] (1,198,903 samples, 0.02%)</title><rect x="1171.9" y="149" width="0.1" height="15.0" fill="rgb(233,17,26)" rx="2" ry="2" />
<text text-anchor="" x="1174.86" y="159.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>hp_free [mysqld] (2,061,824 samples, 0.03%)</title><rect x="1053.0" y="133" width="0.3" height="15.0" fill="rgb(219,132,7)" rx="2" ry="2" />
<text text-anchor="" x="1055.96" y="143.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>arena_purge [mysqld] (1,663,224 samples, 0.02%)</title><rect x="11.9" y="357" width="0.2" height="15.0" fill="rgb(218,135,1)" rx="2" ry="2" />
<text text-anchor="" x="14.86" y="367.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::try_acquire_lock_impl(MDL_request*, MDL_ticket**) [mysqld] (686,301 samples, 0.01%)</title><rect x="1120.9" y="165" width="0.1" height="15.0" fill="rgb(250,17,11)" rx="2" ry="2" />
<text text-anchor="" x="1123.86" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>trx_commit(trx_t*) [mysqld] (5,149,062 samples, 0.07%)</title><rect x="1159.1" y="117" width="0.8" height="15.0" fill="rgb(231,94,12)" rx="2" ry="2" />
<text text-anchor="" x="1162.12" y="127.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>open_normal_and_derived_tables(THD*, TABLE_LIST*, unsigned int) [mysqld] (436,191,122 samples, 5.71%)</title><rect x="1053.5" y="229" width="67.4" height="15.0" fill="rgb(243,169,17)" rx="2" ry="2" />
<text text-anchor="" x="1056.52" y="239.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >open_no..</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>plugin_unlock(THD*, st_plugin_int*) [mysqld] (37,570,165 samples, 0.49%)</title><rect x="122.5" y="229" width="5.8" height="15.0" fill="rgb(217,134,47)" rx="2" ry="2" />
<text text-anchor="" x="125.53" y="239.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>mysql_update(THD*, TABLE_LIST*, List&lt;Item&gt;&amp;, List&lt;Item&gt;&amp;, Item*, unsigned int, st_order*, unsigned long long, enum_duplicates, bool, unsigned long long*, unsigned long long*) [mysqld] (11,903,007 samples, 0.16%)</title><rect x="1126.7" y="245" width="1.8" height="15.0" fill="rgb(250,39,33)" rx="2" ry="2" />
<text text-anchor="" x="1129.66" y="255.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>gtid_before_write_cache(THD*, binlog_cache_data*) [mysqld] (9,116,271 samples, 0.12%)</title><rect x="1161.4" y="133" width="1.4" height="15.0" fill="rgb(246,202,23)" rx="2" ry="2" />
<text text-anchor="" x="1164.36" y="143.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MYSQL_BIN_LOG::write_cache(THD*, binlog_cache_data*) [mysqld] (9,332,176 samples, 0.12%)</title><rect x="1159.9" y="133" width="1.5" height="15.0" fill="rgb(244,10,11)" rx="2" ry="2" />
<text text-anchor="" x="1162.92" y="143.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>trx_purge_add_update_undo_to_history(trx_t*, unsigned char*, mtr_t*) [mysqld] (5,144,716 samples, 0.07%)</title><rect x="1159.1" y="69" width="0.8" height="15.0" fill="rgb(206,56,28)" rx="2" ry="2" />
<text text-anchor="" x="1162.12" y="79.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_lock::remove_ticket(MDL_lock::Ticket_list MDL_lock::*, MDL_ticket*) [mysqld] (746,911 samples, 0.01%)</title><rect x="1052.4" y="197" width="0.1" height="15.0" fill="rgb(254,198,52)" rx="2" ry="2" />
<text text-anchor="" x="1055.37" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>mysql_parse(THD*, char*, unsigned int, Parser_state*) [mysqld] (962,796,649 samples, 12.60%)</title><rect x="1024.4" y="277" width="148.6" height="15.0" fill="rgb(244,126,14)" rx="2" ry="2" />
<text text-anchor="" x="1027.35" y="287.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >mysql_parse(THD*, ..</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>Global_backup_lock::release_protection(THD*) [mysqld] (10,959,345 samples, 0.14%)</title><rect x="1134.1" y="197" width="1.7" height="15.0" fill="rgb(236,211,10)" rx="2" ry="2" />
<text text-anchor="" x="1137.08" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>rw_pr_wrlock [mysqld] (9,198,516 samples, 0.12%)</title><rect x="1127.1" y="133" width="1.4" height="15.0" fill="rgb(240,100,35)" rx="2" ry="2" />
<text text-anchor="" x="1130.07" y="143.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>open_normal_and_derived_tables(THD*, TABLE_LIST*, unsigned int) [mysqld] (692,710 samples, 0.01%)</title><rect x="1120.9" y="229" width="0.1" height="15.0" fill="rgb(234,115,9)" rx="2" ry="2" />
<text text-anchor="" x="1123.86" y="239.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MYSQL_BIN_LOG::ordered_commit(THD*, bool, bool) [mysqld] (8,630,279 samples, 0.11%)</title><rect x="1170.7" y="197" width="1.3" height="15.0" fill="rgb(231,186,3)" rx="2" ry="2" />
<text text-anchor="" x="1173.72" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>rw_pr_wrlock [mysqld] (11,388,027 samples, 0.15%)</title><rect x="1130.7" y="181" width="1.8" height="15.0" fill="rgb(231,166,17)" rx="2" ry="2" />
<text text-anchor="" x="1133.73" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>log_write_up_to(unsigned long, unsigned long, unsigned long) [clone .part.24] [mysqld] (3,967,877 samples, 0.05%)</title><rect x="1172.0" y="149" width="0.7" height="15.0" fill="rgb(237,218,10)" rx="2" ry="2" />
<text text-anchor="" x="1175.05" y="159.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>plugin_lock(THD*, st_plugin_int**) [mysqld] (671,587 samples, 0.01%)</title><rect x="1024.2" y="213" width="0.2" height="15.0" fill="rgb(227,157,9)" rx="2" ry="2" />
<text text-anchor="" x="1027.25" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>create_tmp_table(THD*, TMP_TABLE_PARAM*, List&lt;Item&gt;&amp;, st_order*, bool, bool, unsigned long long, unsigned long long, char const*) [mysqld] (1,625,743 samples, 0.02%)</title><rect x="1053.3" y="165" width="0.2" height="15.0" fill="rgb(235,194,1)" rx="2" ry="2" />
<text text-anchor="" x="1056.27" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>os_event_set(os_event*) [mysqld] (5,142,334 samples, 0.07%)</title><rect x="1159.1" y="37" width="0.8" height="15.0" fill="rgb(246,138,12)" rx="2" ry="2" />
<text text-anchor="" x="1162.12" y="47.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>row_search_on_row_ref(btr_pcur_t*, unsigned long, dict_table_t const*, dtuple_t const*, mtr_t*) [mysqld] (1,138,196 samples, 0.01%)</title><rect x="1189.7" y="229" width="0.2" height="15.0" fill="rgb(234,199,11)" rx="2" ry="2" />
<text text-anchor="" x="1192.75" y="239.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>open_table(THD*, TABLE_LIST*, Open_table_context*) [mysqld] (11,894,931 samples, 0.16%)</title><rect x="1126.7" y="197" width="1.8" height="15.0" fill="rgb(220,26,18)" rx="2" ry="2" />
<text text-anchor="" x="1129.66" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>Global_backup_lock::release_protection(THD*) [mysqld] (1,059,392 samples, 0.01%)</title><rect x="1170.6" y="197" width="0.1" height="15.0" fill="rgb(248,26,3)" rx="2" ry="2" />
<text text-anchor="" x="1173.55" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_lock::remove_ticket(MDL_lock::Ticket_list MDL_lock::*, MDL_ticket*) [mysqld] (10,959,345 samples, 0.14%)</title><rect x="1134.1" y="165" width="1.7" height="15.0" fill="rgb(228,216,45)" rx="2" ry="2" />
<text text-anchor="" x="1137.08" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::release_lock(enum_mdl_duration, MDL_ticket*) [mysqld] (746,911 samples, 0.01%)</title><rect x="1052.4" y="213" width="0.1" height="15.0" fill="rgb(236,158,20)" rx="2" ry="2" />
<text text-anchor="" x="1055.37" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>innobase_commit(handlerton*, THD*, bool) [mysqld] (5,149,062 samples, 0.07%)</title><rect x="1159.1" y="149" width="0.8" height="15.0" fill="rgb(213,183,39)" rx="2" ry="2" />
<text text-anchor="" x="1162.12" y="159.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>open_normal_and_derived_tables(THD*, TABLE_LIST*, unsigned int) [mysqld] (772,271 samples, 0.01%)</title><rect x="1128.5" y="245" width="0.1" height="15.0" fill="rgb(231,101,47)" rx="2" ry="2" />
<text text-anchor="" x="1131.49" y="255.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_map_partition::move_from_hash_to_lock_mutex(MDL_lock*) [mysqld] (60,657,324 samples, 0.79%)</title><rect x="1111.5" y="133" width="9.4" height="15.0" fill="rgb(234,144,9)" rx="2" ry="2" />
<text text-anchor="" x="1114.50" y="143.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>plugin_lock(THD*, st_plugin_int**) [mysqld] (19,815,568 samples, 0.26%)</title><rect x="19.6" y="229" width="3.0" height="15.0" fill="rgb(211,70,47)" rx="2" ry="2" />
<text text-anchor="" x="22.58" y="239.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>buf_flush_LRU_tail() [mysqld] (5,844,545 samples, 0.08%)</title><rect x="18.7" y="325" width="0.9" height="15.0" fill="rgb(228,196,3)" rx="2" ry="2" />
<text text-anchor="" x="21.67" y="335.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>ReplSemiSyncMaster::reportReplyBinlog(unsigned int, char const*, unsigned long long, bool) [semisync_master.so] (25,091,920 samples, 0.33%)</title><rect x="46.4" y="197" width="3.9" height="15.0" fill="rgb(205,192,46)" rx="2" ry="2" />
<text text-anchor="" x="49.44" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::acquire_lock(MDL_request*, unsigned long) [mysqld] (10,327,213 samples, 0.14%)</title><rect x="1132.5" y="181" width="1.6" height="15.0" fill="rgb(217,78,46)" rx="2" ry="2" />
<text text-anchor="" x="1135.49" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_lock::remove_ticket(MDL_lock::Ticket_list MDL_lock::*, MDL_ticket*) [mysqld] (691,667 samples, 0.01%)</title><rect x="1170.3" y="197" width="0.2" height="15.0" fill="rgb(205,38,12)" rx="2" ry="2" />
<text text-anchor="" x="1173.35" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>open_tmp_table(TABLE*) [mysqld] (1,625,743 samples, 0.02%)</title><rect x="1053.3" y="133" width="0.2" height="15.0" fill="rgb(253,158,36)" rx="2" ry="2" />
<text text-anchor="" x="1056.27" y="143.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::release_lock(enum_mdl_duration, MDL_ticket*) [mysqld] (11,388,027 samples, 0.15%)</title><rect x="1130.7" y="213" width="1.8" height="15.0" fill="rgb(233,118,17)" rx="2" ry="2" />
<text text-anchor="" x="1133.73" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>st_select_lex_unit::cleanup() [mysqld] (2,081,076 samples, 0.03%)</title><rect x="1053.0" y="197" width="0.3" height="15.0" fill="rgb(206,63,39)" rx="2" ry="2" />
<text text-anchor="" x="1055.95" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MYSQL_BIN_LOG::commit(THD*, bool) [mysqld] (196,135,784 samples, 2.57%)</title><rect x="1132.5" y="213" width="30.3" height="15.0" fill="rgb(230,166,25)" rx="2" ry="2" />
<text text-anchor="" x="1135.49" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >MY..</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>[unknown] (12,064,245 samples, 0.16%)</title><rect x="10.0" y="357" width="1.9" height="15.0" fill="rgb(249,117,39)" rx="2" ry="2" />
<text text-anchor="" x="13.00" y="367.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::acquire_lock(MDL_request*, unsigned long) [mysqld] (36,637,385 samples, 0.48%)</title><rect x="1121.0" y="181" width="5.6" height="15.0" fill="rgb(242,153,54)" rx="2" ry="2" />
<text text-anchor="" x="1123.97" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>mysql_union(THD*, LEX*, select_result*, st_select_lex_unit*, unsigned long) [mysqld] (3,708,999 samples, 0.05%)</title><rect x="1053.0" y="213" width="0.5" height="15.0" fill="rgb(233,213,32)" rx="2" ry="2" />
<text text-anchor="" x="1055.95" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>rw_pr_wrlock [mysqld] (31,110,579 samples, 0.41%)</title><rect x="1121.8" y="133" width="4.8" height="15.0" fill="rgb(251,116,39)" rx="2" ry="2" />
<text text-anchor="" x="1124.82" y="143.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>trx_prepare(trx_t*) [mysqld] (47,930,108 samples, 0.63%)</title><rect x="1162.8" y="165" width="7.4" height="15.0" fill="rgb(232,75,5)" rx="2" ry="2" />
<text text-anchor="" x="1165.76" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>rw_pr_wrlock [mysqld] (691,667 samples, 0.01%)</title><rect x="1170.3" y="181" width="0.2" height="15.0" fill="rgb(224,28,52)" rx="2" ry="2" />
<text text-anchor="" x="1173.35" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>mysql_delete(THD*, TABLE_LIST*, Item*, SQL_I_List&lt;st_order&gt;*, unsigned long long, unsigned long long) [mysqld] (701,993 samples, 0.01%)</title><rect x="1120.9" y="245" width="0.1" height="15.0" fill="rgb(218,206,33)" rx="2" ry="2" />
<text text-anchor="" x="1123.86" y="255.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MYSQL_BIN_LOG::change_stage(THD*, Stage_manager::StageID, THD*, st_mysql_mutex*, st_mysql_mutex*) [mysqld] (6,008,839 samples, 0.08%)</title><rect x="1170.7" y="181" width="0.9" height="15.0" fill="rgb(241,153,21)" rx="2" ry="2" />
<text text-anchor="" x="1173.72" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::release_transactional_locks() [mysqld] (746,911 samples, 0.01%)</title><rect x="1052.4" y="245" width="0.1" height="15.0" fill="rgb(243,8,37)" rx="2" ry="2" />
<text text-anchor="" x="1055.37" y="255.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>ha_commit_trans(THD*, bool, bool) [mysqld] (269,148,074 samples, 3.52%)</title><rect x="1128.6" y="229" width="41.6" height="15.0" fill="rgb(211,43,21)" rx="2" ry="2" />
<text text-anchor="" x="1131.61" y="239.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >ha_..</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>row_purge_remove_sec_if_poss_leaf(purge_node_t*, dict_index_t*, dtuple_t const*) [mysqld] (1,138,196 samples, 0.01%)</title><rect x="1189.7" y="261" width="0.2" height="15.0" fill="rgb(244,28,5)" rx="2" ry="2" />
<text text-anchor="" x="1192.75" y="271.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>do_handle_one_connection(THD*) [mysqld] (7,471,739,211 samples, 97.75%)</title><rect x="19.6" y="309" width="1153.4" height="15.0" fill="rgb(231,223,12)" rx="2" ry="2" />
<text text-anchor="" x="22.58" y="319.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >do_handle_one_connection(THD*) [mysqld]</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::try_acquire_lock_impl(MDL_request*, MDL_ticket**) [mysqld] (1,215,112 samples, 0.02%)</title><rect x="1170.2" y="197" width="0.1" height="15.0" fill="rgb(214,34,30)" rx="2" ry="2" />
<text text-anchor="" x="1173.16" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>select_union::create_result_table(THD*, List&lt;Item&gt;*, bool, unsigned long long, char const*, bool, bool) [mysqld] (1,625,743 samples, 0.02%)</title><rect x="1053.3" y="181" width="0.2" height="15.0" fill="rgb(219,11,49)" rx="2" ry="2" />
<text text-anchor="" x="1056.27" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::release_lock(enum_mdl_duration, MDL_ticket*) [mysqld] (1,059,392 samples, 0.01%)</title><rect x="1170.6" y="181" width="0.1" height="15.0" fill="rgb(247,148,52)" rx="2" ry="2" />
<text text-anchor="" x="1173.55" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>Log_event::read_log_event(st_io_cache*, String*, st_mysql_mutex*, unsigned char, char const*, bool*) [mysqld] (5,657,055,143 samples, 74.01%)</title><rect x="128.3" y="245" width="873.3" height="15.0" fill="rgb(223,225,46)" rx="2" ry="2" />
<text text-anchor="" x="131.33" y="255.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >Log_event::read_log_event(st_io_cache*, String*, st_mysql_mutex*, unsigned char, char const*, bool*) [mysqld]</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_map::find_or_insert(MDL_key const*) [mysqld] (1,215,112 samples, 0.02%)</title><rect x="1170.2" y="181" width="0.1" height="15.0" fill="rgb(254,11,18)" rx="2" ry="2" />
<text text-anchor="" x="1173.16" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MYSQL_BIN_LOG::flush_thread_caches(THD*) [mysqld] (18,448,447 samples, 0.24%)</title><rect x="1159.9" y="165" width="2.9" height="15.0" fill="rgb(248,177,5)" rx="2" ry="2" />
<text text-anchor="" x="1162.92" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>rw_pr_wrlock [mysqld] (10,327,213 samples, 0.14%)</title><rect x="1132.5" y="133" width="1.6" height="15.0" fill="rgb(246,221,44)" rx="2" ry="2" />
<text text-anchor="" x="1135.49" y="143.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>je_arena_dalloc_large [mysqld] (11,983,620 samples, 0.16%)</title><rect x="10.0" y="341" width="1.8" height="15.0" fill="rgb(227,221,1)" rx="2" ry="2" />
<text text-anchor="" x="13.00" y="351.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>je_arena_ralloc [mysqld] (3,778,117 samples, 0.05%)</title><rect x="17.2" y="357" width="0.5" height="15.0" fill="rgb(233,170,11)" rx="2" ry="2" />
<text text-anchor="" x="20.16" y="367.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_map::find_or_insert(MDL_key const*) [mysqld] (11,894,931 samples, 0.16%)</title><rect x="1126.7" y="149" width="1.8" height="15.0" fill="rgb(240,59,9)" rx="2" ry="2" />
<text text-anchor="" x="1129.66" y="159.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MYSQL_BIN_LOG::change_stage(THD*, Stage_manager::StageID, THD*, st_mysql_mutex*, st_mysql_mutex*) [mysqld] (127,517,771 samples, 1.67%)</title><rect x="1135.8" y="181" width="19.7" height="15.0" fill="rgb(240,164,15)" rx="2" ry="2" />
<text text-anchor="" x="1138.77" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>os_mutex_enter(os_mutex_t*) [mysqld] (885,200 samples, 0.01%)</title><rect x="1189.8" y="165" width="0.1" height="15.0" fill="rgb(233,95,31)" rx="2" ry="2" />
<text text-anchor="" x="1192.75" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>st_select_lex_unit::cleanup_level() [mysqld] (2,081,076 samples, 0.03%)</title><rect x="1053.0" y="181" width="0.3" height="15.0" fill="rgb(250,65,7)" rx="2" ry="2" />
<text text-anchor="" x="1055.95" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>srv_release_threads(srv_thread_type, unsigned long) [clone .constprop.20] [mysqld] (5,144,716 samples, 0.07%)</title><rect x="1159.1" y="53" width="0.8" height="15.0" fill="rgb(228,52,16)" rx="2" ry="2" />
<text text-anchor="" x="1162.12" y="63.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>rw_pr_wrlock [mysqld] (746,911 samples, 0.01%)</title><rect x="1052.4" y="181" width="0.1" height="15.0" fill="rgb(238,167,2)" rx="2" ry="2" />
<text text-anchor="" x="1055.37" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>all (7,643,946,627 samples, 100%)</title><rect x="10.0" y="373" width="1180.0" height="15.0" fill="rgb(227,8,5)" rx="2" ry="2" />
<text text-anchor="" x="13.00" y="383.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MYSQL_BIN_LOG::commit(THD*, bool) [mysqld] (10,315,487 samples, 0.13%)</title><rect x="1170.5" y="213" width="1.5" height="15.0" fill="rgb(217,21,45)" rx="2" ry="2" />
<text text-anchor="" x="1173.46" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>os_event_reset(os_event*) [mysqld] (1,374,581 samples, 0.02%)</title><rect x="1172.2" y="133" width="0.2" height="15.0" fill="rgb(208,170,28)" rx="2" ry="2" />
<text text-anchor="" x="1175.20" y="143.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MYSQLparse(THD*) [mysqld] (2,071,309 samples, 0.03%)</title><rect x="1172.7" y="245" width="0.3" height="15.0" fill="rgb(205,206,42)" rx="2" ry="2" />
<text text-anchor="" x="1175.66" y="255.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>rw_pr_wrlock [mysqld] (1,059,392 samples, 0.01%)</title><rect x="1170.6" y="149" width="0.1" height="15.0" fill="rgb(208,108,43)" rx="2" ry="2" />
<text text-anchor="" x="1173.55" y="159.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>binlog_cache_data::flush(THD*, unsigned long long*, bool*) [mysqld] (18,448,447 samples, 0.24%)</title><rect x="1159.9" y="149" width="2.9" height="15.0" fill="rgb(216,157,0)" rx="2" ry="2" />
<text text-anchor="" x="1162.92" y="159.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>open_table(THD*, TABLE_LIST*, Open_table_context*) [mysqld] (36,637,385 samples, 0.48%)</title><rect x="1121.0" y="197" width="5.6" height="15.0" fill="rgb(223,105,3)" rx="2" ry="2" />
<text text-anchor="" x="1123.97" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>Binlog_transmit_delegate::after_send_event(THD*, unsigned short, String*, char const*, unsigned long long) [mysqld] (199,129,223 samples, 2.61%)</title><rect x="19.6" y="245" width="30.7" height="15.0" fill="rgb(235,65,33)" rx="2" ry="2" />
<text text-anchor="" x="22.58" y="255.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >Bi..</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MYSQL_BIN_LOG::flush_thread_caches(THD*) [mysqld] (1,198,903 samples, 0.02%)</title><rect x="1171.9" y="165" width="0.1" height="15.0" fill="rgb(206,79,51)" rx="2" ry="2" />
<text text-anchor="" x="1174.86" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>parse_sql(THD*, Parser_state*, Object_creation_ctx*) [mysqld] (2,071,309 samples, 0.03%)</title><rect x="1172.7" y="261" width="0.3" height="15.0" fill="rgb(205,137,11)" rx="2" ry="2" />
<text text-anchor="" x="1175.66" y="271.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::try_acquire_lock_impl(MDL_request*, MDL_ticket**) [mysqld] (10,327,213 samples, 0.14%)</title><rect x="1132.5" y="165" width="1.6" height="15.0" fill="rgb(235,88,27)" rx="2" ry="2" />
<text text-anchor="" x="1135.49" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>handler::ha_open(TABLE*, char const*, int, int) [mysqld] (1,625,743 samples, 0.02%)</title><rect x="1053.3" y="117" width="0.2" height="15.0" fill="rgb(228,66,3)" rx="2" ry="2" />
<text text-anchor="" x="1056.27" y="127.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>get_system_var(THD*, enum_var_type, st_mysql_lex_string, st_mysql_lex_string) [mysqld] (2,071,309 samples, 0.03%)</title><rect x="1172.7" y="229" width="0.3" height="15.0" fill="rgb(245,38,39)" rx="2" ry="2" />
<text text-anchor="" x="1175.66" y="239.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_map::find_or_insert(MDL_key const*) [mysqld] (772,271 samples, 0.01%)</title><rect x="1128.5" y="165" width="0.1" height="15.0" fill="rgb(251,128,41)" rx="2" ry="2" />
<text text-anchor="" x="1131.49" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>os_event_wait_low(os_event*, long) [mysqld] (2,845,482 samples, 0.04%)</title><rect x="19.1" y="309" width="0.5" height="15.0" fill="rgb(232,119,40)" rx="2" ry="2" />
<text text-anchor="" x="22.14" y="319.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>open_table(THD*, TABLE_LIST*, Open_table_context*) [mysqld] (435,729,495 samples, 5.70%)</title><rect x="1053.6" y="197" width="67.3" height="15.0" fill="rgb(213,154,12)" rx="2" ry="2" />
<text text-anchor="" x="1056.60" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >open_ta..</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>repl_semi_after_send_event [semisync_master.so] (25,091,920 samples, 0.33%)</title><rect x="46.4" y="229" width="3.9" height="15.0" fill="rgb(246,78,30)" rx="2" ry="2" />
<text text-anchor="" x="49.44" y="239.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>sync_array_reserve_cell(sync_array_t*, void*, unsigned long, char const*, unsigned long, unsigned long*) [mysqld] (907,561 samples, 0.01%)</title><rect x="1189.7" y="181" width="0.2" height="15.0" fill="rgb(219,120,21)" rx="2" ry="2" />
<text text-anchor="" x="1192.75" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>trans_commit(THD*) [mysqld] (269,148,074 samples, 3.52%)</title><rect x="1128.6" y="245" width="41.6" height="15.0" fill="rgb(243,205,38)" rx="2" ry="2" />
<text text-anchor="" x="1131.61" y="255.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >tra..</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>open_tables(THD*, TABLE_LIST**, unsigned int*, unsigned int, Prelocking_strategy*) [mysqld] (36,637,385 samples, 0.48%)</title><rect x="1121.0" y="213" width="5.6" height="15.0" fill="rgb(212,149,41)" rx="2" ry="2" />
<text text-anchor="" x="1123.97" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>rw_pr_wrlock [mysqld] (108,240,128 samples, 1.42%)</title><rect x="1035.7" y="197" width="16.7" height="15.0" fill="rgb(254,43,40)" rx="2" ry="2" />
<text text-anchor="" x="1038.66" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>inline_mysql_mutex_lock [mysqld] (146,616,255 samples, 1.92%)</title><rect x="1001.6" y="245" width="22.6" height="15.0" fill="rgb(247,4,8)" rx="2" ry="2" />
<text text-anchor="" x="1004.62" y="255.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >i..</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>find_sys_var(THD*, char const*, unsigned int) [mysqld] (2,071,309 samples, 0.03%)</title><rect x="1172.7" y="213" width="0.3" height="15.0" fill="rgb(253,79,27)" rx="2" ry="2" />
<text text-anchor="" x="1175.66" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>ha_heap::open(char const*, int, unsigned int) [mysqld] (1,605,042 samples, 0.02%)</title><rect x="1053.3" y="101" width="0.2" height="15.0" fill="rgb(222,179,23)" rx="2" ry="2" />
<text text-anchor="" x="1056.27" y="111.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>Binlog_transmit_delegate::before_send_event(THD*, unsigned short, String*, char const*, unsigned long long) [mysqld] (447,647,703 samples, 5.86%)</title><rect x="50.3" y="245" width="69.1" height="15.0" fill="rgb(247,30,51)" rx="2" ry="2" />
<text text-anchor="" x="53.32" y="255.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >Binlog_..</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>os_event_wait_time_low(os_event*, unsigned long, long) [mysqld] (29,009,091 samples, 0.38%)</title><rect x="1185.3" y="325" width="4.4" height="15.0" fill="rgb(225,175,52)" rx="2" ry="2" />
<text text-anchor="" x="1188.27" y="335.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MYSQL_BIN_LOG::finish_commit(THD*) [mysqld] (1,062,696 samples, 0.01%)</title><rect x="1171.6" y="181" width="0.2" height="15.0" fill="rgb(211,69,33)" rx="2" ry="2" />
<text text-anchor="" x="1174.64" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>mysql_binlog_send(THD*, char*, unsigned long long, Gtid_set const*, int) [mysqld] (6,508,865,732 samples, 85.15%)</title><rect x="19.6" y="261" width="1004.8" height="15.0" fill="rgb(242,22,38)" rx="2" ry="2" />
<text text-anchor="" x="22.58" y="271.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >mysql_binlog_send(THD*, char*, unsigned long long, Gtid_set const*, int) [mysqld]</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>ha_prepare_low(THD*, bool) [mysqld] (47,930,108 samples, 0.63%)</title><rect x="1162.8" y="213" width="7.4" height="15.0" fill="rgb(241,119,7)" rx="2" ry="2" />
<text text-anchor="" x="1165.76" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>instantiate_tmp_table(TABLE*, st_key*, st_columndef*, st_columndef**, unsigned long long, char, Opt_trace_context*) [mysqld] (1,625,743 samples, 0.02%)</title><rect x="1053.3" y="149" width="0.2" height="15.0" fill="rgb(205,85,4)" rx="2" ry="2" />
<text text-anchor="" x="1056.27" y="159.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>inline_mysql_mutex_lock.constprop.161 [mysqld] (127,517,771 samples, 1.67%)</title><rect x="1135.8" y="165" width="19.7" height="15.0" fill="rgb(225,166,49)" rx="2" ry="2" />
<text text-anchor="" x="1138.77" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::release_lock(enum_mdl_duration, MDL_ticket*) [mysqld] (10,959,345 samples, 0.14%)</title><rect x="1134.1" y="181" width="1.7" height="15.0" fill="rgb(218,56,24)" rx="2" ry="2" />
<text text-anchor="" x="1137.08" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>JOIN::exec() [mysqld] (2,633,585 samples, 0.03%)</title><rect x="1052.5" y="197" width="0.4" height="15.0" fill="rgb(233,85,12)" rx="2" ry="2" />
<text text-anchor="" x="1055.53" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::acquire_lock(MDL_request*, unsigned long) [mysqld] (13,694,155 samples, 0.18%)</title><rect x="1128.6" y="213" width="2.1" height="15.0" fill="rgb(225,205,8)" rx="2" ry="2" />
<text text-anchor="" x="1131.61" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>reset_transmit_packet(THD*, unsigned short, unsigned long*, char const**, bool) [mysqld] (671,587 samples, 0.01%)</title><rect x="1024.2" y="245" width="0.2" height="15.0" fill="rgb(232,91,54)" rx="2" ry="2" />
<text text-anchor="" x="1027.25" y="255.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>btr_cur_search_to_nth_level(dict_index_t*, unsigned long, dtuple_t const*, unsigned long, unsigned long, btr_cur_t*, unsigned long, char const*, unsigned long, mtr_t*) [mysqld] (1,138,196 samples, 0.01%)</title><rect x="1189.7" y="213" width="0.2" height="15.0" fill="rgb(239,133,12)" rx="2" ry="2" />
<text text-anchor="" x="1192.75" y="223.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>trx_undo_update_cleanup(trx_t*, unsigned char*, mtr_t*) [mysqld] (5,144,716 samples, 0.07%)</title><rect x="1159.1" y="85" width="0.8" height="15.0" fill="rgb(216,36,28)" rx="2" ry="2" />
<text text-anchor="" x="1162.12" y="95.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>je_tcache_bin_flush_large [mysqld] (744,593 samples, 0.01%)</title><rect x="18.5" y="357" width="0.1" height="15.0" fill="rgb(250,104,18)" rx="2" ry="2" />
<text text-anchor="" x="21.49" y="367.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MDL_context::try_acquire_lock_impl(MDL_request*, MDL_ticket**) [mysqld] (13,694,155 samples, 0.18%)</title><rect x="1128.6" y="197" width="2.1" height="15.0" fill="rgb(251,130,3)" rx="2" ry="2" />
<text text-anchor="" x="1131.61" y="207.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>trans_commit_stmt(THD*) [mysqld] (16,190,143 samples, 0.21%)</title><rect x="1170.2" y="245" width="2.5" height="15.0" fill="rgb(213,71,49)" rx="2" ry="2" />
<text text-anchor="" x="1173.16" y="255.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>MYSQL_BIN_LOG::process_commit_stage_queue(THD*, THD*) [mysqld] (5,149,062 samples, 0.07%)</title><rect x="1159.1" y="181" width="0.8" height="15.0" fill="rgb(205,205,43)" rx="2" ry="2" />
<text text-anchor="" x="1162.12" y="191.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>trx_prepare(trx_t*) [mysqld] (3,967,877 samples, 0.05%)</title><rect x="1172.0" y="165" width="0.7" height="15.0" fill="rgb(215,70,4)" rx="2" ry="2" />
<text text-anchor="" x="1175.05" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>Gtid_state::update_owned_gtids_impl(THD*, bool) [mysqld] (22,680,762 samples, 0.30%)</title><rect x="1155.5" y="165" width="3.5" height="15.0" fill="rgb(250,42,31)" rx="2" ry="2" />
<text text-anchor="" x="1158.46" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>plugin_lock(THD*, st_plugin_int**) [mysqld] (293,558,573 samples, 3.84%)</title><rect x="61.3" y="229" width="45.3" height="15.0" fill="rgb(208,7,25)" rx="2" ry="2" />
<text text-anchor="" x="64.28" y="239.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" >plug..</text>
</g>
<g class="func_g" onmouseover="s(this)" onmouseout="c()" onclick="zoom(this)">
<title>Gtid_state::update_owned_gtids_impl(THD*, bool) [mysqld] (1,062,696 samples, 0.01%)</title><rect x="1171.6" y="165" width="0.2" height="15.0" fill="rgb(214,9,34)" rx="2" ry="2" />
<text text-anchor="" x="1174.64" y="175.5" font-size="12" font-family="Verdana" fill="rgb(0,0,0)" ></text>
</g>
</svg>
% sudo ./tinfoil lockstat -p 77424 --min-max-wait-time-us 1000 1
thread 101996
mutex [unknown], total_wait_time_us 1257.09, total_hold_time_us 13.18, avg_wait_time_us 628.55, avg_hold_time_us 6.59, max_wait_time_us 1254.95, max_hold_time_us 9.03, enter_count 2
rw_pr_wrlock+0xf [mysqld] (b3c73f)
MDL_map::find_or_insert(MDL_key const*)+0x548 [mysqld] (79a318)
MDL_context::try_acquire_lock_impl(MDL_request*, MDL_ticket**)+0xa8 [mysqld] (79b8e8)
MDL_context::acquire_lock(MDL_request*, unsigned long)+0xab [mysqld] (79c06b)
open_table(THD*, TABLE_LIST*, Open_table_context*)+0xe6d [mysqld] (70caad)
open_tables(THD*, TABLE_LIST**, unsigned int*, unsigned int, Prelocking_strategy*)+0x5da [mysqld] (713eda)
open_normal_and_derived_tables(THD*, TABLE_LIST*, unsigned int)+0x47 [mysqld] (714987)
mysql_insert(THD*, TABLE_LIST*, List<Item>&, List<List<Item> >&, List<Item>&, List<Item>&, enum_duplicates, bool)+0x213 [mysqld] (6bd6a3)
mysql_execute_command(THD*)+0x3f05 [mysqld] (685f65)
mysql_parse(THD*, char*, unsigned int, Parser_state*)+0x4b3 [mysqld] (688f03)
dispatch_command(enum_server_command, THD*, char*, unsigned int)+0x19ae [mysqld] (68b12e)
do_handle_one_connection(THD*)+0x19a [mysqld] (6f5f9a)
handle_one_connection+0x40 [mysqld] (6f6030)
pfs_spawn_thread+0x107 [mysqld] (b32a07)
start_thread+0xc4 [libpthread.so.0] (7f88a08734b4)
wait time (us) : count distribution
0 -> 1 : 15155 |****************************************|
2 -> 3 : 3129 |******** |
4 -> 7 : 405 |* |
8 -> 15 : 2834 |******* |
16 -> 31 : 955 |** |
32 -> 63 : 244 | |
64 -> 127 : 105 | |
128 -> 255 : 74 | |
256 -> 511 : 15 | |
512 -> 1023 : 0 | |
1024 -> 2047 : 1 | |
hold time (us) : count distribution
0 -> 1 : 1423 |****** |
2 -> 3 : 9274 |****************************************|
4 -> 7 : 6304 |*************************** |
8 -> 15 : 3244 |************* |
16 -> 31 : 1261 |***** |
32 -> 63 : 787 |*** |
64 -> 127 : 247 |* |
128 -> 255 : 169 | |
256 -> 511 : 74 | |
512 -> 1023 : 103 | |
1024 -> 2047 : 28 | |
2048 -> 4095 : 7 | |
4096 -> 8191 : 1 | |
8192 -> 16383 : 19 | |
16384 -> 32767 : 6 | |
32768 -> 65535 : 14 | |
65536 -> 131071 : 8 | |
131072 -> 262143 : 0 | |
262144 -> 524287 : 0 | |
524288 -> 1048575 : 1 | |
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment