mirror of
https://git.yoctoproject.org/poky
synced 2026-03-25 01:02:22 +01:00
The data available from buildstats is now more fine grained than previously, so take advantage of that to enrich the data we save against tasks: * Store the CPU usage for user and system separately, and display them separately. * Disk IO is now measured in bytes, not ms. Also store the read/write bytes separately. * Store started and ended times, as well as elapsed_time. This will enable future features such as showing which tasks were running at a particular point in the build. There was also a problem with how we were looking up the Task object, which meant that the buildstats were being added to new tasks which weren't correctly associated with the build. Fix how we look up the Task (only looking for tasks which match the build, and the task and recipe names in the build stats data) so the build stats are associated with the correct task. [YOCTO #8842] (Bitbake rev: efa6f915566b979bdbad233ae195b413cef1b8da) Signed-off-by: Elliot Smith <elliot.smith@intel.com> Signed-off-by: Michael Wood <michael.g.wood@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
144 lines
5.3 KiB
HTML
144 lines
5.3 KiB
HTML
{% extends "basebuildpage.html" %}
|
|
{% load humanize %}
|
|
{% load projecttags %}
|
|
|
|
{% block title %} {{mainheading}} - {{build.target_set.all|dictsort:"target"|join:", "}} {{build.machine}} - {{build.project.name}} - Toaster{% endblock %}
|
|
{% block localbreadcrumb %}
|
|
<li>{{mainheading}}</li>
|
|
{% endblock %}
|
|
|
|
{% block nav-tasks %}
|
|
{% if 'Tasks' == mainheading %}
|
|
<li class="active"><a href="{% url 'tasks' build.pk %}">Tasks</a></li>
|
|
{% else %}
|
|
<li><a href="{% url 'tasks' build.pk %}">Tasks</a></li>
|
|
{% endif %}
|
|
{% endblock %}
|
|
{% block nav-buildtime %}
|
|
{% if 'Time' == mainheading %}
|
|
<li class="active"><a href="{% url 'buildtime' build.pk %}">Time</a></li>
|
|
{% else %}
|
|
<li><a href="{% url 'buildtime' build.pk %}">Time</a></li>
|
|
{% endif %}
|
|
{% endblock %}
|
|
|
|
{% block nav-cputime %}
|
|
{% if 'CPU time' == mainheading %}
|
|
<li class="active"><a href="{% url 'cputime' build.pk %}">CPU time</a></li>
|
|
{% else %}
|
|
<li><a href="{% url 'cputime' build.pk %}">CPU time</a></li>
|
|
{% endif %}
|
|
{% endblock %}
|
|
|
|
{% block nav-diskio %}
|
|
{% if 'Disk I/O' == mainheading %}
|
|
<li class="active"><a href="{% url 'diskio' build.pk %}">Disk I/O</a></li>
|
|
{% else %}
|
|
<li><a href="{% url 'diskio' build.pk %}">Disk I/O</a></li>
|
|
{% endif %}
|
|
{% endblock %}
|
|
|
|
{% block buildinfomain %}
|
|
<div class="span10">
|
|
{% if not request.GET.filter and not request.GET.search and not objects.paginator.count %}
|
|
<!-- Empty - no data in database -->
|
|
<div class="page-header">
|
|
<h1>{{mainheading}}</h1>
|
|
</div>
|
|
<div class="alert alert-info lead">
|
|
No data was recorded for this build.
|
|
</div>
|
|
|
|
{% else %}
|
|
|
|
<div class="page-header">
|
|
<h1>
|
|
{% if request.GET.filter and objects.paginator.count > 0 or request.GET.search and objects.paginator.count > 0 %}
|
|
{{objects.paginator.count}} task{{objects.paginator.count|pluralize}} found
|
|
{%elif request.GET.filter and objects.paginator.count == 0 or request.GET.search and objects.paginator.count == 0 %}
|
|
No tasks found
|
|
{%else%}
|
|
{{mainheading}}
|
|
{%endif%}
|
|
</h1>
|
|
</div>
|
|
|
|
{% if objects.paginator.count == 0 %}
|
|
<div class="row-fluid">
|
|
<div class="alert">
|
|
<form class="no-results input-append" id="searchform">
|
|
<input id="search" name="search" class="input-xxlarge" type="text" value="{{request.GET.search}}"/>{% if request.GET.search %}<a href="javascript:$('#search').val('');searchform.submit()" class="add-on btn" tabindex="-1"><i class="icon-remove"></i></a>{% endif %}
|
|
<button class="btn" type="submit" value="Search">Search</button>
|
|
<button class="btn btn-link" onclick="javascript:$('#search').val('');searchform.submit()">Show all tasks</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
{% else %}
|
|
{% include "basetable_top.html" %}
|
|
|
|
{% for task in objects %}
|
|
<tr {{ task|task_color }} id="{{task.order}}">
|
|
<td class="order">
|
|
<a href="{%url "task" build.pk task.pk%}">{{task.order}}</a>
|
|
</td>
|
|
<td class="recipe_name" >
|
|
<a href="{% url "recipe" build.pk task.recipe.pk %}">{{task.recipe.name}}</a>
|
|
</td>
|
|
<td class="recipe_version">
|
|
<a href="{% url "recipe" build.pk task.recipe.pk %}">{{task.recipe.version}}</a>
|
|
</td>
|
|
<td class="task_name">
|
|
<a href="{%url "task" build.pk task.pk%}">{{task.task_name}}</a> {% if task.get_description %}<i class="icon-question-sign get-help hover-help" title="{{task.get_description}}"></i> {% endif %}
|
|
</td>
|
|
<td class="executed">
|
|
<a href="{%url "task" build.pk task.pk%}">{{task.get_executed_display}}</a>
|
|
</td>
|
|
<td class="outcome">
|
|
<a href="{%url "task" build.pk task.pk%}">{{task.get_outcome_display}} </a>
|
|
{% if task.outcome = task.OUTCOME_FAILED %}
|
|
<a href="{% url 'build_artifact' build.pk "tasklogfile" task.pk %}">
|
|
<i class="icon-download-alt" title="Download task log file"></i>
|
|
</a>
|
|
{% endif %}
|
|
<i class="icon-question-sign get-help hover-help" title="{{task.get_outcome_help}}"></i>
|
|
</td>
|
|
<td class="cache_attempt">
|
|
<a href="{%url "task" build.pk task.pk%}">{{task.get_sstate_result_display|format_none_and_zero}}</a>
|
|
</td>
|
|
<td class="time_taken">
|
|
{{task.elapsed_time|format_none_and_zero|floatformat:2}}
|
|
</td>
|
|
<td class="cpu_time_system">
|
|
{{task.cpu_time_system|format_none_and_zero|floatformat:2}}
|
|
</td>
|
|
<td class="cpu_time_user">
|
|
{{task.cpu_time_user|format_none_and_zero|floatformat:2}}
|
|
</td>
|
|
<td class="disk_io">
|
|
{{task.disk_io|format_none_and_zero|intcomma}}
|
|
</td>
|
|
|
|
</tr>
|
|
{% endfor %}
|
|
|
|
{% include "basetable_bottom.html" %}
|
|
{% endif %} {# objects.paginator.count #}
|
|
{% endif %} {# empty #}
|
|
</div>
|
|
|
|
<script type="text/javascript">
|
|
|
|
$(document).ready(function() {
|
|
// enable blue hightlight animation for the order link
|
|
if (location.href.search('#') > -1) {
|
|
var task_order = location.href.split('#')[1];
|
|
$("#" + task_order).addClass("highlight");
|
|
}
|
|
});
|
|
|
|
</script>
|
|
|
|
{% endblock %}
|