{"id":931,"date":"2020-03-25T00:00:00","date_gmt":"2020-03-25T00:00:00","guid":{"rendered":"https:\/\/en.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/"},"modified":"2025-03-04T06:08:38","modified_gmt":"2025-03-04T14:08:38","slug":"quickly-find-rust-program-bottlenecks-online-using-a-go-tool","status":"publish","type":"post","link":"https:\/\/www.pingcap.com\/ko\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/","title":{"rendered":"Quickly Find Rust Program Bottlenecks Online Using a Go Tool"},"content":{"rendered":"<p>Profiling large <a href=\"https:\/\/en.wikipedia.org\/wiki\/Rust_(programming_language)\">Rust<\/a> applications online is difficult. Current profilers are not up to the job.<\/p>\n<p>When we need to analyze a Rust program&#8217;s performance, we often think about <a href=\"https:\/\/en.wikipedia.org\/wiki\/Perf_(Linux)\">perf<\/a>. To use perf, we need to:<\/p>\n<ol>\n<li>Install a complete perf program to sample stack traces.<\/li>\n<li>Use a set of script tools to process the file obtained by sampling.<\/li>\n<li>Visualize the output of the processing result in the previous step.<\/li>\n<\/ol>\n<p>However, perf doesn&#8217;t perfectly support programs written in Rust. For example, it doesn&#8217;t understand Rust&#8217;s closures. Therefore, symbols for the stack information in the visualization are complex.<\/p>\n<p>To collect profiling statistics for Rust programs like <a href=\"https:\/\/github.com\/tikv\/tikv\">TiKV<\/a>, we developed <a href=\"https:\/\/github.com\/tikv\/pprof-rs\">pprof-rs<\/a>, which samples, analyzes, and visualizes performance data in one step. We integrated pprof-rs in TiKV&#8217;s <code>status_server<\/code>, which outputs monitoring information.<\/p>\n<p>Because pprof-rs uses the same data format as the Go tool <a href=\"https:\/\/golang.org\/pkg\/net\/http\/pprof\/\">pprof<\/a>, we can use pprof, to visualize TiKV&#8217;s profiling data. This makes it easier for developers and online users to find TiKV&#8217;s performance bottlenecks.<\/p>\n<p>In this post, I&#8217;ll share how we use pprof to visualize TiKV&#8217;s profiling data to help quickly locate TiKV&#8217;s performance bottlenecks online. If you also write Rust programs, you can introduce pprof-rs into your projects to help analyze your programs&#8217; performance online.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Why_the_protobuf_format\"><\/span>Why the protobuf format?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><a href=\"https:\/\/github.com\/google\/pprof\">pprof<\/a> is a tool that analyzes and visualizes profiling data. It profiles data in the <a href=\"https:\/\/github.com\/google\/pprof\/blob\/master\/proto\/profile.proto\">Protocol Buffers<\/a> (protobuf) format. Protobuf is Google&#8217;s data interchange format and helps serialize structured data.<\/p>\n<p>If we want to obtain detailed profiling data for a comprehensive analysis or use other community tools for profiling diagnosis, a program-readable file format is essential. pprof-rs outputs files in the protobuf format. Thus, we can use other tools that depend on this format for profiling analysis.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"How_to_use_pprof_to_visualize_a_Rust_programs_profiling_data\"><\/span>How to use pprof to visualize a Rust program&#8217;s profiling data<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>TiKV is a distributed, transactional, key-value database written in Rust. Taking it as an example, let&#8217;s see how to use pprof to visualize a Rust program&#8217;s profiling data:<\/p>\n<blockquote><p><strong>Note:<\/strong><\/p>\n<p>Before you start, make sure that you&#8217;ve installed the following in the environment:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.graphviz.org\/download\/\">Graphviz<\/a><\/li>\n<li><a href=\"https:\/\/golang.org\/doc\/install\/source\">The Go client<\/a><\/li>\n<\/ul>\n<\/blockquote>\n<p>Assume that TiKV exports protobuf files via <code>http:\/\/127.0.0.1:22039\/<\/code>.<\/p>\n<ol>\n<li>Sample the program and download a protobuf file. In this example, pprof samples the program for 50 seconds:\n<pre><code>curl -H \"Content-Type: application\/protobuf\"\nhttp:\/\/127.0.0.1:22039\/debug\/pprof\/profile?seconds=50 &gt; some.pb\n<\/code><\/pre>\n<p>After 50 seconds, sampling stops, and the corresponding protobuf file is returned.<\/li>\n<li>Use pprof to parse the protobuf file.\n<pre><code>go tool pprof -http=:8080 some.pb\n<\/code><\/pre>\n<\/li>\n<li>Go to <code>http:\/\/localhost:8080<\/code>, and you can see the graph of stack traces:<\/li>\n<\/ol>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-25473\" src=\"https:\/\/static.pingcap.com\/files\/2020\/03\/04060824\/graph-of-stack-traces.png\" alt=\"graph-of-stack-traces\" width=\"1600\" height=\"837\" srcset=\"https:\/\/static.pingcap.com\/files\/2020\/03\/04060824\/graph-of-stack-traces.png 1600w, https:\/\/static.pingcap.com\/files\/2020\/03\/04060824\/graph-of-stack-traces-300x157.png 300w, https:\/\/static.pingcap.com\/files\/2020\/03\/04060824\/graph-of-stack-traces-1024x536.png 1024w, https:\/\/static.pingcap.com\/files\/2020\/03\/04060824\/graph-of-stack-traces-768x402.png 768w, https:\/\/static.pingcap.com\/files\/2020\/03\/04060824\/graph-of-stack-traces-1536x804.png 1536w, https:\/\/static.pingcap.com\/files\/2020\/03\/04060824\/graph-of-stack-traces-1440x753.png 1440w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/>\n<div class=\"caption-center\">Graph of stack traces<\/div>\n<ol start=\"4\">\n<li>(Optional) From the <strong>VIEW<\/strong> drop-down menu, select <strong>Flame Graph<\/strong>. You can see the <a href=\"http:\/\/www.brendangregg.com\/flamegraphs.html\">flame graph<\/a>, a visualization of profiled software which quickly and accurately identifies the most frequent code paths.<\/li>\n<\/ol>\n<img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"288\" class=\"wp-image-932\" src=\"https:\/\/en.pingcap.com\/wp-content\/uploads\/2020\/03\/flame-graph.gif\" alt=\"Flame graph\" \/>\n<div class=\"caption-center\">Flame graph<\/div>\n<p>With the protobuf format, you can write your own visualization or performance analysis tool to parse pprof-rs&#8217; output. Because pprof-rs uses <a href=\"https:\/\/github.com\/rust-lang\/backtrace-rs\">backtrace-rs<\/a>, it can go deeper into the stack and obtain more backtrace information than perf. This may be more information than you need. When pprof starts, you can use pprof&#8217;s command line parameters to ignore unnecessary stack information.<\/p>\n<p>For example, you can run this command to ignore <code>threadpool<\/code>-related information:<\/p>\n<pre><code>go tool pprof -ignore threadpool -http=:8080 some.pb\n<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>It has long been a problem to locate Rust programs&#8217; performance bottlenecks online. By integrating pprof-rs in TiKV, we can use the Go tool pprof to visualize TiKV&#8217;s profiling data. This helps you quickly locate TiKV&#8217;s performance issues in the production environment. Meanwhile, pprof can directly output a flame graph via HTTP requests.<\/p>\n<p>If you introduce pprof-rs into your Rust-written programs, you can use pprof to visualize your programs&#8217; profiling data online. If you&#8217;re interested in <a href=\"https:\/\/github.com\/tikv\/pprof-rs\">pprof-rs<\/a>, give it a try.<\/p>","protected":false},"excerpt":{"rendered":"<p>It can be hard to find Rust programs&#8217; performance bottlenecks online. By integrating pprof-rs in TiKV, we can use the Go tool pprof to visualize TiKV&#8217;s profiling data. This helps analyze the program&#8217;s performance online.<\/p>","protected":false},"author":68,"featured_media":934,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ub_ctt_via":"","footnotes":""},"categories":[6],"tags":[53,23,22],"class_list":["post-931","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-engineering","tag-go","tag-rust","tag-tikv"],"acf":[],"featured_image_src":"https:\/\/static.pingcap.com\/files\/2020\/03\/find-rust-program-bottlenecks-online-using-go-tool-scaled.jpg","author_info":{"display_name":"Ke'ao Yang","author_link":"https:\/\/www.pingcap.com\/ko\/blog\/author\/keao-yang\/"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Quickly Find Rust Program Bottlenecks Online Using a Go Tool | TiDB<\/title>\n<meta name=\"description\" content=\"In this post, we will share how we use pprof to visualize TiKV&#039;s profiling data to help quickly locate TiKV&#039;s performance bottlenecks online.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.pingcap.com\/ko\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Quickly Find Rust Program Bottlenecks Online Using a Go Tool | TiDB\" \/>\n<meta property=\"og:description\" content=\"In this post, we will share how we use pprof to visualize TiKV&#039;s profiling data to help quickly locate TiKV&#039;s performance bottlenecks online.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.pingcap.com\/ko\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/\" \/>\n<meta property=\"og:site_name\" content=\"TiDB\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/pingcap2015\" \/>\n<meta property=\"article:published_time\" content=\"2020-03-25T00:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-04T14:08:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/static.pingcap.com\/files\/2020\/03\/find-rust-program-bottlenecks-online-using-go-tool-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"854\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Ke&#039;ao Yang\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@PingCAP\" \/>\n<meta name=\"twitter:site\" content=\"@PingCAP\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ke&#039;ao Yang\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/\"},\"author\":{\"name\":\"Ke'ao Yang\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/f052092189a67f6d3b367286b434609c\"},\"headline\":\"Quickly Find Rust Program Bottlenecks Online Using a Go Tool\",\"datePublished\":\"2020-03-25T00:00:00+00:00\",\"dateModified\":\"2025-03-04T14:08:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/\"},\"wordCount\":611,\"publisher\":{\"@id\":\"https:\/\/www.pingcap.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/static.pingcap.com\/files\/2020\/03\/find-rust-program-bottlenecks-online-using-go-tool-scaled.jpg\",\"keywords\":[\"Go\",\"Rust\",\"TiKV\"],\"articleSection\":[\"Engineering\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/\",\"url\":\"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/\",\"name\":\"Quickly Find Rust Program Bottlenecks Online Using a Go Tool | TiDB\",\"isPartOf\":{\"@id\":\"https:\/\/www.pingcap.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/static.pingcap.com\/files\/2020\/03\/find-rust-program-bottlenecks-online-using-go-tool-scaled.jpg\",\"datePublished\":\"2020-03-25T00:00:00+00:00\",\"dateModified\":\"2025-03-04T14:08:38+00:00\",\"description\":\"In this post, we will share how we use pprof to visualize TiKV's profiling data to help quickly locate TiKV's performance bottlenecks online.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/#primaryimage\",\"url\":\"https:\/\/static.pingcap.com\/files\/2020\/03\/find-rust-program-bottlenecks-online-using-go-tool-scaled.jpg\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2020\/03\/find-rust-program-bottlenecks-online-using-go-tool-scaled.jpg\",\"width\":2560,\"height\":854},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.pingcap.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Quickly Find Rust Program Bottlenecks Online Using a Go Tool\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.pingcap.com\/#website\",\"url\":\"https:\/\/www.pingcap.com\/\",\"name\":\"TiDB\",\"description\":\"TiDB | SQL at Scale\",\"publisher\":{\"@id\":\"https:\/\/www.pingcap.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.pingcap.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.pingcap.com\/#organization\",\"name\":\"PingCAP\",\"url\":\"https:\/\/www.pingcap.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png\",\"width\":811,\"height\":232,\"caption\":\"PingCAP\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/facebook.com\/pingcap2015\",\"https:\/\/x.com\/PingCAP\",\"https:\/\/linkedin.com\/company\/pingcap\",\"https:\/\/youtube.com\/channel\/UCuq4puT32DzHKT5rU1IZpIA\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/f052092189a67f6d3b367286b434609c\",\"name\":\"Ke'ao Yang\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg\",\"caption\":\"Ke'ao Yang\"},\"description\":\"Software Engineer\",\"url\":\"https:\/\/www.pingcap.com\/ko\/blog\/author\/keao-yang\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Quickly Find Rust Program Bottlenecks Online Using a Go Tool | TiDB","description":"In this post, we will share how we use pprof to visualize TiKV's profiling data to help quickly locate TiKV's performance bottlenecks online.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.pingcap.com\/ko\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/","og_locale":"ko_KR","og_type":"article","og_title":"Quickly Find Rust Program Bottlenecks Online Using a Go Tool | TiDB","og_description":"In this post, we will share how we use pprof to visualize TiKV's profiling data to help quickly locate TiKV's performance bottlenecks online.","og_url":"https:\/\/www.pingcap.com\/ko\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/","og_site_name":"TiDB","article_publisher":"https:\/\/facebook.com\/pingcap2015","article_published_time":"2020-03-25T00:00:00+00:00","article_modified_time":"2025-03-04T14:08:38+00:00","og_image":[{"width":2560,"height":854,"url":"https:\/\/static.pingcap.com\/files\/2020\/03\/find-rust-program-bottlenecks-online-using-go-tool-scaled.jpg","type":"image\/jpeg"}],"author":"Ke'ao Yang","twitter_card":"summary_large_image","twitter_creator":"@PingCAP","twitter_site":"@PingCAP","twitter_misc":{"Written by":"Ke'ao Yang","Est. reading time":"3\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/#article","isPartOf":{"@id":"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/"},"author":{"name":"Ke'ao Yang","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/f052092189a67f6d3b367286b434609c"},"headline":"Quickly Find Rust Program Bottlenecks Online Using a Go Tool","datePublished":"2020-03-25T00:00:00+00:00","dateModified":"2025-03-04T14:08:38+00:00","mainEntityOfPage":{"@id":"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/"},"wordCount":611,"publisher":{"@id":"https:\/\/www.pingcap.com\/#organization"},"image":{"@id":"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/#primaryimage"},"thumbnailUrl":"https:\/\/static.pingcap.com\/files\/2020\/03\/find-rust-program-bottlenecks-online-using-go-tool-scaled.jpg","keywords":["Go","Rust","TiKV"],"articleSection":["Engineering"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/","url":"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/","name":"Quickly Find Rust Program Bottlenecks Online Using a Go Tool | TiDB","isPartOf":{"@id":"https:\/\/www.pingcap.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/#primaryimage"},"image":{"@id":"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/#primaryimage"},"thumbnailUrl":"https:\/\/static.pingcap.com\/files\/2020\/03\/find-rust-program-bottlenecks-online-using-go-tool-scaled.jpg","datePublished":"2020-03-25T00:00:00+00:00","dateModified":"2025-03-04T14:08:38+00:00","description":"In this post, we will share how we use pprof to visualize TiKV's profiling data to help quickly locate TiKV's performance bottlenecks online.","breadcrumb":{"@id":"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/#primaryimage","url":"https:\/\/static.pingcap.com\/files\/2020\/03\/find-rust-program-bottlenecks-online-using-go-tool-scaled.jpg","contentUrl":"https:\/\/static.pingcap.com\/files\/2020\/03\/find-rust-program-bottlenecks-online-using-go-tool-scaled.jpg","width":2560,"height":854},{"@type":"BreadcrumbList","@id":"https:\/\/www.pingcap.com\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.pingcap.com\/"},{"@type":"ListItem","position":2,"name":"Quickly Find Rust Program Bottlenecks Online Using a Go Tool"}]},{"@type":"WebSite","@id":"https:\/\/www.pingcap.com\/#website","url":"https:\/\/www.pingcap.com\/","name":"\ud2f0DB","description":"TiDB | SQL at Scale","publisher":{"@id":"https:\/\/www.pingcap.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.pingcap.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.pingcap.com\/#organization","name":"PingCAP","url":"https:\/\/www.pingcap.com\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/","url":"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png","contentUrl":"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png","width":811,"height":232,"caption":"PingCAP"},"image":{"@id":"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/pingcap2015","https:\/\/x.com\/PingCAP","https:\/\/linkedin.com\/company\/pingcap","https:\/\/youtube.com\/channel\/UCuq4puT32DzHKT5rU1IZpIA"]},{"@type":"Person","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/f052092189a67f6d3b367286b434609c","name":"Ke'ao Yang","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/image\/","url":"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg","contentUrl":"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg","caption":"Ke'ao Yang"},"description":"Software Engineer","url":"https:\/\/www.pingcap.com\/ko\/blog\/author\/keao-yang\/"}]}},"grav_blocks":false,"card_markup":"<a class=\"card-resource bg-white\" href=\"https:\/\/www.pingcap.com\/ko\/blog\/quickly-find-rust-program-bottlenecks-online-using-a-go-tool\/\"><div class=\"card-resource__image-container\"><img class=\"card-resource__image\" alt=\"find-rust-program-bottlenecks-online-using-go-tool.jpg\" src=\"https:\/\/static.pingcap.com\/files\/2020\/03\/find-rust-program-bottlenecks-online-using-go-tool-scaled.jpg\" loading=\"lazy\" width=2560 height=854 \/><\/div><div class=\"card-resource__content-container\"><div class=\"card-resource__content-head\"><div class=\"card-resource__category\">Engineering<\/div><\/div><h5 class=\"card-resource__title\">Quickly Find Rust Program Bottlenecks Online Using a Go Tool<\/h5><\/div><\/a>","_links":{"self":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/931","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/users\/68"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/comments?post=931"}],"version-history":[{"count":3,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/931\/revisions"}],"predecessor-version":[{"id":25474,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/931\/revisions\/25474"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/media\/934"}],"wp:attachment":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/media?parent=931"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/categories?post=931"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/tags?post=931"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}