├── .gitignore ├── LICENSE ├── README.md ├── d3trace.py ├── img └── screen_seq.png ├── index.html ├── sequences.css ├── sequences.js ├── tests ├── test.py ├── test1.data └── test1_expected.js └── trace_json.js /.gitignore: -------------------------------------------------------------------------------- 1 | test.data 2 | test.data.short 3 | perf.data 4 | perf.data.old 5 | *.pyc 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | 203 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | d3js_trace 2 | ========== 3 | 4 | Trace data visualization with D3js 5 | 6 | ORVERVIEW 7 | --------- 8 | Finding CPU bottle neck is a usual tasks of performance analysis. One of the 9 | efficient way of finding the hot-path is to sampling stack trace of the system. 10 | However, it is difficult to read collected stack trace text data just as it 11 | is, because usually text trace data consists of enourmous amount of data. 12 | 13 | To solve the problem, making trace data human readable with visualization is a 14 | good solution. D3js_trace visualize the sampled stack trace data with D3js. D3js 15 | is a JavaScript library for manipulating documents based on data. By 16 | visualizing trace data with HTML, SVG and CSS, we can easily detect where the 17 | CPU bottle neck is. 18 | 19 | EXAMPLE 20 | ------- 21 | The following image is the visualized stack traces sampled with 'perf'. perf is 22 | a performance counters subsystem in Linux. They form a basis for profiling 23 | applications to trace dynamic control flow and identify hot-spots. 24 | 25 | ![alt tag](https://raw.github.com/etsukata/d3js_trace/master/img/screen_seq.png) 26 | 27 | Here 'sunburst' form is used. A sunburst is similar to the treemap, except it 28 | uses a radial layout. The root node of the tree is at the center, with leaves 29 | on the circumference. The area (or angle, depending on implementation) of each 30 | arc corresponds to its occurrence count. 31 | 32 | Interactive WEB page example is also available at [HERE](http://etsukata.com/d3js_trace/sample1/). 33 | 34 | USAGE 35 | ----- 36 | 37 | Clone the repository: 38 | 39 | # git clone https://github.com/Etsukata/d3js_trace.git 40 | # cd d3js_trace 41 | 42 | First, we need to sampling stack traces. d3js_trace uses Linux 'perf' command to 43 | sample stack traces. 44 | This can be done with the following command: 45 | 46 | # perf record -g fp -a sleep 3 47 | 48 | Translate sampled trace to json for visualizing it with D3js: 49 | 50 | # perf script | ./d3trace.py > trace_json.js 51 | 52 | View HTML file with WEB browser: 53 | 54 | # firefox index.html 55 | 56 | THANKS TO 57 | --------- 58 | 59 | d3js_trace is very impressed by the following great job. 60 | 61 | - Brendan Gregg's [FlameGraph](https://github.com/brendangregg/FlameGraph) 62 | visualize hot-CPU code-paths. 63 | 64 | And using the following D3js example for visualization. 65 | 66 | - D3js example: [Sequences sunburst](http://bl.ocks.org/kerryrodden/7090426) 67 | 68 | 69 | TODO 70 | ---- 71 | 72 | - Show stack traces with colors 73 | - Make sunburst trace graph zoomable 74 | - Visualize with other d3js tools(Collapsible Tree, Zoomable Pack, and more) 75 | - Visualize latency trace data collected with ftrace 76 | -------------------------------------------------------------------------------- /d3trace.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | ''' 3 | Translate trace data to json for visualizing it with D3js. 4 | Usage: 5 | # perf script | ./d3trace.py > trace_json.js 6 | 7 | Copyright (C) 2013 Eiichi Tsukata 8 | ''' 9 | 10 | 11 | import sys 12 | import re 13 | 14 | def stack_sample_to_dict(sample): 15 | 16 | ret = {} 17 | 18 | if len(sample['stack_trace']) == 1: 19 | ret['name'] = sample['stack_trace'][0] 20 | ret['size'] = sample['count'] 21 | return ret 22 | 23 | ret['name'] = sample['stack_trace'][0] 24 | tail_stack = sample['stack_trace'][1:] 25 | ret['children'] = [stack_sample_to_dict({ 26 | 'stack_trace' : tail_stack, 27 | 'count' : sample['count'] 28 | })] 29 | return ret 30 | 31 | def add_root(child): 32 | 33 | ret = { 34 | 'name' : 'All', 35 | 'children' : [child] 36 | } 37 | return ret 38 | 39 | def merge_dict(d1, d2): 40 | 41 | def has_same_child(d1, d2): 42 | for d in d1['children']: 43 | if d['name'] == d2['children'][0]['name']: 44 | return True 45 | return False 46 | 47 | if not d1['name'] == d2['name']: 48 | print 'error on merge_dict(): root is not same.' 49 | print 'd1:' 50 | print(d1) 51 | print 'd2:' 52 | print(d2) 53 | sys.exit(1) 54 | 55 | if not d1.has_key('children'): 56 | return merge_dict(d2, d1) 57 | 58 | ret = d1.copy() 59 | 60 | if d2.has_key('children'): 61 | if has_same_child(ret, d2): 62 | children = ret['children'] 63 | for i in range(0, len(children)): 64 | if children[i]['name'] == d2['children'][0]['name']: 65 | children[i] = merge_dict(children[i], d2['children'][0]) 66 | else: 67 | ret['children'].append(d2['children'][0]) 68 | else: 69 | dummy = { 70 | 'name' : '', 71 | 'size' : d2['size'] 72 | } 73 | ret['children'].append(dummy) 74 | 75 | return ret 76 | 77 | def strip_func(f): 78 | 79 | ret = f 80 | ret = re.sub(r'\(\[kernel.kallsyms\]\.init\.text\)', '', ret) 81 | ret = re.sub(r'\(\[kernel.kallsyms\]\)', '', ret) 82 | ret = re.sub(r'\(\[unknown\]\)', '', ret) 83 | ret = re.sub(r'\(\)', '', ret) 84 | ret = ''.join(ret.split()[1:]) 85 | return ret 86 | 87 | def main(input_text=None): 88 | 89 | if input_text is None: 90 | input_text = sys.stdin 91 | 92 | stack_traces = [] 93 | stack_trace = [] 94 | stack_samples = [] 95 | 96 | for line in input_text: 97 | if line[0] == '#': 98 | continue 99 | if line[0] == '\n': 100 | if not stack_trace == []: 101 | stack_traces.append(stack_trace) 102 | stack_trace = [] 103 | continue 104 | if line[0] == '\t': 105 | stack_trace.append(line.strip()) 106 | continue 107 | 108 | for st in stack_traces: 109 | count = stack_traces.count(st) + 1 110 | st.reverse() 111 | st = [strip_func(x) for x in st] 112 | stack_sample = { 113 | 'stack_trace' : st, 114 | 'count' : count 115 | } 116 | if not st in [x['stack_trace'] for x in stack_samples]: 117 | stack_samples.append(stack_sample) 118 | 119 | root = { 120 | 'name' : 'All', 121 | 'children' : [] 122 | } 123 | 124 | for ss in stack_samples: 125 | dict_data = stack_sample_to_dict(ss) 126 | dict_data = add_root(dict_data) 127 | root = merge_dict(root, dict_data) 128 | 129 | return "var trace_json = " + str(root) 130 | 131 | if __name__ == '__main__': 132 | output = main() 133 | print output 134 | -------------------------------------------------------------------------------- /img/screen_seq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Etsukata/d3js_trace/f50e45601488798359f7d5779ebfd428eb4d4a80/img/screen_seq.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Sequences sunburst 6 | 7 | 9 | 10 | 11 | 12 |
13 |
14 |
15 | 19 |
20 |
21 | 25 | 26 | 27 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /sequences.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: 'Open Sans', sans-serif; 3 | font-size: 12px; 4 | font-weight: 400; 5 | background-color: #fff; 6 | width: 960px; 7 | height: 700px; 8 | margin-top: 10px; 9 | } 10 | 11 | #main { 12 | float: left; 13 | width: 750px; 14 | } 15 | 16 | #sidebar { 17 | float: right; 18 | width: 100px; 19 | } 20 | 21 | #sequence { 22 | width: 600px; 23 | height: 70px; 24 | } 25 | 26 | #legend { 27 | padding: 10px 0 0 3px; 28 | } 29 | 30 | #sequence text, #legend text { 31 | font-weight: 600; 32 | fill: #fff; 33 | } 34 | 35 | #chart { 36 | position: relative; 37 | } 38 | 39 | #chart path { 40 | stroke: #fff; 41 | } 42 | 43 | #explanation { 44 | position: absolute; 45 | top: 320px; 46 | left: 415px; 47 | width: 140px; 48 | text-align: center; 49 | color: #666; 50 | z-index: -1; 51 | } 52 | 53 | #percentage { 54 | font-size: 2.5em; 55 | } 56 | -------------------------------------------------------------------------------- /sequences.js: -------------------------------------------------------------------------------- 1 | // Dimensions of sunburst. 2 | var width = 960; 3 | var height = 700; 4 | var radius = Math.min(width, height) / 2; 5 | 6 | var x = d3.scale.linear() 7 | .range([0, 2 * Math.PI]); 8 | 9 | var y = d3.scale.sqrt() 10 | .range([0, radius]); 11 | 12 | // Breadcrumb dimensions: width, height, spacing, width of tip/tail. 13 | var b = { 14 | w: 75, h: 30, s: 3, t: 10 15 | }; 16 | 17 | var path ={}; 18 | var nodes = {}; 19 | 20 | // Mapping of step names to colors. 21 | var colors = { 22 | "home": "#5687d1", 23 | "product": "#7b615c", 24 | "search": "#de783b", 25 | "account": "#6ab975", 26 | "other": "#a173d1", 27 | "end": "#bbbbbb" 28 | }; 29 | 30 | // Total size of all segments; we set this later, after loading the data. 31 | var totalSize = 0; 32 | 33 | var svg = d3.select("#chart").append("svg:svg") 34 | .attr("width", width) 35 | .attr("height", height) 36 | .append("svg:g") 37 | .attr("id", "container") 38 | .attr("transform", "translate(" + width / 2 + "," + height / 2 + ")"); 39 | 40 | var partition = d3.layout.partition() 41 | .size([2 * Math.PI, radius * radius]) 42 | .value(function(d) { return d.size; }); 43 | 44 | var arc = d3.svg.arc() 45 | .startAngle(function(d) { return d.x; }) 46 | .endAngle(function(d) { return d.x + d.dx; }) 47 | .innerRadius(function(d) { return Math.sqrt(d.y); }) 48 | .outerRadius(function(d) { return Math.sqrt(d.y + d.dy); }); 49 | 50 | var root = trace_json; 51 | initializePage(); 52 | createVisualization(root); 53 | 54 | function initializePage() { 55 | 56 | // Basic setup of page elements. 57 | initializeBreadcrumbTrail(); 58 | drawLegend(); 59 | d3.select("#togglelegend").on("click", toggleLegend); 60 | 61 | // Bounding circle underneath the sunburst, to make it easier to detect 62 | // when the mouse leaves the parent g. 63 | svg.append("svg:circle") 64 | .attr("r", radius) 65 | .style("opacity", 0); 66 | } 67 | 68 | // Main function to draw and set up the visualization, once we have the data. 69 | function createVisualization(json) { 70 | 71 | // For efficiency, filter nodes to keep only those large enough to see. 72 | nodes = partition.nodes(root) 73 | .filter(function(d) { 74 | return (d.dx > 0.005); // 0.005 radians = 0.29 degrees 75 | }); 76 | 77 | //var path = svg.data([json]).selectAll("path") 78 | path = svg.selectAll("path") 79 | .data(nodes) 80 | .enter().append("svg:path") 81 | .attr("display", function(d) { return d.depth ? null : "none"; }) 82 | .attr("d", arc) 83 | .attr("fill-rule", "evenodd") 84 | .style("fill", function(d) { return colors[d.name]; }) 85 | .style("opacity", 1) 86 | .on("mouseover", mouseover) 87 | .on("click", click); 88 | 89 | // Add the mouseleave handler to the bounding circle. 90 | d3.select("#container").on("mouseleave", mouseleave); 91 | 92 | // Get total size of the tree = value of root node from partition. 93 | totalSize = path.node().__data__.value; 94 | }; 95 | 96 | function click(d) { 97 | 98 | console.log(d); 99 | } 100 | 101 | // Fade all but the current sequence, and show it in the breadcrumb trail. 102 | function mouseover(d) { 103 | 104 | var percentage = (100 * d.value / totalSize).toPrecision(3); 105 | var percentageString = percentage + "%"; 106 | if (percentage < 0.1) { 107 | percentageString = "< 0.1%"; 108 | } 109 | 110 | d3.select("#percentage") 111 | .text(percentageString); 112 | 113 | d3.select("#funcname") 114 | .text(d.name); 115 | 116 | d3.select("#explanation") 117 | .style("visibility", ""); 118 | 119 | var sequenceArray = getAncestors(d); 120 | updateBreadcrumbs(sequenceArray, percentageString); 121 | 122 | // Fade all the segments. 123 | d3.selectAll("path") 124 | .style("opacity", 0.3); 125 | 126 | // Then highlight only those that are an ancestor of the current segment. 127 | svg.selectAll("path") 128 | .filter(function(node) { 129 | return (sequenceArray.indexOf(node) >= 0); 130 | }) 131 | .style("opacity", 1); 132 | } 133 | 134 | // Restore everything to full opacity when moving off the visualization. 135 | function mouseleave(d) { 136 | 137 | // Hide the breadcrumb trail 138 | d3.select("#trail") 139 | .style("visibility", "hidden"); 140 | 141 | // Deactivate all segments during transition. 142 | d3.selectAll("path").on("mouseover", null); 143 | 144 | // Transition each segment to full opacity and then reactivate it. 145 | d3.selectAll("path") 146 | .transition() 147 | .duration(1000) 148 | .style("opacity", 1) 149 | .each("end", function() { 150 | d3.select(this).on("mouseover", mouseover); 151 | }); 152 | 153 | d3.select("#explanation") 154 | .transition() 155 | .duration(1000) 156 | .style("visibility", "hidden"); 157 | } 158 | 159 | // Given a node in a partition layout, return an array of all of its ancestor 160 | // nodes, highest first, but excluding the root. 161 | function getAncestors(node) { 162 | var path = []; 163 | var current = node; 164 | while (current.parent) { 165 | path.unshift(current); 166 | current = current.parent; 167 | } 168 | return path; 169 | } 170 | 171 | function initializeBreadcrumbTrail() { 172 | // Add the svg area. 173 | var trail = d3.select("#sequence").append("svg:svg") 174 | .attr("width", width) 175 | .attr("height", 50) 176 | .attr("id", "trail"); 177 | // Add the label at the end, for the percentage. 178 | trail.append("svg:text") 179 | .attr("id", "endlabel") 180 | .style("fill", "#000"); 181 | } 182 | 183 | // Generate a string that describes the points of a breadcrumb polygon. 184 | function breadcrumbPoints(d, i) { 185 | var points = []; 186 | points.push("0,0"); 187 | points.push(b.w + ",0"); 188 | points.push(b.w + b.t + "," + (b.h / 2)); 189 | points.push(b.w + "," + b.h); 190 | points.push("0," + b.h); 191 | if (i > 0) { // Leftmost breadcrumb; don't include 6th vertex. 192 | points.push(b.t + "," + (b.h / 2)); 193 | } 194 | return points.join(" "); 195 | } 196 | 197 | // Update the breadcrumb trail to show the current sequence and percentage. 198 | function updateBreadcrumbs(nodeArray, percentageString) { 199 | 200 | // Data join; key function combines name and depth (= position in sequence). 201 | var g = d3.select("#trail") 202 | .selectAll("g") 203 | .data(nodeArray, function(d) { return d.name + d.depth; }); 204 | 205 | // Add breadcrumb and label for entering nodes. 206 | var entering = g.enter().append("svg:g"); 207 | 208 | entering.append("svg:polygon") 209 | .attr("points", breadcrumbPoints) 210 | .style("fill", function(d) { return colors[d.name]; }); 211 | 212 | entering.append("svg:text") 213 | .attr("x", (b.w + b.t) / 2) 214 | .attr("y", b.h / 2) 215 | .attr("dy", "0.35em") 216 | .attr("text-anchor", "middle") 217 | .text(function(d) { 218 | var str = d.name; 219 | if (str.length > 10) { 220 | str = str.substr(0, 8) + "..."; 221 | } 222 | return str; 223 | }); 224 | 225 | // Set position for entering and updating nodes. 226 | g.attr("transform", function(d, i) { 227 | return "translate(" + i * (b.w + b.s) + ", 0)"; 228 | }); 229 | 230 | // Remove exiting nodes. 231 | g.exit().remove(); 232 | 233 | // Now move and update the percentage at the end. 234 | d3.select("#trail").select("#endlabel") 235 | .attr("x", (nodeArray.length + 0.5) * (b.w + b.s)) 236 | .attr("y", b.h / 2) 237 | .attr("dy", "0.35em") 238 | .attr("text-anchor", "middle") 239 | .text(percentageString); 240 | 241 | // Make the breadcrumb trail visible, if it's hidden. 242 | d3.select("#trail") 243 | .style("visibility", ""); 244 | 245 | } 246 | 247 | function drawLegend() { 248 | 249 | // Dimensions of legend item: width, height, spacing, radius of rounded rect. 250 | var li = { 251 | w: 75, h: 30, s: 3, r: 3 252 | }; 253 | 254 | var legend = d3.select("#legend").append("svg:svg") 255 | .attr("width", li.w) 256 | .attr("height", d3.keys(colors).length * (li.h + li.s)); 257 | 258 | var g = legend.selectAll("g") 259 | .data(d3.entries(colors)) 260 | .enter().append("svg:g") 261 | .attr("transform", function(d, i) { 262 | return "translate(0," + i * (li.h + li.s) + ")"; 263 | }); 264 | 265 | g.append("svg:rect") 266 | .attr("rx", li.r) 267 | .attr("ry", li.r) 268 | .attr("width", li.w) 269 | .attr("height", li.h) 270 | .style("fill", function(d) { return d.value; }); 271 | 272 | g.append("svg:text") 273 | .attr("x", li.w / 2) 274 | .attr("y", li.h / 2) 275 | .attr("dy", "0.35em") 276 | .attr("text-anchor", "middle") 277 | .text(function(d) { return d.key; }); 278 | } 279 | 280 | function toggleLegend() { 281 | var legend = d3.select("#legend"); 282 | if (legend.style("visibility") == "hidden") { 283 | legend.style("visibility", ""); 284 | } else { 285 | legend.style("visibility", "hidden"); 286 | } 287 | } 288 | -------------------------------------------------------------------------------- /tests/test.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | ''' 3 | Just run test to cofirm d3trace commannd output is O.K. 4 | 5 | usage: 6 | # ./test.py 7 | 8 | ''' 9 | 10 | import unittest 11 | import commands 12 | 13 | class TestD3traceFunctions(unittest.TestCase): 14 | 15 | def setUp(self): 16 | print 'setup' 17 | 18 | def test1(self): 19 | expected = open('test1_expected.js').read() 20 | ret = commands.getoutput('cat test1.data | ../d3trace.py') 21 | 22 | self.assertEqual(ret, expected.rstrip()) 23 | 24 | if __name__ == '__main__': 25 | unittest.main() 26 | -------------------------------------------------------------------------------- /tests/test1_expected.js: -------------------------------------------------------------------------------- 1 | var trace_json = {'name': 'All', 'children': [{'name': 'x86_64_start_kernel', 'children': [{'name': 'x86_64_start_reservations', 'children': [{'name': 'start_kernel', 'children': [{'name': 'rest_init', 'children': [{'name': 'cpu_startup_entry', 'children': [{'name': 'arch_cpu_idle', 'children': [{'name': 'cpuidle_idle_call', 'children': [{'name': 'call_function_single_interrupt', 'children': [{'name': 'smp_call_function_single_interrupt', 'children': [{'name': 'generic_smp_call_function_single_interrupt', 'children': [{'name': 'remote_function', 'children': [{'name': '__perf_event_enable', 'children': [{'name': 'group_sched_in', 'children': [{'name': 'x86_pmu_commit_txn', 'children': [{'name': 'perf_pmu_enable', 'children': [{'name': 'x86_pmu_enable', 'children': [{'name': 'intel_pmu_enable_all', 'children': [{'name': 'native_write_msr_safe', 'size': 7}]}]}]}]}]}]}]}]}, {'name': 'irq_exit', 'children': [{'name': 'tick_nohz_irq_exit', 'children': [{'name': '__tick_nohz_idle_enter', 'children': [{'name': 'hrtimer_start', 'children': [{'name': '__hrtimer_start_range_ns', 'children': [{'name': 'enqueue_hrtimer', 'children': [{'name': 'timerqueue_add', 'size': 2}]}]}]}]}]}]}]}]}, {'name': 'cpuidle_enter_state', 'children': [{'name': 'intel_idle', 'size': 26}, {'name': 'read_tsc', 'size': 2}, {'name': '', 'size': 2}]}, {'name': 'ret_from_intr', 'children': [{'name': 'do_IRQ', 'children': [{'name': 'irq_exit', 'children': [{'name': 'tick_nohz_irq_exit', 'children': [{'name': '__tick_nohz_idle_enter', 'children': [{'name': 'hrtimer_start', 'children': [{'name': '__hrtimer_start_range_ns', 'children': [{'name': '__remove_hrtimer', 'children': [{'name': 'timerqueue_del', 'children': [{'name': 'rb_next', 'size': 2}]}]}, {'name': 'lock_hrtimer_base.isra.19', 'size': 2}]}]}, {'name': 'get_next_timer_interrupt', 'children': [{'name': 'ftrace_caller', 'size': 2}]}, {'name': '__hrtimer_start_range_ns', 'size': 2}]}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}]}, {'name': 'handle_irq', 'children': [{'name': 'handle_edge_irq', 'children': [{'name': 'handle_irq_event', 'children': [{'name': 'handle_irq_event_percpu', 'children': [{'name': 'ironlake_irq_handler(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'children': [{'name': 'drm_handle_vblank(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/drm.ko)', 'children': [{'name': 'drm_get_last_vbltimestamp(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/drm.ko)', 'children': [{'name': 'i915_get_vblank_timestamp(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'children': [{'name': 'drm_calc_vbltimestamp_from_scanoutpos(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/drm.ko)', 'children': [{'name': 'ftrace_caller', 'size': 2}]}]}]}]}, {'name': '', 'size': 3}]}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}, {'name': '', 'size': 2}]}, {'name': 'note_interrupt', 'size': 2}]}]}]}, {'name': 'ftrace_caller', 'size': 2}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}, {'name': 'irq_enter', 'children': [{'name': 'tick_check_idle', 'children': [{'name': 'tick_do_update_jiffies64', 'children': [{'name': 'do_timer', 'children': [{'name': 'ftrace_caller', 'size': 2}, {'name': 'timekeeping_update.constprop.8', 'children': [{'name': 'update_vsyscall', 'size': 2}]}]}]}, {'name': 'ktime_get', 'children': [{'name': 'read_tsc', 'children': [{'name': 'native_read_tsc', 'size': 2}]}]}, {'name': '', 'size': 2}]}]}]}, {'name': 'ftrace_caller', 'size': 2}]}, {'name': 'apic_timer_interrupt', 'children': [{'name': 'smp_apic_timer_interrupt', 'children': [{'name': 'local_apic_timer_interrupt', 'children': [{'name': 'hrtimer_interrupt', 'children': [{'name': '__run_hrtimer', 'children': [{'name': '__remove_hrtimer', 'size': 2}, {'name': 'hrtimer_wakeup', 'children': [{'name': 'wake_up_process', 'children': [{'name': 'try_to_wake_up', 'children': [{'name': 'select_task_rq_fair', 'size': 2}]}]}]}]}, {'name': '', 'size': 2}]}]}, {'name': 'irq_exit', 'children': [{'name': '__do_softirq', 'children': [{'name': 'run_rebalance_domains', 'children': [{'name': 'rebalance_domains', 'children': [{'name': 'update_blocked_averages', 'children': [{'name': 'update_cfs_rq_blocked_load', 'size': 2}]}]}]}, {'name': 'ftrace_caller', 'size': 2}]}]}, {'name': 'ftrace_caller', 'size': 2}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}, {'name': '', 'size': 2}]}, {'name': 'ftrace_caller', 'size': 2}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 3}]}, {'name': 'stack_trace_call', 'size': 2}, {'name': 'reschedule_interrupt', 'size': 2}]}, {'name': 'ftrace_caller', 'size': 2}]}, {'name': 'tick_nohz_idle_exit', 'children': [{'name': 'hrtimer_start_range_ns', 'children': [{'name': '__hrtimer_start_range_ns', 'children': [{'name': 'enqueue_hrtimer', 'children': [{'name': 'timerqueue_add', 'size': 2}]}]}]}, {'name': 'account_idle_ticks', 'children': [{'name': 'ftrace_call', 'size': 2}, {'name': 'irqtime_account_process_tick.isra.2', 'size': 2}]}]}, {'name': 'schedule_preempt_disabled', 'children': [{'name': 'ftrace_caller', 'size': 2}, {'name': '__schedule', 'size': 2}]}, {'name': 'tick_nohz_idle_enter', 'children': [{'name': '__tick_nohz_idle_enter', 'children': [{'name': 'hrtimer_start', 'children': [{'name': '__hrtimer_start_range_ns', 'children': [{'name': '__remove_hrtimer', 'children': [{'name': 'hrtimer_force_reprogram', 'children': [{'name': 'tick_program_event', 'children': [{'name': 'clockevents_program_event', 'size': 2}]}]}]}]}]}]}]}, {'name': 'hrtimer_forward', 'size': 2}]}, {'name': 'ftrace_caller', 'size': 2}]}]}]}]}, {'name': '__libc_start_main(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'main(/usr/bin/perf)', 'children': [{'name': 'run_builtin(/usr/bin/perf)', 'children': [{'name': 'cmd_record(/usr/bin/perf)', 'children': [{'name': '__GI___ioctl(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_ioctl', 'children': [{'name': 'do_vfs_ioctl', 'children': [{'name': 'perf_ioctl', 'children': [{'name': 'perf_event_for_each_child', 'children': [{'name': 'perf_event_enable', 'children': [{'name': 'cpu_function_call', 'children': [{'name': 'smp_call_function_single', 'children': [{'name': 'remote_function', 'children': [{'name': '__perf_event_enable', 'children': [{'name': 'group_sched_in', 'children': [{'name': 'x86_pmu_commit_txn', 'children': [{'name': 'perf_pmu_enable', 'children': [{'name': 'x86_pmu_enable', 'children': [{'name': 'intel_pmu_enable_all', 'children': [{'name': 'native_write_msr_safe', 'size': 6}]}]}]}]}]}]}]}, {'name': 'generic_exec_single', 'size': 2}]}]}]}, {'name': '', 'size': 2}, {'name': 'perf_event_disable', 'children': [{'name': 'cpu_function_call', 'children': [{'name': 'smp_call_function_single', 'children': [{'name': 'generic_exec_single', 'size': 2}]}]}]}]}]}]}]}]}]}, {'name': 'perf_evlist__prepare_workload(/usr/bin/perf)', 'children': [{'name': '__strchr_sse2(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'page_fault', 'children': [{'name': 'do_page_fault', 'children': [{'name': '__do_page_fault', 'children': [{'name': 'handle_mm_fault', 'children': [{'name': 'handle_pte_fault', 'children': [{'name': '__do_fault', 'children': [{'name': 'filemap_fault', 'children': [{'name': 'find_get_page', 'children': [{'name': 'radix_tree_lookup_slot', 'children': [{'name': 'radix_tree_lookup_element', 'size': 2}]}]}]}]}]}]}]}]}]}]}, {'name': '__execve(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'stub_execve', 'children': [{'name': 'SyS_execve', 'children': [{'name': 'do_execve_common.isra.23', 'children': [{'name': 'prepare_binprm', 'children': [{'name': 'security_bprm_set_creds', 'children': [{'name': 'selinux_bprm_set_creds', 'children': [{'name': 'security_transition_sid', 'children': [{'name': 'security_compute_sid', 'children': [{'name': 'security_compute_sid.part.14', 'children': [{'name': 'policydb_context_isvalid', 'children': [{'name': 'mls_context_isvalid', 'children': [{'name': 'ebitmap_contains', 'size': 2}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}, {'name': 'start_secondary', 'children': [{'name': 'cpu_startup_entry', 'children': [{'name': 'arch_cpu_idle', 'children': [{'name': 'cpuidle_idle_call', 'children': [{'name': 'call_function_single_interrupt', 'children': [{'name': 'smp_call_function_single_interrupt', 'children': [{'name': 'generic_smp_call_function_single_interrupt', 'children': [{'name': 'remote_function', 'children': [{'name': '__perf_event_enable', 'children': [{'name': 'group_sched_in', 'children': [{'name': 'x86_pmu_commit_txn', 'children': [{'name': 'perf_pmu_enable', 'children': [{'name': 'x86_pmu_enable', 'children': [{'name': 'intel_pmu_enable_all', 'children': [{'name': 'native_write_msr_safe', 'size': 12}]}]}]}]}]}]}]}]}, {'name': '', 'size': 2}]}]}, {'name': 'cpuidle_enter_state', 'children': [{'name': 'intel_idle', 'size': 32}, {'name': 'read_tsc', 'size': 2}, {'name': '', 'size': 2}]}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}, {'name': 'apic_timer_interrupt', 'children': [{'name': 'smp_apic_timer_interrupt', 'children': [{'name': 'irq_enter', 'children': [{'name': 'tick_check_idle', 'children': [{'name': 'tick_do_update_jiffies64', 'children': [{'name': 'do_timer', 'children': [{'name': 'raw_notifier_call_chain', 'size': 2}, {'name': '', 'size': 2}]}]}, {'name': 'tick_nohz_stop_idle', 'children': [{'name': 'nr_iowait_cpu', 'size': 2}]}]}]}, {'name': 'local_apic_timer_interrupt', 'children': [{'name': 'hrtimer_interrupt', 'children': [{'name': 'tick_program_event', 'children': [{'name': 'clockevents_program_event', 'size': 2}]}, {'name': '__run_hrtimer', 'children': [{'name': 'hrtimer_wakeup', 'children': [{'name': 'wake_up_process', 'children': [{'name': 'try_to_wake_up', 'children': [{'name': 'ttwu_do_activate.constprop.87', 'children': [{'name': 'activate_task', 'children': [{'name': 'enqueue_task_fair', 'size': 2}, {'name': 'enqueue_task', 'children': [{'name': 'enqueue_task_fair', 'children': [{'name': 'enqueue_entity', 'size': 2}]}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}]}]}]}]}, {'name': 'ftrace_caller', 'size': 2}]}, {'name': '__remove_hrtimer', 'children': [{'name': 'timerqueue_del', 'children': [{'name': 'rb_next', 'size': 2}]}]}]}]}]}, {'name': 'irq_exit', 'children': [{'name': '__do_softirq', 'children': [{'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}, {'name': 'run_timer_softirq', 'children': [{'name': 'call_timer_fn', 'children': [{'name': 'intel_pstate_timer_func', 'children': [{'name': 'intel_pstate_set_pstate', 'children': [{'name': 'native_write_msr_safe', 'size': 2}]}]}, {'name': 'ieee80211_frame_duration(/lib/modules/3.11.4-201.fc19.x86_64/kernel/net/mac80211/mac80211.ko)', 'children': [{'name': 'led_blink_set', 'children': [{'name': 'led_blink_setup', 'children': [{'name': 'iwl_led_blink_set(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/dvm/iwldvm.ko)', 'children': [{'name': 'iwl_trans_pcie_read32(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko)', 'size': 2}]}]}]}]}, {'name': 'delayed_work_timer_fn', 'children': [{'name': '__queue_work', 'children': [{'name': 'insert_work', 'children': [{'name': 'wake_up_worker', 'children': [{'name': 'wake_up_process', 'children': [{'name': 'try_to_wake_up', 'children': [{'name': 'ttwu_do_activate.constprop.87', 'children': [{'name': 'activate_task', 'children': [{'name': 'enqueue_task', 'children': [{'name': 'enqueue_task_fair', 'size': 2}]}]}]}]}]}]}]}]}]}]}]}]}]}]}, {'name': 'exit_idle', 'size': 2}, {'name': '', 'size': 2}]}, {'name': 'ret_from_intr', 'children': [{'name': 'do_IRQ', 'children': [{'name': 'handle_irq', 'children': [{'name': 'handle_edge_irq', 'children': [{'name': 'handle_irq_event', 'children': [{'name': 'handle_irq_event_percpu', 'children': [{'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}, {'name': 'iwl_pcie_isr_ict(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko)', 'children': [{'name': 'iwl_trans_pcie_write32(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko)', 'size': 2}]}]}]}]}]}, {'name': 'irq_exit', 'children': [{'name': '__do_softirq', 'children': [{'name': 'blk_done_softirq', 'children': [{'name': 'scsi_softirq_done', 'children': [{'name': 'scsi_finish_command', 'children': [{'name': 'scsi_io_completion', 'children': [{'name': 'blk_end_request', 'children': [{'name': 'blk_end_bidi_request', 'children': [{'name': 'blk_update_bidi_request', 'children': [{'name': 'blk_update_request', 'children': [{'name': 'bio_endio', 'children': [{'name': 'bio_copy_kern_endio', 'children': [{'name': '__free_pages', 'children': [{'name': 'free_hot_cold_page', 'children': [{'name': 'mem_cgroup_bad_page_check', 'size': 2}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}, {'name': 'menu_select', 'size': 2}, {'name': 'ftrace_caller', 'size': 2}, {'name': '', 'size': 2}]}, {'name': 'ftrace_caller', 'size': 2}]}, {'name': 'schedule_preempt_disabled', 'children': [{'name': '__schedule', 'children': [{'name': 'post_schedule_idle', 'children': [{'name': 'idle_enter_fair', 'size': 2}]}, {'name': '', 'size': 2}]}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}, {'name': 'tick_nohz_idle_enter', 'children': [{'name': '__tick_nohz_idle_enter', 'children': [{'name': 'get_next_timer_interrupt', 'children': [{'name': '_raw_spin_lock', 'size': 2}, {'name': 'hrtimer_get_next_event', 'children': [{'name': '_raw_spin_unlock_irqrestore', 'size': 2}]}]}, {'name': 'hrtimer_start', 'children': [{'name': '__hrtimer_start_range_ns', 'children': [{'name': 'enqueue_hrtimer', 'children': [{'name': 'timerqueue_add', 'size': 2}]}]}]}, {'name': '', 'size': 2}]}]}, {'name': 'rcu_idle_exit', 'children': [{'name': 'rcu_eqs_exit_common.isra.38', 'size': 2}]}, {'name': 'account_idle_ticks', 'size': 3}, {'name': 'tick_nohz_idle_exit', 'children': [{'name': 'account_idle_ticks', 'children': [{'name': 'irqtime_account_process_tick.isra.2', 'size': 3}]}, {'name': '', 'size': 2}, {'name': 'hrtimer_start_range_ns', 'children': [{'name': '__hrtimer_start_range_ns', 'size': 2}]}, {'name': 'hrtimer_cancel', 'children': [{'name': 'hrtimer_try_to_cancel', 'size': 2}]}, {'name': 'hrtimer_forward', 'size': 2}]}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}, {'name': 'ftrace_caller', 'size': 2}]}]}, {'name': '__execve(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'stub_execve', 'children': [{'name': 'SyS_execve', 'children': [{'name': 'do_execve_common.isra.23', 'children': [{'name': 'search_binary_handler', 'children': [{'name': 'load_elf_binary', 'children': [{'name': 'flush_old_exec', 'children': [{'name': 'mmput', 'children': [{'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}]}]}]}]}]}]}]}, {'name': '[unknown](/usr/lib64/ld-2.17.so)', 'children': [{'name': '_dl_map_object(/usr/lib64/ld-2.17.so)', 'children': [{'name': 'open64(/usr/lib64/ld-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_open', 'children': [{'name': 'do_sys_open', 'children': [{'name': 'do_filp_open', 'children': [{'name': 'path_openat', 'children': [{'name': 'do_last', 'children': [{'name': 'may_open', 'children': [{'name': 'inode_permission', 'children': [{'name': '__inode_permission', 'children': [{'name': 'security_inode_permission', 'children': [{'name': 'selinux_inode_permission', 'children': [{'name': 'avc_has_perm_noaudit', 'children': [{'name': 'avc_compute_av', 'children': [{'name': 'security_compute_av', 'children': [{'name': 'context_struct_compute_av', 'children': [{'name': 'cond_compute_av', 'children': [{'name': 'avtab_search_node', 'size': 2}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}, {'name': '[unknown]', 'children': [{'name': '[unknown]', 'children': [{'name': '__strrchr_sse42(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'stack_trace_call', 'size': 2}]}, {'name': '[unknown]', 'children': [{'name': 'pthread_cond_wait@@GLIBC_2.3.2(/usr/lib64/libpthread-2.17.so)', 'children': [{'name': 'tracesys', 'children': [{'name': 'SyS_futex', 'children': [{'name': 'do_futex', 'children': [{'name': 'futex_wait', 'children': [{'name': 'futex_wait_queue_me', 'children': [{'name': 'schedule', 'children': [{'name': '__schedule', 'children': [{'name': 'idle_balance', 'children': [{'name': 'load_balance', 'children': [{'name': 'find_busiest_group', 'children': [{'name': 'idle_cpu', 'size': 2}]}, {'name': 'walk_tg_tree_from', 'children': [{'name': 'tg_load_down', 'size': 2}]}]}]}]}]}]}]}]}]}]}]}, {'name': 'pthread_mutex_lock(/usr/lib64/libpthread-2.17.so)', 'size': 2}, {'name': 'g_type_check_instance_is_a(/usr/lib64/libgobject-2.0.so.0.3600.3)', 'size': 2}, {'name': 'g_hash_table_lookup(/usr/lib64/libglib-2.0.so.0.3600.3)', 'size': 2}, {'name': '[unknown](/usr/lib64/gnome-shell/libgnome-shell.so.#prelink#.bPwms6)', 'size': 2}, {'name': '[unknown]', 'children': [{'name': '[unknown](/usr/lib64/libclutter-1.0.so.0.1404.0.#prelink#.UJhRcF)', 'size': 2}, {'name': '[unknown](/usr/lib64/libgtk-3.so.0.800.5)', 'size': 2}, {'name': '[unknown](/usr/lib64/libmutter.so.0.0.0.#prelink#.zwTpfy)', 'size': 2}, {'name': '[unknown](/usr/lib64/libcairo.so.2.11200.14.#prelink#.SWVEq7)', 'size': 2}]}, {'name': 'g_type_check_instance_cast(/usr/lib64/libgobject-2.0.so.0.3600.3)', 'size': 2}, {'name': 'g_value_set_flags(/usr/lib64/libgobject-2.0.so.0.3600.3)', 'size': 2}, {'name': 'g_source_iter_next(/usr/lib64/libglib-2.0.so.0.3600.3)', 'size': 3}, {'name': '[unknown](/usr/lib64/libclutter-1.0.so.0.1404.0.#prelink#.UJhRcF)', 'size': 2}, {'name': 'g_signal_emit(/usr/lib64/libgobject-2.0.so.0.3600.3)', 'children': [{'name': 'g_closure_ref(/usr/lib64/libgobject-2.0.so.0.3600.3)', 'size': 2}]}, {'name': '__read_nocancel(/usr/lib64/libpthread-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_read', 'children': [{'name': 'vfs_read', 'children': [{'name': 'do_sync_read', 'children': [{'name': 'sock_aio_read', 'children': [{'name': 'sock_aio_read.part.7', 'children': [{'name': 'unix_stream_recvmsg', 'children': [{'name': 'skb_unlink', 'children': [{'name': '_raw_spin_unlock_irqrestore', 'size': 2}]}]}]}]}]}]}]}]}]}, {'name': '[unknown](/usr/lib64/libdbus-glib-1.so.2.2.2)', 'size': 2}]}, {'name': '[unknown](/opt/google/chrome/chrome)', 'size': 2}, {'name': '[unknown]([vdso])', 'size': 2}, {'name': 'std::string::assign(std::stringconst&)(/usr/lib64/libstdc++.so.6.0.18)', 'size': 2}, {'name': 'g_mutex_get_impl(/usr/lib64/libglib-2.0.so.0.3600.3)', 'size': 2}, {'name': 'syscall(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_epoll_wait', 'children': [{'name': 'ep_poll', 'children': [{'name': 'ep_scan_ready_list.isra.8', 'children': [{'name': 'ftrace_call', 'children': [{'name': 'apic_timer_interrupt', 'children': [{'name': 'smp_apic_timer_interrupt', 'children': [{'name': 'local_apic_timer_interrupt', 'children': [{'name': 'hrtimer_interrupt', 'children': [{'name': '__run_hrtimer', 'children': [{'name': 'tick_sched_timer', 'children': [{'name': 'tick_sched_handle.isra.15', 'children': [{'name': 'update_process_times', 'children': [{'name': 'run_posix_cpu_timers', 'size': 2}]}]}]}]}]}]}]}]}]}, {'name': 'ep_send_events_proc', 'size': 2}]}, {'name': 'schedule_hrtimeout_range', 'children': [{'name': 'schedule_hrtimeout_range_clock', 'children': [{'name': 'schedule', 'children': [{'name': '__schedule', 'children': [{'name': 'idle_balance', 'children': [{'name': 'load_balance', 'children': [{'name': 'find_busiest_group', 'children': [{'name': 'update_sd_lb_stats', 'children': [{'name': 'group_balance_cpu', 'children': [{'name': 'cpumask_next_and', 'children': [{'name': 'find_next_bit', 'size': 2}]}]}, {'name': '', 'size': 2}]}, {'name': 'ftrace_call', 'size': 2}, {'name': '', 'size': 2}]}]}, {'name': 'update_blocked_averages', 'size': 2}]}, {'name': '', 'size': 2}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}, {'name': 'deactivate_task', 'children': [{'name': 'dequeue_task', 'children': [{'name': 'dequeue_task_fair', 'children': [{'name': 'update_curr', 'size': 2}]}]}]}]}]}]}, {'name': '', 'size': 2}]}]}, {'name': 'schedule_hrtimeout_range', 'size': 2}]}]}, {'name': 'sysret_audit', 'children': [{'name': '__audit_syscall_exit', 'children': [{'name': 'mntput', 'size': 2}]}]}, {'name': '', 'size': 2}]}, {'name': '[unknown](/usr/lib64/libgjs.so.0.0.0.#prelink#.EwXjLp)', 'size': 2}, {'name': '__lll_unlock_wake(/usr/lib64/libpthread-2.17.so)', 'children': [{'name': 'tracesys', 'children': [{'name': 'syscall_trace_enter', 'children': [{'name': '__secure_computing', 'children': [{'name': 'seccomp_bpf_load', 'size': 2}]}]}]}, {'name': '', 'size': 2}]}, {'name': 'xf86ScreenToScrn(/usr/bin/Xorg)', 'size': 2}, {'name': '_L_unlock_701(/usr/lib64/libpthread-2.17.so)', 'size': 2}]}, {'name': 'pthread_cond_timedwait@@GLIBC_2.3.2(/usr/lib64/libpthread-2.17.so)', 'children': [{'name': 'tracesys', 'children': [{'name': 'SyS_futex', 'children': [{'name': 'do_futex', 'children': [{'name': 'futex_wait', 'children': [{'name': 'futex_wait_queue_me', 'children': [{'name': 'schedule', 'children': [{'name': '__schedule', 'children': [{'name': 'idle_balance', 'children': [{'name': 'load_balance', 'children': [{'name': 'find_busiest_group', 'children': [{'name': 'update_sd_lb_stats', 'size': 2}, {'name': 'cpumask_next_and', 'size': 2}]}]}, {'name': 'update_blocked_averages', 'size': 2}]}, {'name': 'deactivate_task', 'children': [{'name': 'dequeue_task', 'children': [{'name': 'dequeue_task_fair', 'children': [{'name': 'dequeue_entity', 'children': [{'name': 'update_cfs_shares', 'size': 2}]}, {'name': '', 'size': 2}, {'name': 'ftrace_caller', 'size': 2}]}]}]}]}, {'name': '', 'size': 2}]}, {'name': 'hrtimer_start_range_ns', 'children': [{'name': '__hrtimer_start_range_ns', 'children': [{'name': 'lock_hrtimer_base.isra.19', 'size': 2}]}]}]}, {'name': 'hrtimer_init', 'size': 2}]}]}]}]}, {'name': '__switch_to', 'size': 2}]}, {'name': '[unknown](/opt/google/chrome/chrome)', 'children': [{'name': '[unknown]', 'children': [{'name': '[unknown](/usr/lib64/libpthread-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_write', 'children': [{'name': 'vfs_write', 'children': [{'name': 'do_sync_write', 'children': [{'name': 'pipe_write', 'children': [{'name': 'file_update_time', 'children': [{'name': '__mnt_want_write_file', 'children': [{'name': '__mnt_want_write', 'size': 2}]}, {'name': 'update_time', 'children': [{'name': '__mark_inode_dirty', 'size': 2}]}]}, {'name': '', 'size': 2}, {'name': '__wake_up_sync_key', 'children': [{'name': '__wake_up_common', 'children': [{'name': 'pollwake', 'children': [{'name': 'default_wake_function', 'children': [{'name': 'try_to_wake_up', 'children': [{'name': 'ttwu_do_activate.constprop.87', 'children': [{'name': 'ttwu_do_wakeup', 'children': [{'name': 'check_preempt_curr', 'children': [{'name': 'resched_task', 'children': [{'name': 'flat_send_IPI_mask', 'size': 2}]}]}]}]}]}]}]}]}]}, {'name': '_raw_spin_lock_irqsave', 'size': 2}]}, {'name': 'file_update_time', 'size': 2}]}, {'name': 'rw_verify_area', 'children': [{'name': 'security_file_permission', 'children': [{'name': 'selinux_file_permission', 'children': [{'name': 'file_has_perm', 'children': [{'name': 'inode_has_perm.isra.32.constprop.61', 'children': [{'name': 'avc_has_perm_flags', 'size': 2}, {'name': '', 'size': 2}]}]}]}, {'name': 'ftrace_caller', 'size': 2}, {'name': 'ftrace_call', 'size': 2}]}, {'name': '', 'size': 3}, {'name': 'ftrace_caller', 'size': 2}]}, {'name': '', 'size': 2}]}, {'name': 'fget_light', 'size': 2}]}]}, {'name': 'sysret_audit', 'children': [{'name': '__audit_syscall_exit', 'children': [{'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}]}]}, {'name': '[unknown](/opt/google/chrome/chrome)', 'size': 2}, {'name': '[unknown]', 'children': [{'name': '[unknown]', 'children': [{'name': '[unknown](/opt/google/chrome/chrome)', 'size': 2}]}]}, {'name': 'std::basic_string,std::allocator>::basic_string(std::stringconst&,unsignedlong,unsignedlong)(/usr/lib64/libstdc++.so.6.0.18)', 'size': 2}]}, {'name': '', 'size': 2}, {'name': '[unknown](/opt/google/chrome/chrome)', 'size': 2}, {'name': '[unknown]([vdso])', 'size': 2}]}, {'name': 'pthread_mutex_lock(/usr/lib64/libpthread-2.17.so)', 'size': 2}, {'name': 'pthread_getspecific(/usr/lib64/libpthread-2.17.so)', 'size': 2}, {'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/opt/google/chrome/chrome)', 'size': 2}]}, {'name': '__errno_location(/usr/lib64/libpthread-2.17.so)', 'size': 2}, {'name': '_int_free(/usr/lib64/libc-2.17.so)', 'size': 2}, {'name': '[unknown](/usr/lib64/libgtk-3.so.0.800.5)', 'size': 2}, {'name': '[unknown](/usr/lib64/libcairo.so.2.11200.14.#prelink#.SWVEq7)', 'size': 2}, {'name': 'g_list_last(/usr/lib64/libglib-2.0.so.0.3600.3)', 'size': 2}, {'name': '__libc_writev(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_writev', 'children': [{'name': 'vfs_writev', 'children': [{'name': 'do_readv_writev', 'children': [{'name': 'do_sync_readv_writev', 'children': [{'name': 'ftrace_caller', 'size': 2}, {'name': 'sock_aio_write', 'children': [{'name': 'unix_stream_sendmsg', 'children': [{'name': 'sock_def_readable', 'children': [{'name': '__wake_up_sync_key', 'children': [{'name': '__wake_up_common', 'children': [{'name': 'pollwake', 'children': [{'name': 'default_wake_function', 'children': [{'name': 'try_to_wake_up', 'children': [{'name': 'ttwu_do_activate.constprop.87', 'children': [{'name': 'ttwu_do_wakeup', 'children': [{'name': 'check_preempt_curr', 'children': [{'name': 'resched_task', 'children': [{'name': 'native_smp_send_reschedule', 'size': 2}]}]}]}]}]}]}]}]}]}]}]}]}]}]}, {'name': 'ftrace_caller', 'size': 2}]}]}]}]}, {'name': '__select(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_select', 'children': [{'name': 'core_sys_select', 'children': [{'name': 'do_select', 'children': [{'name': 'poll_schedule_timeout', 'children': [{'name': 'schedule_hrtimeout_range', 'children': [{'name': 'schedule_hrtimeout_range_clock', 'children': [{'name': 'schedule', 'children': [{'name': '__schedule', 'children': [{'name': 'perf_event_task_sched_out', 'size': 2}]}]}]}]}]}, {'name': 'sock_poll', 'children': [{'name': 'unix_poll', 'children': [{'name': '__pollwait', 'children': [{'name': 'add_wait_queue', 'size': 2}]}]}]}, {'name': 'poll_freewait', 'children': [{'name': 'remove_wait_queue', 'children': [{'name': '_raw_spin_lock_irqsave', 'size': 2}]}]}, {'name': 'ftrace_caller', 'size': 2}]}]}]}]}]}, {'name': '[unknown](/usr/lib64/dri/i965_dri.so)', 'size': 2}, {'name': '__GI___ioctl(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_ioctl', 'children': [{'name': 'do_vfs_ioctl', 'children': [{'name': 'drm_ioctl(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/drm.ko)', 'children': [{'name': 'i915_gem_set_domain_ioctl(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'children': [{'name': '__wait_seqno(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'children': [{'name': 'gen6_ring_get_irq(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'children': [{'name': 'gen6_gt_force_wake_get(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'children': [{'name': '__gen6_gt_force_wake_get(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'size': 2}]}]}]}]}, {'name': 'ftrace_caller', 'size': 2}, {'name': '', 'size': 2}, {'name': 'i915_gem_pwrite_ioctl(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'size': 2}, {'name': 'drm_gem_close_ioctl(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/drm.ko)', 'children': [{'name': 'drm_gem_handle_delete(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/drm.ko)', 'children': [{'name': 'drm_gem_object_free(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/drm.ko)', 'children': [{'name': 'i915_gem_free_object(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'children': [{'name': 'i915_gem_object_put_pages(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'children': [{'name': 'i915_gem_object_truncate(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'children': [{'name': 'shmem_truncate_range', 'children': [{'name': 'shmem_undo_range', 'children': [{'name': 'truncate_inode_page', 'children': [{'name': 'delete_from_page_cache', 'children': [{'name': 'mem_cgroup_uncharge_cache_page', 'children': [{'name': 'ftrace_caller', 'size': 2}, {'name': 'apic_timer_interrupt', 'children': [{'name': 'smp_apic_timer_interrupt', 'children': [{'name': 'local_apic_timer_interrupt', 'children': [{'name': 'hrtimer_interrupt', 'children': [{'name': '__run_hrtimer', 'children': [{'name': 'tick_sched_timer', 'children': [{'name': 'tick_sched_handle.isra.15', 'children': [{'name': 'update_process_times', 'children': [{'name': 'scheduler_tick', 'children': [{'name': 'task_tick_fair', 'children': [{'name': 'update_cfs_rq_blocked_load', 'size': 2}]}]}]}]}]}]}]}]}]}]}]}]}, {'name': 'ftrace_caller', 'size': 2}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}, {'name': '__pagevec_release', 'children': [{'name': 'release_pages', 'children': [{'name': 'free_hot_cold_page_list', 'children': [{'name': 'free_hot_cold_page', 'children': [{'name': 'free_pcppages_bulk', 'children': [{'name': 'bad_range', 'size': 2}, {'name': '', 'size': 2}]}, {'name': 'free_pages_prepare', 'children': [{'name': 'ftrace_call', 'size': 2}]}]}]}, {'name': '__mod_zone_page_state', 'size': 2}]}]}]}, {'name': 'ftrace_caller', 'size': 2}]}]}, {'name': 'i915_gem_object_put_pages_gtt(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'children': [{'name': 'put_page', 'size': 2}]}]}]}]}, {'name': '', 'size': 2}]}]}]}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}, {'name': 'fget_light', 'size': 2}]}]}]}, {'name': '__memcpy_ssse3_back(/usr/lib64/libc-2.17.so)', 'size': 2}, {'name': 'pthread_cond_broadcast@@GLIBC_2.3.2(/usr/lib64/libpthread-2.17.so)', 'children': [{'name': 'tracesys', 'children': [{'name': 'SyS_futex', 'children': [{'name': 'do_futex', 'children': [{'name': 'futex_requeue', 'children': [{'name': 'wake_futex', 'children': [{'name': 'wake_up_state', 'children': [{'name': 'try_to_wake_up', 'children': [{'name': 'select_task_rq_fair', 'children': [{'name': 'source_load', 'size': 2}]}]}]}]}]}]}]}]}]}, {'name': '[unknown](/usr/lib64/libpthread-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_read', 'children': [{'name': 'eventfd_read', 'size': 2}]}]}]}, {'name': '[unknown](/usr/lib64/libmozjs185.so.1.0.0)', 'size': 2}, {'name': 'g_type_check_class_is_a(/usr/lib64/libgobject-2.0.so.0.3600.3)', 'size': 2}, {'name': 'std::string::assign(charconst*,unsignedlong)(/usr/lib64/libstdc++.so.6.0.18)', 'size': 2}, {'name': 'realloc(/opt/google/chrome/chrome)', 'size': 2}, {'name': '__pthread_disable_asynccancel(/usr/lib64/libpthread-2.17.so)', 'size': 2}, {'name': '[unknown](/usr/bin/Xorg)', 'size': 2}, {'name': 'drm_intel_bo_busy(/usr/lib64/libdrm_intel.so.1.0.0)', 'size': 2}, {'name': '_mesa_DrawArrays@plt(/usr/lib64/libdricore9.2.0.so.1.0.0)', 'size': 2}, {'name': '[unknown](/usr/lib64/libcogl.so.12.1.1.#prelink#.PaW5DY)', 'children': [{'name': '[unknown]', 'children': [{'name': '[unknown](/usr/lib64/libcogl.so.12.1.1.#prelink#.PaW5DY)', 'size': 2}]}, {'name': '', 'size': 2}, {'name': '[unknown](/usr/lib64/libcogl.so.12.1.1.#prelink#.PaW5DY)', 'size': 2}]}, {'name': '[unknown](/usr/lib64/libstdc++.so.6.0.18)', 'size': 2}, {'name': '[unknown](/opt/google/chrome/PepperFlash/libpepflashplayer.so)', 'size': 2}, {'name': 'g_list_insert_before(/usr/lib64/libglib-2.0.so.0.3600.3)', 'children': [{'name': 'apic_timer_interrupt', 'children': [{'name': 'smp_apic_timer_interrupt', 'children': [{'name': 'local_apic_timer_interrupt', 'children': [{'name': 'hrtimer_interrupt', 'children': [{'name': '__run_hrtimer', 'children': [{'name': 'tick_sched_timer', 'children': [{'name': 'tick_sched_handle.isra.15', 'children': [{'name': 'rcu_check_callbacks', 'size': 2}]}]}]}]}]}]}]}]}, {'name': 'g_type_check_instance_is_a(/usr/lib64/libgobject-2.0.so.0.3600.3)', 'size': 2}, {'name': '__GI___setitimer(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_setitimer', 'children': [{'name': 'do_setitimer', 'children': [{'name': 'hrtimer_try_to_cancel', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}]}]}]}]}, {'name': 'ret_from_fork', 'children': [{'name': 'kthread', 'children': [{'name': 'hotkey_kthread(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/platform/x86/thinkpad_acpi.ko)', 'children': [{'name': 'msleep_interruptible', 'children': [{'name': 'schedule_timeout', 'children': [{'name': 'schedule', 'children': [{'name': 'pick_next_task_stop', 'size': 2}]}]}]}, {'name': 'hotkey_read_nvram(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/platform/x86/thinkpad_acpi.ko)', 'children': [{'name': 'nvram_read_byte', 'children': [{'name': 'rtc_cmos_read', 'size': 2}]}]}]}, {'name': 'worker_thread', 'children': [{'name': 'process_one_work', 'children': [{'name': 'ieee80211_iface_work(/lib/modules/3.11.4-201.fc19.x86_64/kernel/net/mac80211/mac80211.ko)', 'children': [{'name': 'ieee80211_clear_tx_pending(/lib/modules/3.11.4-201.fc19.x86_64/kernel/net/mac80211/mac80211.ko)', 'children': [{'name': 'ieee80211_rx_mgmt_beacon(/lib/modules/3.11.4-201.fc19.x86_64/kernel/net/mac80211/mac80211.ko)', 'children': [{'name': 'ieee80211_beacon_get_tim(/lib/modules/3.11.4-201.fc19.x86_64/kernel/net/mac80211/mac80211.ko)', 'children': [{'name': 'mod_timer', 'children': [{'name': 'find_last_bit', 'size': 2}]}]}]}]}]}, {'name': '_raw_spin_lock_irq', 'size': 2}, {'name': 'rtl_task(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/ethernet/realtek/r8169.ko)', 'children': [{'name': 'rtl_phy_work(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/ethernet/realtek/r8169.ko)', 'children': [{'name': 'rtl8169_xmii_reset_enable(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/ethernet/realtek/r8169.ko)', 'children': [{'name': 'r8169_mdio_read(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/ethernet/realtek/r8169.ko)', 'children': [{'name': 'rtl_loop_wait(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/ethernet/realtek/r8169.ko)', 'children': [{'name': 'rtl_udelay(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/ethernet/realtek/r8169.ko)', 'children': [{'name': '__udelay', 'children': [{'name': 'delay_tsc', 'children': [{'name': 'native_read_tsc', 'size': 2}]}]}]}]}]}]}]}]}]}, {'name': 'schedule', 'children': [{'name': '__schedule', 'children': [{'name': 'idle_balance', 'children': [{'name': 'load_balance', 'children': [{'name': 'find_busiest_group', 'children': [{'name': 'update_sd_lb_stats', 'size': 2}]}]}, {'name': 'update_blocked_averages', 'size': 2}, {'name': '__compute_runnable_contrib.part.49', 'size': 2}]}]}]}]}, {'name': 'irq_thread', 'children': [{'name': 'schedule', 'children': [{'name': '__schedule', 'children': [{'name': 'idle_balance', 'children': [{'name': 'load_balance', 'children': [{'name': 'find_busiest_group', 'children': [{'name': 'update_sd_lb_stats', 'size': 2}]}]}, {'name': 'update_blocked_averages', 'children': [{'name': 'update_cfs_rq_blocked_load', 'size': 2}]}]}]}]}, {'name': 'irq_thread_fn', 'children': [{'name': 'iwl_pcie_irq_handler(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko)', 'children': [{'name': 'iwl_pcie_rxq_restock(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko)', 'children': [{'name': '__list_del_entry', 'size': 2}, {'name': 'iwl_pcie_rxq_inc_wr_ptr(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko)', 'children': [{'name': 'iwl_write_direct32(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko)', 'children': [{'name': 'iwl_trans_pcie_release_nic_access(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko)', 'children': [{'name': '__iwl_trans_pcie_set_bits_mask(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko)', 'children': [{'name': 'iwl_trans_pcie_read32(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko)', 'size': 2}]}]}]}]}]}, {'name': 'iwl_rx_dispatch(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/dvm/iwldvm.ko)', 'children': [{'name': 'iwlagn_rx_reply_rx(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/dvm/iwldvm.ko)', 'children': [{'name': 'ieee80211_crypto_ccmp_decrypt(/lib/modules/3.11.4-201.fc19.x86_64/kernel/net/mac80211/mac80211.ko)', 'children': [{'name': 'ccmp_encrypt_skb.isra.8(/lib/modules/3.11.4-201.fc19.x86_64/kernel/net/mac80211/mac80211.ko)', 'size': 2}]}, {'name': 'ieee80211_crypto_aes_cmac_decrypt(/lib/modules/3.11.4-201.fc19.x86_64/kernel/net/mac80211/mac80211.ko)', 'children': [{'name': '__pskb_pull_tail', 'children': [{'name': 'put_page', 'size': 2}]}]}]}, {'name': '', 'size': 2}]}]}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}]}, {'name': 'rcu_gp_kthread', 'children': [{'name': 'schedule', 'children': [{'name': '__schedule', 'children': [{'name': 'idle_balance', 'children': [{'name': 'update_blocked_averages', 'size': 2}]}]}]}]}]}]}, {'name': '__GI___mmap64(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'ftrace_call', 'size': 2}]}, {'name': '[unknown](/opt/google/chrome/chrome)', 'children': [{'name': '[unknown](/tmp/perf-8869.map)', 'children': [{'name': '[unknown](/tmp/perf-8869.map)', 'children': [{'name': '[unknown](/tmp/perf-8869.map)', 'children': [{'name': '[unknown](/tmp/perf-8869.map)', 'children': [{'name': '[unknown](/tmp/perf-8869.map)', 'children': [{'name': '[unknown](/tmp/perf-8869.map)', 'children': [{'name': '[unknown](/tmp/perf-8869.map)', 'children': [{'name': '[unknown](/tmp/perf-8869.map)', 'children': [{'name': '[unknown](/tmp/perf-8869.map)', 'children': [{'name': '[unknown](/tmp/perf-8869.map)', 'children': [{'name': '[unknown](/tmp/perf-8869.map)', 'size': 2}]}]}]}]}]}]}]}]}]}]}, {'name': '', 'size': 2}, {'name': 'page_fault', 'children': [{'name': 'do_page_fault', 'children': [{'name': '__do_page_fault', 'children': [{'name': 'handle_mm_fault', 'children': [{'name': '__mem_cgroup_count_vm_event', 'size': 2}]}, {'name': 'find_vma', 'size': 2}]}]}]}, {'name': '[unknown](/tmp/perf-8262.map)', 'children': [{'name': '[unknown](/tmp/perf-8262.map)', 'children': [{'name': '[unknown](/tmp/perf-8262.map)', 'children': [{'name': '[unknown](/tmp/perf-8262.map)', 'children': [{'name': '[unknown](/tmp/perf-8262.map)', 'children': [{'name': '[unknown](/tmp/perf-8262.map)', 'children': [{'name': '[unknown](/tmp/perf-8262.map)', 'children': [{'name': '[unknown](/tmp/perf-8262.map)', 'children': [{'name': '[unknown](/tmp/perf-8262.map)', 'size': 2}]}]}]}]}]}]}]}]}, {'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'size': 2}]}]}, {'name': '', 'size': 2}]}]}]}]}]}]}, {'name': '', 'size': 2}]}]}]}]}]}]}]}]}, {'name': '[unknown]', 'children': [{'name': '[unknown](/opt/google/chrome/chrome)', 'children': [{'name': 'apic_timer_interrupt', 'children': [{'name': 'smp_apic_timer_interrupt', 'children': [{'name': 'irq_exit', 'children': [{'name': '__do_softirq', 'children': [{'name': 'run_rebalance_domains', 'children': [{'name': 'rebalance_domains', 'children': [{'name': 'update_blocked_averages', 'size': 2}]}]}]}]}]}]}, {'name': '', 'size': 3}]}, {'name': 'clock_gettime(/usr/lib64/libc-2.17.so)', 'children': [{'name': '[unknown]([vdso])', 'size': 2}, {'name': '', 'size': 2}]}]}, {'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'size': 2}]}]}]}]}]}]}]}]}]}]}]}]}]}, {'name': '[unknown](/usr/lib64/libpthread-2.17.so)', 'children': [{'name': 'tracesys', 'children': [{'name': 'SyS_write', 'children': [{'name': 'vfs_write', 'children': [{'name': 'do_sync_write', 'children': [{'name': 'sock_aio_write', 'children': [{'name': 'unix_stream_sendmsg', 'children': [{'name': 'sock_def_readable', 'children': [{'name': '__wake_up_sync_key', 'children': [{'name': '__wake_up_common', 'children': [{'name': 'ep_poll_callback', 'children': [{'name': '__wake_up_locked', 'children': [{'name': '__wake_up_common', 'children': [{'name': 'default_wake_function', 'children': [{'name': 'try_to_wake_up', 'children': [{'name': 'select_task_rq_fair', 'children': [{'name': 'idle_cpu', 'size': 2}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}, {'name': '', 'size': 2}, {'name': 'system_call_fastpath', 'children': [{'name': 'SyS_read', 'children': [{'name': 'vfs_read', 'children': [{'name': 'do_sync_read', 'children': [{'name': 'pipe_read', 'children': [{'name': 'anon_pipe_buf_release', 'size': 2}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}, {'name': '__wake_up_sync_key', 'children': [{'name': '__wake_up_common', 'children': [{'name': 'ep_poll_callback', 'children': [{'name': '_raw_spin_lock_irqsave', 'size': 2}]}]}]}]}]}]}]}]}]}, {'name': 'g_main_context_check(/usr/lib64/libglib-2.0.so.0.3600.3)', 'size': 2}, {'name': '_int_malloc(/usr/lib64/libc-2.17.so)', 'size': 2}, {'name': 'g_slice_alloc(/usr/lib64/libglib-2.0.so.0.3600.3)', 'size': 2}, {'name': 'g_hash_table_lookup(/usr/lib64/libglib-2.0.so.0.3600.3)', 'size': 2}, {'name': '[unknown](/usr/lib64/libdrm_intel.so.1.0.0)', 'size': 2}, {'name': '[unknown](/usr/lib64/libc-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_poll', 'children': [{'name': 'do_sys_poll', 'children': [{'name': 'pipe_poll', 'size': 2}, {'name': 'poll_schedule_timeout', 'children': [{'name': 'schedule_hrtimeout_range', 'children': [{'name': 'schedule_hrtimeout_range_clock', 'children': [{'name': 'schedule', 'children': [{'name': '__schedule', 'children': [{'name': 'idle_balance', 'children': [{'name': 'load_balance', 'children': [{'name': 'find_busiest_group', 'children': [{'name': 'update_sd_lb_stats', 'children': [{'name': 'update_group_power', 'size': 2}, {'name': '', 'size': 2}]}]}]}]}]}]}]}]}]}, {'name': 'fget_light', 'size': 2}, {'name': '', 'size': 2}]}]}]}]}, {'name': 'g_thread_self(/usr/lib64/libglib-2.0.so.0.3600.3)', 'size': 2}, {'name': '__schedule', 'size': 2}, {'name': 'syscall(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}, {'name': 'handlers_find(/usr/lib64/libgobject-2.0.so.0.3600.3)', 'size': 2}, {'name': '__libc_writev(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_writev', 'children': [{'name': 'vfs_writev', 'children': [{'name': 'do_readv_writev', 'children': [{'name': 'do_sync_readv_writev', 'children': [{'name': 'sock_aio_write', 'children': [{'name': 'unix_stream_sendmsg', 'children': [{'name': 'sock_def_readable', 'children': [{'name': '__wake_up_sync_key', 'children': [{'name': '__wake_up_common', 'children': [{'name': 'pollwake', 'children': [{'name': 'default_wake_function', 'children': [{'name': 'try_to_wake_up', 'children': [{'name': 'select_task_rq_fair', 'size': 2}]}]}]}]}]}]}]}]}]}]}]}]}]}, {'name': '', 'size': 2}]}, {'name': 'drmHandleEvent(/usr/lib64/libdrm.so.2.4.0)', 'size': 2}, {'name': 'g_type_check_instance_is_a(/usr/lib64/libgobject-2.0.so.0.3600.3)', 'size': 2}, {'name': 'realloc(/opt/google/chrome/chrome)', 'children': [{'name': 'apic_timer_interrupt', 'children': [{'name': 'smp_apic_timer_interrupt', 'children': [{'name': 'local_apic_timer_interrupt', 'children': [{'name': 'hrtimer_interrupt', 'children': [{'name': '__run_hrtimer', 'children': [{'name': 'tick_sched_timer', 'children': [{'name': 'tick_sched_handle.isra.15', 'children': [{'name': 'update_process_times', 'children': [{'name': 'rcu_check_callbacks', 'size': 2}]}]}]}]}]}]}]}]}]}, {'name': '__memcmp_sse4_1(/usr/lib64/libc-2.17.so)', 'size': 2}, {'name': '__memmove_ssse3_back(/usr/lib64/libc-2.17.so)', 'size': 2}, {'name': '[unknown](/usr/lib64/libxcb.so.1.1.0)', 'size': 2}, {'name': '_mesa_BindTexture(/usr/lib64/libdricore9.2.0.so.1.0.0)', 'size': 2}, {'name': '__sigprocmask(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_rt_sigprocmask', 'children': [{'name': 'sigprocmask', 'children': [{'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}]}]}]}, {'name': 'pthread_cond_destroy@@GLIBC_2.3.2(/usr/lib64/libpthread-2.17.so)', 'size': 2}, {'name': '__switch_to', 'size': 2}]} 2 | -------------------------------------------------------------------------------- /trace_json.js: -------------------------------------------------------------------------------- 1 | var trace_json = {'name': 'All', 'children': [{'name': 'x86_64_start_kernel', 'children': [{'name': 'x86_64_start_reservations', 'children': [{'name': 'start_kernel', 'children': [{'name': 'rest_init', 'children': [{'name': 'cpu_startup_entry', 'children': [{'name': 'arch_cpu_idle', 'children': [{'name': 'cpuidle_idle_call', 'children': [{'name': 'call_function_single_interrupt', 'children': [{'name': 'smp_call_function_single_interrupt', 'children': [{'name': 'generic_smp_call_function_single_interrupt', 'children': [{'name': 'remote_function', 'children': [{'name': '__perf_event_enable', 'children': [{'name': 'group_sched_in', 'children': [{'name': 'x86_pmu_commit_txn', 'children': [{'name': 'perf_pmu_enable', 'children': [{'name': 'x86_pmu_enable', 'children': [{'name': 'intel_pmu_enable_all', 'children': [{'name': 'native_write_msr_safe', 'size': 7}]}]}]}]}]}]}]}]}, {'name': 'irq_exit', 'children': [{'name': 'tick_nohz_irq_exit', 'children': [{'name': '__tick_nohz_idle_enter', 'children': [{'name': 'hrtimer_start', 'children': [{'name': '__hrtimer_start_range_ns', 'children': [{'name': 'enqueue_hrtimer', 'children': [{'name': 'timerqueue_add', 'size': 2}]}]}]}]}]}]}]}]}, {'name': 'cpuidle_enter_state', 'children': [{'name': 'intel_idle', 'size': 26}, {'name': 'read_tsc', 'size': 2}, {'name': '', 'size': 2}]}, {'name': 'ret_from_intr', 'children': [{'name': 'do_IRQ', 'children': [{'name': 'irq_exit', 'children': [{'name': 'tick_nohz_irq_exit', 'children': [{'name': '__tick_nohz_idle_enter', 'children': [{'name': 'hrtimer_start', 'children': [{'name': '__hrtimer_start_range_ns', 'children': [{'name': '__remove_hrtimer', 'children': [{'name': 'timerqueue_del', 'children': [{'name': 'rb_next', 'size': 2}]}]}, {'name': 'lock_hrtimer_base.isra.19', 'size': 2}]}]}, {'name': 'get_next_timer_interrupt', 'children': [{'name': 'ftrace_caller', 'size': 2}]}, {'name': '__hrtimer_start_range_ns', 'size': 2}]}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}]}, {'name': 'handle_irq', 'children': [{'name': 'handle_edge_irq', 'children': [{'name': 'handle_irq_event', 'children': [{'name': 'handle_irq_event_percpu', 'children': [{'name': 'ironlake_irq_handler(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'children': [{'name': 'drm_handle_vblank(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/drm.ko)', 'children': [{'name': 'drm_get_last_vbltimestamp(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/drm.ko)', 'children': [{'name': 'i915_get_vblank_timestamp(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'children': [{'name': 'drm_calc_vbltimestamp_from_scanoutpos(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/drm.ko)', 'children': [{'name': 'ftrace_caller', 'size': 2}]}]}]}]}, {'name': '', 'size': 3}]}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}, {'name': '', 'size': 2}]}, {'name': 'note_interrupt', 'size': 2}]}]}]}, {'name': 'ftrace_caller', 'size': 2}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}, {'name': 'irq_enter', 'children': [{'name': 'tick_check_idle', 'children': [{'name': 'tick_do_update_jiffies64', 'children': [{'name': 'do_timer', 'children': [{'name': 'ftrace_caller', 'size': 2}, {'name': 'timekeeping_update.constprop.8', 'children': [{'name': 'update_vsyscall', 'size': 2}]}]}]}, {'name': 'ktime_get', 'children': [{'name': 'read_tsc', 'children': [{'name': 'native_read_tsc', 'size': 2}]}]}, {'name': '', 'size': 2}]}]}]}, {'name': 'ftrace_caller', 'size': 2}]}, {'name': 'apic_timer_interrupt', 'children': [{'name': 'smp_apic_timer_interrupt', 'children': [{'name': 'local_apic_timer_interrupt', 'children': [{'name': 'hrtimer_interrupt', 'children': [{'name': '__run_hrtimer', 'children': [{'name': '__remove_hrtimer', 'size': 2}, {'name': 'hrtimer_wakeup', 'children': [{'name': 'wake_up_process', 'children': [{'name': 'try_to_wake_up', 'children': [{'name': 'select_task_rq_fair', 'size': 2}]}]}]}]}, {'name': '', 'size': 2}]}]}, {'name': 'irq_exit', 'children': [{'name': '__do_softirq', 'children': [{'name': 'run_rebalance_domains', 'children': [{'name': 'rebalance_domains', 'children': [{'name': 'update_blocked_averages', 'children': [{'name': 'update_cfs_rq_blocked_load', 'size': 2}]}]}]}, {'name': 'ftrace_caller', 'size': 2}]}]}, {'name': 'ftrace_caller', 'size': 2}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}, {'name': '', 'size': 2}]}, {'name': 'ftrace_caller', 'size': 2}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 3}]}, {'name': 'stack_trace_call', 'size': 2}, {'name': 'reschedule_interrupt', 'size': 2}]}, {'name': 'ftrace_caller', 'size': 2}]}, {'name': 'tick_nohz_idle_exit', 'children': [{'name': 'hrtimer_start_range_ns', 'children': [{'name': '__hrtimer_start_range_ns', 'children': [{'name': 'enqueue_hrtimer', 'children': [{'name': 'timerqueue_add', 'size': 2}]}]}]}, {'name': 'account_idle_ticks', 'children': [{'name': 'ftrace_call', 'size': 2}, {'name': 'irqtime_account_process_tick.isra.2', 'size': 2}]}]}, {'name': 'schedule_preempt_disabled', 'children': [{'name': 'ftrace_caller', 'size': 2}, {'name': '__schedule', 'size': 2}]}, {'name': 'tick_nohz_idle_enter', 'children': [{'name': '__tick_nohz_idle_enter', 'children': [{'name': 'hrtimer_start', 'children': [{'name': '__hrtimer_start_range_ns', 'children': [{'name': '__remove_hrtimer', 'children': [{'name': 'hrtimer_force_reprogram', 'children': [{'name': 'tick_program_event', 'children': [{'name': 'clockevents_program_event', 'size': 2}]}]}]}]}]}]}]}, {'name': 'hrtimer_forward', 'size': 2}]}, {'name': 'ftrace_caller', 'size': 2}]}]}]}]}, {'name': '__libc_start_main(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'main(/usr/bin/perf)', 'children': [{'name': 'run_builtin(/usr/bin/perf)', 'children': [{'name': 'cmd_record(/usr/bin/perf)', 'children': [{'name': '__GI___ioctl(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_ioctl', 'children': [{'name': 'do_vfs_ioctl', 'children': [{'name': 'perf_ioctl', 'children': [{'name': 'perf_event_for_each_child', 'children': [{'name': 'perf_event_enable', 'children': [{'name': 'cpu_function_call', 'children': [{'name': 'smp_call_function_single', 'children': [{'name': 'remote_function', 'children': [{'name': '__perf_event_enable', 'children': [{'name': 'group_sched_in', 'children': [{'name': 'x86_pmu_commit_txn', 'children': [{'name': 'perf_pmu_enable', 'children': [{'name': 'x86_pmu_enable', 'children': [{'name': 'intel_pmu_enable_all', 'children': [{'name': 'native_write_msr_safe', 'size': 6}]}]}]}]}]}]}]}, {'name': 'generic_exec_single', 'size': 2}]}]}]}, {'name': '', 'size': 2}, {'name': 'perf_event_disable', 'children': [{'name': 'cpu_function_call', 'children': [{'name': 'smp_call_function_single', 'children': [{'name': 'generic_exec_single', 'size': 2}]}]}]}]}]}]}]}]}]}, {'name': 'perf_evlist__prepare_workload(/usr/bin/perf)', 'children': [{'name': '__strchr_sse2(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'page_fault', 'children': [{'name': 'do_page_fault', 'children': [{'name': '__do_page_fault', 'children': [{'name': 'handle_mm_fault', 'children': [{'name': 'handle_pte_fault', 'children': [{'name': '__do_fault', 'children': [{'name': 'filemap_fault', 'children': [{'name': 'find_get_page', 'children': [{'name': 'radix_tree_lookup_slot', 'children': [{'name': 'radix_tree_lookup_element', 'size': 2}]}]}]}]}]}]}]}]}]}]}, {'name': '__execve(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'stub_execve', 'children': [{'name': 'SyS_execve', 'children': [{'name': 'do_execve_common.isra.23', 'children': [{'name': 'prepare_binprm', 'children': [{'name': 'security_bprm_set_creds', 'children': [{'name': 'selinux_bprm_set_creds', 'children': [{'name': 'security_transition_sid', 'children': [{'name': 'security_compute_sid', 'children': [{'name': 'security_compute_sid.part.14', 'children': [{'name': 'policydb_context_isvalid', 'children': [{'name': 'mls_context_isvalid', 'children': [{'name': 'ebitmap_contains', 'size': 2}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}, {'name': 'start_secondary', 'children': [{'name': 'cpu_startup_entry', 'children': [{'name': 'arch_cpu_idle', 'children': [{'name': 'cpuidle_idle_call', 'children': [{'name': 'call_function_single_interrupt', 'children': [{'name': 'smp_call_function_single_interrupt', 'children': [{'name': 'generic_smp_call_function_single_interrupt', 'children': [{'name': 'remote_function', 'children': [{'name': '__perf_event_enable', 'children': [{'name': 'group_sched_in', 'children': [{'name': 'x86_pmu_commit_txn', 'children': [{'name': 'perf_pmu_enable', 'children': [{'name': 'x86_pmu_enable', 'children': [{'name': 'intel_pmu_enable_all', 'children': [{'name': 'native_write_msr_safe', 'size': 12}]}]}]}]}]}]}]}]}, {'name': '', 'size': 2}]}]}, {'name': 'cpuidle_enter_state', 'children': [{'name': 'intel_idle', 'size': 32}, {'name': 'read_tsc', 'size': 2}, {'name': '', 'size': 2}]}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}, {'name': 'apic_timer_interrupt', 'children': [{'name': 'smp_apic_timer_interrupt', 'children': [{'name': 'irq_enter', 'children': [{'name': 'tick_check_idle', 'children': [{'name': 'tick_do_update_jiffies64', 'children': [{'name': 'do_timer', 'children': [{'name': 'raw_notifier_call_chain', 'size': 2}, {'name': '', 'size': 2}]}]}, {'name': 'tick_nohz_stop_idle', 'children': [{'name': 'nr_iowait_cpu', 'size': 2}]}]}]}, {'name': 'local_apic_timer_interrupt', 'children': [{'name': 'hrtimer_interrupt', 'children': [{'name': 'tick_program_event', 'children': [{'name': 'clockevents_program_event', 'size': 2}]}, {'name': '__run_hrtimer', 'children': [{'name': 'hrtimer_wakeup', 'children': [{'name': 'wake_up_process', 'children': [{'name': 'try_to_wake_up', 'children': [{'name': 'ttwu_do_activate.constprop.87', 'children': [{'name': 'activate_task', 'children': [{'name': 'enqueue_task_fair', 'size': 2}, {'name': 'enqueue_task', 'children': [{'name': 'enqueue_task_fair', 'children': [{'name': 'enqueue_entity', 'size': 2}]}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}]}]}]}]}, {'name': 'ftrace_caller', 'size': 2}]}, {'name': '__remove_hrtimer', 'children': [{'name': 'timerqueue_del', 'children': [{'name': 'rb_next', 'size': 2}]}]}]}]}]}, {'name': 'irq_exit', 'children': [{'name': '__do_softirq', 'children': [{'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}, {'name': 'run_timer_softirq', 'children': [{'name': 'call_timer_fn', 'children': [{'name': 'intel_pstate_timer_func', 'children': [{'name': 'intel_pstate_set_pstate', 'children': [{'name': 'native_write_msr_safe', 'size': 2}]}]}, {'name': 'ieee80211_frame_duration(/lib/modules/3.11.4-201.fc19.x86_64/kernel/net/mac80211/mac80211.ko)', 'children': [{'name': 'led_blink_set', 'children': [{'name': 'led_blink_setup', 'children': [{'name': 'iwl_led_blink_set(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/dvm/iwldvm.ko)', 'children': [{'name': 'iwl_trans_pcie_read32(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko)', 'size': 2}]}]}]}]}, {'name': 'delayed_work_timer_fn', 'children': [{'name': '__queue_work', 'children': [{'name': 'insert_work', 'children': [{'name': 'wake_up_worker', 'children': [{'name': 'wake_up_process', 'children': [{'name': 'try_to_wake_up', 'children': [{'name': 'ttwu_do_activate.constprop.87', 'children': [{'name': 'activate_task', 'children': [{'name': 'enqueue_task', 'children': [{'name': 'enqueue_task_fair', 'size': 2}]}]}]}]}]}]}]}]}]}]}]}]}]}]}, {'name': 'exit_idle', 'size': 2}, {'name': '', 'size': 2}]}, {'name': 'ret_from_intr', 'children': [{'name': 'do_IRQ', 'children': [{'name': 'handle_irq', 'children': [{'name': 'handle_edge_irq', 'children': [{'name': 'handle_irq_event', 'children': [{'name': 'handle_irq_event_percpu', 'children': [{'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}, {'name': 'iwl_pcie_isr_ict(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko)', 'children': [{'name': 'iwl_trans_pcie_write32(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko)', 'size': 2}]}]}]}]}]}, {'name': 'irq_exit', 'children': [{'name': '__do_softirq', 'children': [{'name': 'blk_done_softirq', 'children': [{'name': 'scsi_softirq_done', 'children': [{'name': 'scsi_finish_command', 'children': [{'name': 'scsi_io_completion', 'children': [{'name': 'blk_end_request', 'children': [{'name': 'blk_end_bidi_request', 'children': [{'name': 'blk_update_bidi_request', 'children': [{'name': 'blk_update_request', 'children': [{'name': 'bio_endio', 'children': [{'name': 'bio_copy_kern_endio', 'children': [{'name': '__free_pages', 'children': [{'name': 'free_hot_cold_page', 'children': [{'name': 'mem_cgroup_bad_page_check', 'size': 2}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}, {'name': 'menu_select', 'size': 2}, {'name': 'ftrace_caller', 'size': 2}, {'name': '', 'size': 2}]}, {'name': 'ftrace_caller', 'size': 2}]}, {'name': 'schedule_preempt_disabled', 'children': [{'name': '__schedule', 'children': [{'name': 'post_schedule_idle', 'children': [{'name': 'idle_enter_fair', 'size': 2}]}, {'name': '', 'size': 2}]}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}, {'name': 'tick_nohz_idle_enter', 'children': [{'name': '__tick_nohz_idle_enter', 'children': [{'name': 'get_next_timer_interrupt', 'children': [{'name': '_raw_spin_lock', 'size': 2}, {'name': 'hrtimer_get_next_event', 'children': [{'name': '_raw_spin_unlock_irqrestore', 'size': 2}]}]}, {'name': 'hrtimer_start', 'children': [{'name': '__hrtimer_start_range_ns', 'children': [{'name': 'enqueue_hrtimer', 'children': [{'name': 'timerqueue_add', 'size': 2}]}]}]}, {'name': '', 'size': 2}]}]}, {'name': 'rcu_idle_exit', 'children': [{'name': 'rcu_eqs_exit_common.isra.38', 'size': 2}]}, {'name': 'account_idle_ticks', 'size': 3}, {'name': 'tick_nohz_idle_exit', 'children': [{'name': 'account_idle_ticks', 'children': [{'name': 'irqtime_account_process_tick.isra.2', 'size': 3}]}, {'name': '', 'size': 2}, {'name': 'hrtimer_start_range_ns', 'children': [{'name': '__hrtimer_start_range_ns', 'size': 2}]}, {'name': 'hrtimer_cancel', 'children': [{'name': 'hrtimer_try_to_cancel', 'size': 2}]}, {'name': 'hrtimer_forward', 'size': 2}]}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}, {'name': 'ftrace_caller', 'size': 2}]}]}, {'name': '__execve(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'stub_execve', 'children': [{'name': 'SyS_execve', 'children': [{'name': 'do_execve_common.isra.23', 'children': [{'name': 'search_binary_handler', 'children': [{'name': 'load_elf_binary', 'children': [{'name': 'flush_old_exec', 'children': [{'name': 'mmput', 'children': [{'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}]}]}]}]}]}]}]}, {'name': '[unknown](/usr/lib64/ld-2.17.so)', 'children': [{'name': '_dl_map_object(/usr/lib64/ld-2.17.so)', 'children': [{'name': 'open64(/usr/lib64/ld-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_open', 'children': [{'name': 'do_sys_open', 'children': [{'name': 'do_filp_open', 'children': [{'name': 'path_openat', 'children': [{'name': 'do_last', 'children': [{'name': 'may_open', 'children': [{'name': 'inode_permission', 'children': [{'name': '__inode_permission', 'children': [{'name': 'security_inode_permission', 'children': [{'name': 'selinux_inode_permission', 'children': [{'name': 'avc_has_perm_noaudit', 'children': [{'name': 'avc_compute_av', 'children': [{'name': 'security_compute_av', 'children': [{'name': 'context_struct_compute_av', 'children': [{'name': 'cond_compute_av', 'children': [{'name': 'avtab_search_node', 'size': 2}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}, {'name': '[unknown]', 'children': [{'name': '[unknown]', 'children': [{'name': '__strrchr_sse42(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'stack_trace_call', 'size': 2}]}, {'name': '[unknown]', 'children': [{'name': 'pthread_cond_wait@@GLIBC_2.3.2(/usr/lib64/libpthread-2.17.so)', 'children': [{'name': 'tracesys', 'children': [{'name': 'SyS_futex', 'children': [{'name': 'do_futex', 'children': [{'name': 'futex_wait', 'children': [{'name': 'futex_wait_queue_me', 'children': [{'name': 'schedule', 'children': [{'name': '__schedule', 'children': [{'name': 'idle_balance', 'children': [{'name': 'load_balance', 'children': [{'name': 'find_busiest_group', 'children': [{'name': 'idle_cpu', 'size': 2}]}, {'name': 'walk_tg_tree_from', 'children': [{'name': 'tg_load_down', 'size': 2}]}]}]}]}]}]}]}]}]}]}]}, {'name': 'pthread_mutex_lock(/usr/lib64/libpthread-2.17.so)', 'size': 2}, {'name': 'g_type_check_instance_is_a(/usr/lib64/libgobject-2.0.so.0.3600.3)', 'size': 2}, {'name': 'g_hash_table_lookup(/usr/lib64/libglib-2.0.so.0.3600.3)', 'size': 2}, {'name': '[unknown](/usr/lib64/gnome-shell/libgnome-shell.so.#prelink#.bPwms6)', 'size': 2}, {'name': '[unknown]', 'children': [{'name': '[unknown](/usr/lib64/libclutter-1.0.so.0.1404.0.#prelink#.UJhRcF)', 'size': 2}, {'name': '[unknown](/usr/lib64/libgtk-3.so.0.800.5)', 'size': 2}, {'name': '[unknown](/usr/lib64/libmutter.so.0.0.0.#prelink#.zwTpfy)', 'size': 2}, {'name': '[unknown](/usr/lib64/libcairo.so.2.11200.14.#prelink#.SWVEq7)', 'size': 2}]}, {'name': 'g_type_check_instance_cast(/usr/lib64/libgobject-2.0.so.0.3600.3)', 'size': 2}, {'name': 'g_value_set_flags(/usr/lib64/libgobject-2.0.so.0.3600.3)', 'size': 2}, {'name': 'g_source_iter_next(/usr/lib64/libglib-2.0.so.0.3600.3)', 'size': 3}, {'name': '[unknown](/usr/lib64/libclutter-1.0.so.0.1404.0.#prelink#.UJhRcF)', 'size': 2}, {'name': 'g_signal_emit(/usr/lib64/libgobject-2.0.so.0.3600.3)', 'children': [{'name': 'g_closure_ref(/usr/lib64/libgobject-2.0.so.0.3600.3)', 'size': 2}]}, {'name': '__read_nocancel(/usr/lib64/libpthread-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_read', 'children': [{'name': 'vfs_read', 'children': [{'name': 'do_sync_read', 'children': [{'name': 'sock_aio_read', 'children': [{'name': 'sock_aio_read.part.7', 'children': [{'name': 'unix_stream_recvmsg', 'children': [{'name': 'skb_unlink', 'children': [{'name': '_raw_spin_unlock_irqrestore', 'size': 2}]}]}]}]}]}]}]}]}]}, {'name': '[unknown](/usr/lib64/libdbus-glib-1.so.2.2.2)', 'size': 2}]}, {'name': '[unknown](/opt/google/chrome/chrome)', 'size': 2}, {'name': '[unknown]([vdso])', 'size': 2}, {'name': 'std::string::assign(std::stringconst&)(/usr/lib64/libstdc++.so.6.0.18)', 'size': 2}, {'name': 'g_mutex_get_impl(/usr/lib64/libglib-2.0.so.0.3600.3)', 'size': 2}, {'name': 'syscall(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_epoll_wait', 'children': [{'name': 'ep_poll', 'children': [{'name': 'ep_scan_ready_list.isra.8', 'children': [{'name': 'ftrace_call', 'children': [{'name': 'apic_timer_interrupt', 'children': [{'name': 'smp_apic_timer_interrupt', 'children': [{'name': 'local_apic_timer_interrupt', 'children': [{'name': 'hrtimer_interrupt', 'children': [{'name': '__run_hrtimer', 'children': [{'name': 'tick_sched_timer', 'children': [{'name': 'tick_sched_handle.isra.15', 'children': [{'name': 'update_process_times', 'children': [{'name': 'run_posix_cpu_timers', 'size': 2}]}]}]}]}]}]}]}]}]}, {'name': 'ep_send_events_proc', 'size': 2}]}, {'name': 'schedule_hrtimeout_range', 'children': [{'name': 'schedule_hrtimeout_range_clock', 'children': [{'name': 'schedule', 'children': [{'name': '__schedule', 'children': [{'name': 'idle_balance', 'children': [{'name': 'load_balance', 'children': [{'name': 'find_busiest_group', 'children': [{'name': 'update_sd_lb_stats', 'children': [{'name': 'group_balance_cpu', 'children': [{'name': 'cpumask_next_and', 'children': [{'name': 'find_next_bit', 'size': 2}]}]}, {'name': '', 'size': 2}]}, {'name': 'ftrace_call', 'size': 2}, {'name': '', 'size': 2}]}]}, {'name': 'update_blocked_averages', 'size': 2}]}, {'name': '', 'size': 2}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}, {'name': 'deactivate_task', 'children': [{'name': 'dequeue_task', 'children': [{'name': 'dequeue_task_fair', 'children': [{'name': 'update_curr', 'size': 2}]}]}]}]}]}]}, {'name': '', 'size': 2}]}]}, {'name': 'schedule_hrtimeout_range', 'size': 2}]}]}, {'name': 'sysret_audit', 'children': [{'name': '__audit_syscall_exit', 'children': [{'name': 'mntput', 'size': 2}]}]}, {'name': '', 'size': 2}]}, {'name': '[unknown](/usr/lib64/libgjs.so.0.0.0.#prelink#.EwXjLp)', 'size': 2}, {'name': '__lll_unlock_wake(/usr/lib64/libpthread-2.17.so)', 'children': [{'name': 'tracesys', 'children': [{'name': 'syscall_trace_enter', 'children': [{'name': '__secure_computing', 'children': [{'name': 'seccomp_bpf_load', 'size': 2}]}]}]}, {'name': '', 'size': 2}]}, {'name': 'xf86ScreenToScrn(/usr/bin/Xorg)', 'size': 2}, {'name': '_L_unlock_701(/usr/lib64/libpthread-2.17.so)', 'size': 2}]}, {'name': 'pthread_cond_timedwait@@GLIBC_2.3.2(/usr/lib64/libpthread-2.17.so)', 'children': [{'name': 'tracesys', 'children': [{'name': 'SyS_futex', 'children': [{'name': 'do_futex', 'children': [{'name': 'futex_wait', 'children': [{'name': 'futex_wait_queue_me', 'children': [{'name': 'schedule', 'children': [{'name': '__schedule', 'children': [{'name': 'idle_balance', 'children': [{'name': 'load_balance', 'children': [{'name': 'find_busiest_group', 'children': [{'name': 'update_sd_lb_stats', 'size': 2}, {'name': 'cpumask_next_and', 'size': 2}]}]}, {'name': 'update_blocked_averages', 'size': 2}]}, {'name': 'deactivate_task', 'children': [{'name': 'dequeue_task', 'children': [{'name': 'dequeue_task_fair', 'children': [{'name': 'dequeue_entity', 'children': [{'name': 'update_cfs_shares', 'size': 2}]}, {'name': '', 'size': 2}, {'name': 'ftrace_caller', 'size': 2}]}]}]}]}, {'name': '', 'size': 2}]}, {'name': 'hrtimer_start_range_ns', 'children': [{'name': '__hrtimer_start_range_ns', 'children': [{'name': 'lock_hrtimer_base.isra.19', 'size': 2}]}]}]}, {'name': 'hrtimer_init', 'size': 2}]}]}]}]}, {'name': '__switch_to', 'size': 2}]}, {'name': '[unknown](/opt/google/chrome/chrome)', 'children': [{'name': '[unknown]', 'children': [{'name': '[unknown](/usr/lib64/libpthread-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_write', 'children': [{'name': 'vfs_write', 'children': [{'name': 'do_sync_write', 'children': [{'name': 'pipe_write', 'children': [{'name': 'file_update_time', 'children': [{'name': '__mnt_want_write_file', 'children': [{'name': '__mnt_want_write', 'size': 2}]}, {'name': 'update_time', 'children': [{'name': '__mark_inode_dirty', 'size': 2}]}]}, {'name': '', 'size': 2}, {'name': '__wake_up_sync_key', 'children': [{'name': '__wake_up_common', 'children': [{'name': 'pollwake', 'children': [{'name': 'default_wake_function', 'children': [{'name': 'try_to_wake_up', 'children': [{'name': 'ttwu_do_activate.constprop.87', 'children': [{'name': 'ttwu_do_wakeup', 'children': [{'name': 'check_preempt_curr', 'children': [{'name': 'resched_task', 'children': [{'name': 'flat_send_IPI_mask', 'size': 2}]}]}]}]}]}]}]}]}]}, {'name': '_raw_spin_lock_irqsave', 'size': 2}]}, {'name': 'file_update_time', 'size': 2}]}, {'name': 'rw_verify_area', 'children': [{'name': 'security_file_permission', 'children': [{'name': 'selinux_file_permission', 'children': [{'name': 'file_has_perm', 'children': [{'name': 'inode_has_perm.isra.32.constprop.61', 'children': [{'name': 'avc_has_perm_flags', 'size': 2}, {'name': '', 'size': 2}]}]}]}, {'name': 'ftrace_caller', 'size': 2}, {'name': 'ftrace_call', 'size': 2}]}, {'name': '', 'size': 3}, {'name': 'ftrace_caller', 'size': 2}]}, {'name': '', 'size': 2}]}, {'name': 'fget_light', 'size': 2}]}]}, {'name': 'sysret_audit', 'children': [{'name': '__audit_syscall_exit', 'children': [{'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}]}]}, {'name': '[unknown](/opt/google/chrome/chrome)', 'size': 2}, {'name': '[unknown]', 'children': [{'name': '[unknown]', 'children': [{'name': '[unknown](/opt/google/chrome/chrome)', 'size': 2}]}]}, {'name': 'std::basic_string,std::allocator>::basic_string(std::stringconst&,unsignedlong,unsignedlong)(/usr/lib64/libstdc++.so.6.0.18)', 'size': 2}]}, {'name': '', 'size': 2}, {'name': '[unknown](/opt/google/chrome/chrome)', 'size': 2}, {'name': '[unknown]([vdso])', 'size': 2}]}, {'name': 'pthread_mutex_lock(/usr/lib64/libpthread-2.17.so)', 'size': 2}, {'name': 'pthread_getspecific(/usr/lib64/libpthread-2.17.so)', 'size': 2}, {'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/opt/google/chrome/chrome)', 'size': 2}]}, {'name': '__errno_location(/usr/lib64/libpthread-2.17.so)', 'size': 2}, {'name': '_int_free(/usr/lib64/libc-2.17.so)', 'size': 2}, {'name': '[unknown](/usr/lib64/libgtk-3.so.0.800.5)', 'size': 2}, {'name': '[unknown](/usr/lib64/libcairo.so.2.11200.14.#prelink#.SWVEq7)', 'size': 2}, {'name': 'g_list_last(/usr/lib64/libglib-2.0.so.0.3600.3)', 'size': 2}, {'name': '__libc_writev(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_writev', 'children': [{'name': 'vfs_writev', 'children': [{'name': 'do_readv_writev', 'children': [{'name': 'do_sync_readv_writev', 'children': [{'name': 'ftrace_caller', 'size': 2}, {'name': 'sock_aio_write', 'children': [{'name': 'unix_stream_sendmsg', 'children': [{'name': 'sock_def_readable', 'children': [{'name': '__wake_up_sync_key', 'children': [{'name': '__wake_up_common', 'children': [{'name': 'pollwake', 'children': [{'name': 'default_wake_function', 'children': [{'name': 'try_to_wake_up', 'children': [{'name': 'ttwu_do_activate.constprop.87', 'children': [{'name': 'ttwu_do_wakeup', 'children': [{'name': 'check_preempt_curr', 'children': [{'name': 'resched_task', 'children': [{'name': 'native_smp_send_reschedule', 'size': 2}]}]}]}]}]}]}]}]}]}]}]}]}]}]}, {'name': 'ftrace_caller', 'size': 2}]}]}]}]}, {'name': '__select(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_select', 'children': [{'name': 'core_sys_select', 'children': [{'name': 'do_select', 'children': [{'name': 'poll_schedule_timeout', 'children': [{'name': 'schedule_hrtimeout_range', 'children': [{'name': 'schedule_hrtimeout_range_clock', 'children': [{'name': 'schedule', 'children': [{'name': '__schedule', 'children': [{'name': 'perf_event_task_sched_out', 'size': 2}]}]}]}]}]}, {'name': 'sock_poll', 'children': [{'name': 'unix_poll', 'children': [{'name': '__pollwait', 'children': [{'name': 'add_wait_queue', 'size': 2}]}]}]}, {'name': 'poll_freewait', 'children': [{'name': 'remove_wait_queue', 'children': [{'name': '_raw_spin_lock_irqsave', 'size': 2}]}]}, {'name': 'ftrace_caller', 'size': 2}]}]}]}]}]}, {'name': '[unknown](/usr/lib64/dri/i965_dri.so)', 'size': 2}, {'name': '__GI___ioctl(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_ioctl', 'children': [{'name': 'do_vfs_ioctl', 'children': [{'name': 'drm_ioctl(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/drm.ko)', 'children': [{'name': 'i915_gem_set_domain_ioctl(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'children': [{'name': '__wait_seqno(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'children': [{'name': 'gen6_ring_get_irq(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'children': [{'name': 'gen6_gt_force_wake_get(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'children': [{'name': '__gen6_gt_force_wake_get(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'size': 2}]}]}]}]}, {'name': 'ftrace_caller', 'size': 2}, {'name': '', 'size': 2}, {'name': 'i915_gem_pwrite_ioctl(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'size': 2}, {'name': 'drm_gem_close_ioctl(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/drm.ko)', 'children': [{'name': 'drm_gem_handle_delete(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/drm.ko)', 'children': [{'name': 'drm_gem_object_free(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/drm.ko)', 'children': [{'name': 'i915_gem_free_object(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'children': [{'name': 'i915_gem_object_put_pages(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'children': [{'name': 'i915_gem_object_truncate(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'children': [{'name': 'shmem_truncate_range', 'children': [{'name': 'shmem_undo_range', 'children': [{'name': 'truncate_inode_page', 'children': [{'name': 'delete_from_page_cache', 'children': [{'name': 'mem_cgroup_uncharge_cache_page', 'children': [{'name': 'ftrace_caller', 'size': 2}, {'name': 'apic_timer_interrupt', 'children': [{'name': 'smp_apic_timer_interrupt', 'children': [{'name': 'local_apic_timer_interrupt', 'children': [{'name': 'hrtimer_interrupt', 'children': [{'name': '__run_hrtimer', 'children': [{'name': 'tick_sched_timer', 'children': [{'name': 'tick_sched_handle.isra.15', 'children': [{'name': 'update_process_times', 'children': [{'name': 'scheduler_tick', 'children': [{'name': 'task_tick_fair', 'children': [{'name': 'update_cfs_rq_blocked_load', 'size': 2}]}]}]}]}]}]}]}]}]}]}]}]}, {'name': 'ftrace_caller', 'size': 2}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}, {'name': '__pagevec_release', 'children': [{'name': 'release_pages', 'children': [{'name': 'free_hot_cold_page_list', 'children': [{'name': 'free_hot_cold_page', 'children': [{'name': 'free_pcppages_bulk', 'children': [{'name': 'bad_range', 'size': 2}, {'name': '', 'size': 2}]}, {'name': 'free_pages_prepare', 'children': [{'name': 'ftrace_call', 'size': 2}]}]}]}, {'name': '__mod_zone_page_state', 'size': 2}]}]}]}, {'name': 'ftrace_caller', 'size': 2}]}]}, {'name': 'i915_gem_object_put_pages_gtt(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/gpu/drm/i915/i915.ko)', 'children': [{'name': 'put_page', 'size': 2}]}]}]}]}, {'name': '', 'size': 2}]}]}]}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}, {'name': 'fget_light', 'size': 2}]}]}]}, {'name': '__memcpy_ssse3_back(/usr/lib64/libc-2.17.so)', 'size': 2}, {'name': 'pthread_cond_broadcast@@GLIBC_2.3.2(/usr/lib64/libpthread-2.17.so)', 'children': [{'name': 'tracesys', 'children': [{'name': 'SyS_futex', 'children': [{'name': 'do_futex', 'children': [{'name': 'futex_requeue', 'children': [{'name': 'wake_futex', 'children': [{'name': 'wake_up_state', 'children': [{'name': 'try_to_wake_up', 'children': [{'name': 'select_task_rq_fair', 'children': [{'name': 'source_load', 'size': 2}]}]}]}]}]}]}]}]}]}, {'name': '[unknown](/usr/lib64/libpthread-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_read', 'children': [{'name': 'eventfd_read', 'size': 2}]}]}]}, {'name': '[unknown](/usr/lib64/libmozjs185.so.1.0.0)', 'size': 2}, {'name': 'g_type_check_class_is_a(/usr/lib64/libgobject-2.0.so.0.3600.3)', 'size': 2}, {'name': 'std::string::assign(charconst*,unsignedlong)(/usr/lib64/libstdc++.so.6.0.18)', 'size': 2}, {'name': 'realloc(/opt/google/chrome/chrome)', 'size': 2}, {'name': '__pthread_disable_asynccancel(/usr/lib64/libpthread-2.17.so)', 'size': 2}, {'name': '[unknown](/usr/bin/Xorg)', 'size': 2}, {'name': 'drm_intel_bo_busy(/usr/lib64/libdrm_intel.so.1.0.0)', 'size': 2}, {'name': '_mesa_DrawArrays@plt(/usr/lib64/libdricore9.2.0.so.1.0.0)', 'size': 2}, {'name': '[unknown](/usr/lib64/libcogl.so.12.1.1.#prelink#.PaW5DY)', 'children': [{'name': '[unknown]', 'children': [{'name': '[unknown](/usr/lib64/libcogl.so.12.1.1.#prelink#.PaW5DY)', 'size': 2}]}, {'name': '', 'size': 2}, {'name': '[unknown](/usr/lib64/libcogl.so.12.1.1.#prelink#.PaW5DY)', 'size': 2}]}, {'name': '[unknown](/usr/lib64/libstdc++.so.6.0.18)', 'size': 2}, {'name': '[unknown](/opt/google/chrome/PepperFlash/libpepflashplayer.so)', 'size': 2}, {'name': 'g_list_insert_before(/usr/lib64/libglib-2.0.so.0.3600.3)', 'children': [{'name': 'apic_timer_interrupt', 'children': [{'name': 'smp_apic_timer_interrupt', 'children': [{'name': 'local_apic_timer_interrupt', 'children': [{'name': 'hrtimer_interrupt', 'children': [{'name': '__run_hrtimer', 'children': [{'name': 'tick_sched_timer', 'children': [{'name': 'tick_sched_handle.isra.15', 'children': [{'name': 'rcu_check_callbacks', 'size': 2}]}]}]}]}]}]}]}]}, {'name': 'g_type_check_instance_is_a(/usr/lib64/libgobject-2.0.so.0.3600.3)', 'size': 2}, {'name': '__GI___setitimer(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_setitimer', 'children': [{'name': 'do_setitimer', 'children': [{'name': 'hrtimer_try_to_cancel', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}]}]}]}]}, {'name': 'ret_from_fork', 'children': [{'name': 'kthread', 'children': [{'name': 'hotkey_kthread(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/platform/x86/thinkpad_acpi.ko)', 'children': [{'name': 'msleep_interruptible', 'children': [{'name': 'schedule_timeout', 'children': [{'name': 'schedule', 'children': [{'name': 'pick_next_task_stop', 'size': 2}]}]}]}, {'name': 'hotkey_read_nvram(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/platform/x86/thinkpad_acpi.ko)', 'children': [{'name': 'nvram_read_byte', 'children': [{'name': 'rtc_cmos_read', 'size': 2}]}]}]}, {'name': 'worker_thread', 'children': [{'name': 'process_one_work', 'children': [{'name': 'ieee80211_iface_work(/lib/modules/3.11.4-201.fc19.x86_64/kernel/net/mac80211/mac80211.ko)', 'children': [{'name': 'ieee80211_clear_tx_pending(/lib/modules/3.11.4-201.fc19.x86_64/kernel/net/mac80211/mac80211.ko)', 'children': [{'name': 'ieee80211_rx_mgmt_beacon(/lib/modules/3.11.4-201.fc19.x86_64/kernel/net/mac80211/mac80211.ko)', 'children': [{'name': 'ieee80211_beacon_get_tim(/lib/modules/3.11.4-201.fc19.x86_64/kernel/net/mac80211/mac80211.ko)', 'children': [{'name': 'mod_timer', 'children': [{'name': 'find_last_bit', 'size': 2}]}]}]}]}]}, {'name': '_raw_spin_lock_irq', 'size': 2}, {'name': 'rtl_task(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/ethernet/realtek/r8169.ko)', 'children': [{'name': 'rtl_phy_work(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/ethernet/realtek/r8169.ko)', 'children': [{'name': 'rtl8169_xmii_reset_enable(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/ethernet/realtek/r8169.ko)', 'children': [{'name': 'r8169_mdio_read(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/ethernet/realtek/r8169.ko)', 'children': [{'name': 'rtl_loop_wait(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/ethernet/realtek/r8169.ko)', 'children': [{'name': 'rtl_udelay(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/ethernet/realtek/r8169.ko)', 'children': [{'name': '__udelay', 'children': [{'name': 'delay_tsc', 'children': [{'name': 'native_read_tsc', 'size': 2}]}]}]}]}]}]}]}]}]}, {'name': 'schedule', 'children': [{'name': '__schedule', 'children': [{'name': 'idle_balance', 'children': [{'name': 'load_balance', 'children': [{'name': 'find_busiest_group', 'children': [{'name': 'update_sd_lb_stats', 'size': 2}]}]}, {'name': 'update_blocked_averages', 'size': 2}, {'name': '__compute_runnable_contrib.part.49', 'size': 2}]}]}]}]}, {'name': 'irq_thread', 'children': [{'name': 'schedule', 'children': [{'name': '__schedule', 'children': [{'name': 'idle_balance', 'children': [{'name': 'load_balance', 'children': [{'name': 'find_busiest_group', 'children': [{'name': 'update_sd_lb_stats', 'size': 2}]}]}, {'name': 'update_blocked_averages', 'children': [{'name': 'update_cfs_rq_blocked_load', 'size': 2}]}]}]}]}, {'name': 'irq_thread_fn', 'children': [{'name': 'iwl_pcie_irq_handler(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko)', 'children': [{'name': 'iwl_pcie_rxq_restock(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko)', 'children': [{'name': '__list_del_entry', 'size': 2}, {'name': 'iwl_pcie_rxq_inc_wr_ptr(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko)', 'children': [{'name': 'iwl_write_direct32(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko)', 'children': [{'name': 'iwl_trans_pcie_release_nic_access(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko)', 'children': [{'name': '__iwl_trans_pcie_set_bits_mask(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko)', 'children': [{'name': 'iwl_trans_pcie_read32(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko)', 'size': 2}]}]}]}]}]}, {'name': 'iwl_rx_dispatch(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/dvm/iwldvm.ko)', 'children': [{'name': 'iwlagn_rx_reply_rx(/lib/modules/3.11.4-201.fc19.x86_64/kernel/drivers/net/wireless/iwlwifi/dvm/iwldvm.ko)', 'children': [{'name': 'ieee80211_crypto_ccmp_decrypt(/lib/modules/3.11.4-201.fc19.x86_64/kernel/net/mac80211/mac80211.ko)', 'children': [{'name': 'ccmp_encrypt_skb.isra.8(/lib/modules/3.11.4-201.fc19.x86_64/kernel/net/mac80211/mac80211.ko)', 'size': 2}]}, {'name': 'ieee80211_crypto_aes_cmac_decrypt(/lib/modules/3.11.4-201.fc19.x86_64/kernel/net/mac80211/mac80211.ko)', 'children': [{'name': '__pskb_pull_tail', 'children': [{'name': 'put_page', 'size': 2}]}]}]}, {'name': '', 'size': 2}]}]}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}]}, {'name': 'rcu_gp_kthread', 'children': [{'name': 'schedule', 'children': [{'name': '__schedule', 'children': [{'name': 'idle_balance', 'children': [{'name': 'update_blocked_averages', 'size': 2}]}]}]}]}]}]}, {'name': '__GI___mmap64(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'ftrace_call', 'size': 2}]}, {'name': '[unknown](/opt/google/chrome/chrome)', 'children': [{'name': '[unknown](/tmp/perf-8869.map)', 'children': [{'name': '[unknown](/tmp/perf-8869.map)', 'children': [{'name': '[unknown](/tmp/perf-8869.map)', 'children': [{'name': '[unknown](/tmp/perf-8869.map)', 'children': [{'name': '[unknown](/tmp/perf-8869.map)', 'children': [{'name': '[unknown](/tmp/perf-8869.map)', 'children': [{'name': '[unknown](/tmp/perf-8869.map)', 'children': [{'name': '[unknown](/tmp/perf-8869.map)', 'children': [{'name': '[unknown](/tmp/perf-8869.map)', 'children': [{'name': '[unknown](/tmp/perf-8869.map)', 'children': [{'name': '[unknown](/tmp/perf-8869.map)', 'size': 2}]}]}]}]}]}]}]}]}]}]}, {'name': '', 'size': 2}, {'name': 'page_fault', 'children': [{'name': 'do_page_fault', 'children': [{'name': '__do_page_fault', 'children': [{'name': 'handle_mm_fault', 'children': [{'name': '__mem_cgroup_count_vm_event', 'size': 2}]}, {'name': 'find_vma', 'size': 2}]}]}]}, {'name': '[unknown](/tmp/perf-8262.map)', 'children': [{'name': '[unknown](/tmp/perf-8262.map)', 'children': [{'name': '[unknown](/tmp/perf-8262.map)', 'children': [{'name': '[unknown](/tmp/perf-8262.map)', 'children': [{'name': '[unknown](/tmp/perf-8262.map)', 'children': [{'name': '[unknown](/tmp/perf-8262.map)', 'children': [{'name': '[unknown](/tmp/perf-8262.map)', 'children': [{'name': '[unknown](/tmp/perf-8262.map)', 'children': [{'name': '[unknown](/tmp/perf-8262.map)', 'size': 2}]}]}]}]}]}]}]}]}, {'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'children': [{'name': '[unknown](/tmp/perf-8354.map)', 'size': 2}]}]}, {'name': '', 'size': 2}]}]}]}]}]}]}, {'name': '', 'size': 2}]}]}]}]}]}]}]}]}, {'name': '[unknown]', 'children': [{'name': '[unknown](/opt/google/chrome/chrome)', 'children': [{'name': 'apic_timer_interrupt', 'children': [{'name': 'smp_apic_timer_interrupt', 'children': [{'name': 'irq_exit', 'children': [{'name': '__do_softirq', 'children': [{'name': 'run_rebalance_domains', 'children': [{'name': 'rebalance_domains', 'children': [{'name': 'update_blocked_averages', 'size': 2}]}]}]}]}]}]}, {'name': '', 'size': 3}]}, {'name': 'clock_gettime(/usr/lib64/libc-2.17.so)', 'children': [{'name': '[unknown]([vdso])', 'size': 2}, {'name': '', 'size': 2}]}]}, {'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'children': [{'name': '[unknown](/tmp/perf-8465.map)', 'size': 2}]}]}]}]}]}]}]}]}]}]}]}]}]}, {'name': '[unknown](/usr/lib64/libpthread-2.17.so)', 'children': [{'name': 'tracesys', 'children': [{'name': 'SyS_write', 'children': [{'name': 'vfs_write', 'children': [{'name': 'do_sync_write', 'children': [{'name': 'sock_aio_write', 'children': [{'name': 'unix_stream_sendmsg', 'children': [{'name': 'sock_def_readable', 'children': [{'name': '__wake_up_sync_key', 'children': [{'name': '__wake_up_common', 'children': [{'name': 'ep_poll_callback', 'children': [{'name': '__wake_up_locked', 'children': [{'name': '__wake_up_common', 'children': [{'name': 'default_wake_function', 'children': [{'name': 'try_to_wake_up', 'children': [{'name': 'select_task_rq_fair', 'children': [{'name': 'idle_cpu', 'size': 2}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}, {'name': '', 'size': 2}, {'name': 'system_call_fastpath', 'children': [{'name': 'SyS_read', 'children': [{'name': 'vfs_read', 'children': [{'name': 'do_sync_read', 'children': [{'name': 'pipe_read', 'children': [{'name': 'anon_pipe_buf_release', 'size': 2}, {'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}, {'name': '__wake_up_sync_key', 'children': [{'name': '__wake_up_common', 'children': [{'name': 'ep_poll_callback', 'children': [{'name': '_raw_spin_lock_irqsave', 'size': 2}]}]}]}]}]}]}]}]}]}, {'name': 'g_main_context_check(/usr/lib64/libglib-2.0.so.0.3600.3)', 'size': 2}, {'name': '_int_malloc(/usr/lib64/libc-2.17.so)', 'size': 2}, {'name': 'g_slice_alloc(/usr/lib64/libglib-2.0.so.0.3600.3)', 'size': 2}, {'name': 'g_hash_table_lookup(/usr/lib64/libglib-2.0.so.0.3600.3)', 'size': 2}, {'name': '[unknown](/usr/lib64/libdrm_intel.so.1.0.0)', 'size': 2}, {'name': '[unknown](/usr/lib64/libc-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_poll', 'children': [{'name': 'do_sys_poll', 'children': [{'name': 'pipe_poll', 'size': 2}, {'name': 'poll_schedule_timeout', 'children': [{'name': 'schedule_hrtimeout_range', 'children': [{'name': 'schedule_hrtimeout_range_clock', 'children': [{'name': 'schedule', 'children': [{'name': '__schedule', 'children': [{'name': 'idle_balance', 'children': [{'name': 'load_balance', 'children': [{'name': 'find_busiest_group', 'children': [{'name': 'update_sd_lb_stats', 'children': [{'name': 'update_group_power', 'size': 2}, {'name': '', 'size': 2}]}]}]}]}]}]}]}]}]}, {'name': 'fget_light', 'size': 2}, {'name': '', 'size': 2}]}]}]}]}, {'name': 'g_thread_self(/usr/lib64/libglib-2.0.so.0.3600.3)', 'size': 2}, {'name': '__schedule', 'size': 2}, {'name': 'syscall(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}, {'name': 'handlers_find(/usr/lib64/libgobject-2.0.so.0.3600.3)', 'size': 2}, {'name': '__libc_writev(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_writev', 'children': [{'name': 'vfs_writev', 'children': [{'name': 'do_readv_writev', 'children': [{'name': 'do_sync_readv_writev', 'children': [{'name': 'sock_aio_write', 'children': [{'name': 'unix_stream_sendmsg', 'children': [{'name': 'sock_def_readable', 'children': [{'name': '__wake_up_sync_key', 'children': [{'name': '__wake_up_common', 'children': [{'name': 'pollwake', 'children': [{'name': 'default_wake_function', 'children': [{'name': 'try_to_wake_up', 'children': [{'name': 'select_task_rq_fair', 'size': 2}]}]}]}]}]}]}]}]}]}]}]}]}]}, {'name': '', 'size': 2}]}, {'name': 'drmHandleEvent(/usr/lib64/libdrm.so.2.4.0)', 'size': 2}, {'name': 'g_type_check_instance_is_a(/usr/lib64/libgobject-2.0.so.0.3600.3)', 'size': 2}, {'name': 'realloc(/opt/google/chrome/chrome)', 'children': [{'name': 'apic_timer_interrupt', 'children': [{'name': 'smp_apic_timer_interrupt', 'children': [{'name': 'local_apic_timer_interrupt', 'children': [{'name': 'hrtimer_interrupt', 'children': [{'name': '__run_hrtimer', 'children': [{'name': 'tick_sched_timer', 'children': [{'name': 'tick_sched_handle.isra.15', 'children': [{'name': 'update_process_times', 'children': [{'name': 'rcu_check_callbacks', 'size': 2}]}]}]}]}]}]}]}]}]}, {'name': '__memcmp_sse4_1(/usr/lib64/libc-2.17.so)', 'size': 2}, {'name': '__memmove_ssse3_back(/usr/lib64/libc-2.17.so)', 'size': 2}, {'name': '[unknown](/usr/lib64/libxcb.so.1.1.0)', 'size': 2}, {'name': '_mesa_BindTexture(/usr/lib64/libdricore9.2.0.so.1.0.0)', 'size': 2}, {'name': '__sigprocmask(/usr/lib64/libc-2.17.so)', 'children': [{'name': 'system_call_fastpath', 'children': [{'name': 'SyS_rt_sigprocmask', 'children': [{'name': 'sigprocmask', 'children': [{'name': 'ftrace_call', 'children': [{'name': 'stack_trace_call', 'size': 2}]}]}]}]}]}, {'name': 'pthread_cond_destroy@@GLIBC_2.3.2(/usr/lib64/libpthread-2.17.so)', 'size': 2}, {'name': '__switch_to', 'size': 2}]} 2 | --------------------------------------------------------------------------------