Как использовать getrusage для чтения ошибок страницы в C? - PullRequest
0 голосов
/ 15 декабря 2009

Я пытаюсь получить ошибки страницы, когда запускаю программу из двух разных частей.

Я выполняю некоторые операции, использующие два метода матричного умножения, и пытаюсь выяснить, какой из них вызывает больше сбоев страниц.

/Operations for method 1

getrusage (RUSAGE_SELF, &usage);
fault1=usage.ru_minflt;

/operations for Method 2


getrusage (RUSAGE_SELF, &usage);
fault2=usage.ru_minflt-fault1;

Но кажется, что fault2 = 0, что я не считаю правильным. Если я использую две разные переменные использование и использование 2, кажется, не работает ни то, ни другое. Есть ли какая-нибудь команда, чтобы начать подсчет ошибок для каждого метода умножения? Я не прав с кодом?

Спасибо за ответы

1 Ответ

0 голосов
/ 16 декабря 2009

Вполне возможно, что количество ошибок на странице равно нулю. Это в большей степени связано с тем, как вы загружаете данные, какими общими библиотеками вы пользуетесь (и находятся ли они уже в памяти или нет), использованием копирования при записи и т. П., Чем с вашими алгоритмами .

Вы уверены, что не ищете количество промахов кеша процессора? Для умножения матриц больших матриц наивный алгоритм может иметь гораздо худшее использование кэша, чем оптимальный. Попробуйте использовать valgrind с инструментом cachegrind.

...