<html>
<head>
<base href="https://bugs.freedesktop.org/">
</head>
<body><span class="vcard"><a class="email" href="mailto:eero.t.tamminen@intel.com" title="Eero Tamminen <eero.t.tamminen@intel.com>"> <span class="fn">Eero Tamminen</span></a>
</span> changed
<a class="bz_bug_link
bz_status_NEW "
title="NEW - Mesa linker is slow"
href="https://bugs.freedesktop.org/show_bug.cgi?id=91857">bug 91857</a>
<br>
<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>What</th>
<th>Removed</th>
<th>Added</th>
</tr>
<tr>
<td style="text-align:right;">CC</td>
<td>
</td>
<td>eero.t.tamminen@intel.com
</td>
</tr>
<tr>
<td style="text-align:right;">Summary</td>
<td>Mesa 10.6.3 linker is slow
</td>
<td>Mesa linker is slow
</td>
</tr></table>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEW "
title="NEW - Mesa linker is slow"
href="https://bugs.freedesktop.org/show_bug.cgi?id=91857#c30">Comment # 30</a>
on <a class="bz_bug_link
bz_status_NEW "
title="NEW - Mesa linker is slow"
href="https://bugs.freedesktop.org/show_bug.cgi?id=91857">bug 91857</a>
from <span class="vcard"><a class="email" href="mailto:eero.t.tamminen@intel.com" title="Eero Tamminen <eero.t.tamminen@intel.com>"> <span class="fn">Eero Tamminen</span></a>
</span></b>
<pre>"perf" profiling info for today's Mesa version:
-------------------------------------------------------------------
$ sudo apt-get install linux-tools-common
$ perf record -- frag_runner frag_shader=obsfucated_shader.frag ...
$ perf report -n --sort comm,dso
Overhead Samples Command Shared Object
95,18% 218725 frag_runner i965_dri.so
4,59% 10964 frag_runner libc-2.23.so
...
$ perf report
# Object Symbol
30.99% i965_dri.so fs_visitor::virtual_grf_interferes
28.39% i965_dri.so ra_allocate
15.80% i965_dri.so fs_visitor::assign_regs
4.47% i965_dri.so ra_add_node_adjacency
1.64% i965_dri.so (anonymous namespace)::ir_copy_propagation_visitor::visit
1.54% i965_dri.so decrement_q.isra.2
1.37% i965_dri.so (anonymous namespace)::ir_copy_propagation_visitor::kill
1.24% i965_dri.so ra_add_node_interference
1.22% i965_dri.so brw::fs_live_variables::compute_start_end
1.11% libc-2.23.so _int_malloc
0.94% i965_dri.so (anonymous
namespace)::ir_copy_propagation_elements_visitor::kill
0.75% libc-2.23.so _int_free
0.69% libc-2.23.so __libc_calloc
0.63% i965_dri.so (anonymous
namespace)::ir_copy_propagation_elements_visitor::handle_rvalue
0.60% libc-2.23.so realloc
0.45% i965_dri.so brw::fs_live_variables::setup_def_use
0.42% libc-2.23.so _int_realloc
0.40% i965_dri.so fs_visitor::choose_spill_reg
0.36% i965_dri.so ra_get_best_spill_node
0.35% i965_dri.so unsafe_free
0.34% i965_dri.so ir_expression::accept
0.32% libc-2.23.so __memset_sse2
0.27% libc-2.23.so malloc_consolidate
0.26% i965_dri.so match_value
0.25% libc-2.23.so __memcpy_sse2
0.25% i965_dri.so fs_visitor::calculate_payload_ranges
0.25% i965_dri.so get_used_mrfs
0.24% i965_dri.so backend_reg::in_range
0.24% i965_dri.so brw::fs_live_variables::compute_live_variables
0.22% i965_dri.so visit_list_elements
0.20% i965_dri.so fs_visitor::spill_reg
0.13% libc-2.23.so __memset_avx2
0.12% i965_dri.so reralloc_array_size
-------------------------------------------------------------------
When using perf report interactively, one can see that:
* virtual_grf_interferes() cost goes to the couple if checks in that function,
so it just gets called too much. Calling is done by assign_regs():
-----------------
for (unsigned i = 0; i < this->alloc.count; i++) {
...
for (unsigned j = 0; j < i; j++) {
if (virtual_grf_interferes(i, j)) {
ra_add_node_interference(g, i, j);
}
}
-----------------
* All the assign_regs() cost goes to running above internal loop.
* ra_allocate() cost goes mainly to inlined graph node loop from ra_simplify(),
and slightly to inlined check from pq_test().</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the QA Contact for the bug.</li>
</ul>
</body>
</html>