What is exactly shown by "perf" as page-faults?

I want to count the number of disk accesses during a complete run of my script. My bash script runs 2 other executable files locally and 2 other executable files remotely. Something like this (those executable files may access other tools themselves):

#!/bin/bash

./executable1 DATA1 &
./executable2 DATA2 &

ssh remote_host './executable3 DATA3' &
ssh remote_host './executable4 DATA4' &

wait;

Now I'm running my bash script with perf как это:

perf stat -e page-faults,page-faults:u ./myBashScript.sh

но результаты всегда одинаковы, независимо от того, изменяю ли я файлы DATA*, порядок, количество команд,... Примерно так:

128,470 page-faults
127,641 page-faults:u

Теперь мой вопрос: "Как я могу посчитать количество обращений к диску для всего сценария?"

пс:

  • Как вы знаете, Linux пытается уменьшить количество обращений к диску, используя свободное место оперативной памяти в качестве кеш-диска, а здесь, "подсчитывая количество обращений к диску", я точно имею в виду, сколько раз ОС должна переносить данные с жесткого диска в основную память ( = RAM ударил / пропустил)
  • Мне просто нужно посчитать количество обращений к диску на локальном компьютере, а не на удаленном.
  • Извините за слабый английский.

1 ответ

Ошибки страницы в perf инструмент от linux tools (perf_events) для мелких и крупных ошибок страницы. И незначительные ошибки страницы не для доступа к диску. И не каждая главная ошибка страницы связана с доступом к диску (только файл диска был mmap ред). И доступ к диску из чтения / записи не вызовет ошибок страницы.

Некоторые общие решения для подсчета ошибок на странице находятся по https://stackoverflow.com/questions/23302763.

Для подсчета обращений к диску по всему миру используйте iostat инструмент http://man7.org/linux/man-pages/man1/iostat.1.html (tps, r / s, w / s) или vmstat инструмент http://man7.org/linux/man-pages/man8/vmstat.8.html (bo, bi, -d). Оба используются с периодом в секундах, как iostat 1 или же vmstat 1 печатать один набор действий каждую секунду, пока не будет убит Ctrl-C; или как iostat 1 60 или же vmstat 1 60 печатать каждую секунду в течение 1 минуты и выйти.

Другое решение заключается в использовании комбинации perf инструмент и некоторые конкретные события от ввода / вывода или дисковых подсистем. У Грегга есть несколько примеров расширенного использования perf на http://www.brendangregg.com/perf.html и https://github.com/brendangregg/perf-tools.

Его инструмент iosnoop http://www.brendangregg.com/blog/2014-07-16/iosnoop-for-linux.html и http://www.brendangregg.com/blog/2014-07-23/linux-iosnoop-latency-heat-maps.html (на основе perf) может отслеживать дисковый ввод-вывод по pid процесса, идентификатору диска, смещению и размеру io, а также измерять задержку доступа к диску.

Проверьте также "7.2. Карты тепла" http://www.brendangregg.com/perf.html

Я использовал perf_events для записи вопроса о блокировке (дисковый ввод / вывод) и статических точек трассировки завершения:

 # perf record -e block:block_rq_issue -e block:block_rq_complete -a sleep 120
Другие вопросы по тегам