Как использовать getrusage для чтения ошибок страницы в C?
Я пытаюсь получить ошибки страницы, когда я запускаю программу из двух разных частей.
Я делаю некоторые операции, используя два метода матричного умножения, и пытаюсь выяснить, какой из них вызывает больше сбоев страниц.
/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 ответ
Вполне возможно, что количество ошибок на странице равно нулю. Это в большей степени связано с тем, как вы загружаете данные, какими общими библиотеками вы пользуетесь (и находятся ли они в памяти или нет), использованием копирования при записи и т. П., Чем это происходит с вашими алгоритмами.,
Вы уверены, что не ищете количество пропущенных кешей процессора? Для матричного умножения больших матриц наивный алгоритм может иметь гораздо худшее использование кэша, чем оптимальный. Попробуйте использовать valgrind
с cachegrind
инструмент.