Многопоточность x86/Linux: процентная сумма дочерних элементов отчета о производительности не соответствует родительскомLinux

Ответить Пред. темаСлед. тема
Anonymous
 Многопоточность x86/Linux: процентная сумма дочерних элементов отчета о производительности не соответствует родительском

Сообщение Anonymous »


Рассмотрим следующий простой пример:

Код: Выделить всё

#define _GNU_SOURCE

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include [*]

volatile atomic_int variable;
int futex_word;

int foo(void *v)
{
while (1)
{
int expected = atomic_load(&variable);
atomic_compare_exchange_strong(&variable, &expected, expected + 1);
syscall(SYS_futex, &futex_word, FUTEX_WAKE, 1);
}
}

int main(void)
{
void *stack = (char *)mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0) + 4096;
clone(foo, stack, CLONE_CHILD_SETTID, NULL);
sleep(1000);
}
Выполнение этого примера с помощью

Код: Выделить всё

sudo perf record --call-graph dwarf,16384 -F 9123 ./main
а затем

Код: Выделить всё

sudo perf report
Я получил следующий странный результат, который я не знаю, кого интерпретировать:
Изображение
На изображении самый первый развернутый символ foo состоит из двух записей: The problem I see here is 0.93% + 95.53% = 96.46% which mismatches 96.52% that is shown for the symbol foo.
Why there's such a mismatch? I see this pretty often when profiling different binaries, but not sure if it's possible to interpret it as a measurement error.


Источник: https://stackoverflow.com/questions/781 ... -match-the
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»