/proc
io
отслеживает только «явный» ввод-вывод, , то есть ввод-вывод, выполняемый с использованием небольшого количества системных вызовов. Для чтения это read
, readv
, preadv
, sendfile
и copy_file_range
; вы можете увидеть статистику, накопленную с помощьюadd_rchar
в fs/read_write.c
.
Ввод-вывод для отображаемых файлов памяти -совершенно другой; при чтении используется обработка ошибок страницы -с рядом оптимизаций для повышения производительности (опережающее чтение -и т. д. )Вы можете отследить это до некоторой степени, просмотрев ошибки страницы в/proc/${pid}/stat
(поля 10 и 12 ). Трудная часть — выяснить, сколько данных считывается при каждой ошибке страницы; мои эксперименты предполагают 64 КБ на ошибку, но я не нашел достоверных данных, подтверждающих это (, и, вероятно, это зависит от обстоятельств ).
Я не знаю ни одного готового ---способа отслеживания отображенного ввода-вывода с точки зрения процесса (, т.е. байтов, считанных в процесс, независимо от того, любой блочный ввод-вывод действительно имел место ).
Учет точного -отображенного чтения памяти оказывается довольно сложной проблемой,главным образом из-за того, как бухгалтерский учет должен отражать намерение. io
подсчитывает байты, которые программа явно попросила прочитать или записать; но когда процесс отображает файл в свою память, чтение происходит с точностью, определяемой ядром, а не процессом чтения. Вы можете прочитать только один байт каждые 4 КБ, а ядро прочитает за вас весь файл — что должен отражать учет? Он не может легко отражать байты, действительно прочитанные в памяти процессом, что оказало бы огромное влияние на производительность (помимо того, что его невозможно реализовать во всех архитектурах ).
Поскольку в ошибке обсуждался ключ GPG, мы переименовали два ключа GPG в /etc/pki/rpm -gpg/, добавив в конце .bad в надежде получить новый ключ GPG.
Повторил sudo yum clean all
, sudo yum clean metadata
и dnf clean all
, затем снова запустил sudo yum update
, и он говорит мне, что не может открыть /etc/pki/rpm -gpg/RPM -GPG -KEY -centosofficial
Переименованы ключи, удалив суффикс.bad. Reran sudo yum update
, и ему было предложено принять ключи. Я сделал, и обновление прошло успешно.
Я побежал
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
затем перезапустите sudo yum update
.