DMA (прямой доступ к памяти) - это именно то, где устройство получает доступ к самой памяти (без запроса ЦП на передачу данных на устройство). Для (упрощенного) примера прямого доступа к памяти; Представьте, что случайный процесс выполняет write()
, и это поднимается вверх (через VFS, через файловую систему, через любой уровень RAID и т. д. c), пока не достигнет какого-либо драйвера контроллера диска; затем драйвер контроллера диска сообщает своему дисковому контроллеру «перенести N байтов с этого физического адреса в это место на диске и сообщить мне, когда передача будет выполнена». Большинство устройств (контроллеры дисков, сетевые карты, видеокарты, звуковые карты, контроллеры USB и т. Д.) Каким-то образом используют DMA. Под нагрузкой все устройства вашего компьютера могут выполнять тысячи передач (через. DMA) в секунду, потенциально разбросанных по всей используемой оперативной памяти.
Насколько я знаю; в /proc/
нет файлов, которые бы помогли (скорее всего, потому что он меняется слишком быстро и слишком часто, чтобы беспокоиться о том, чтобы предоставить какие-либо файлы, и у всех было бы очень мало причин когда-либо захотеть взглянуть на него).
MTTR в основном не имеют значения - они контролируют только кэши ЦП и не влияют на запросы DMA от устройств.
/proc/iomem
также не имеет значения. Он только показывает, какие области устройства используют для своих собственных регистров и не имеет ничего общего с оперативной памятью (и, следовательно, не имеет ничего общего с DMA).
Примечание 1: DMA не обязательно должен быть в нижней 32 -бит (например, большинство устройств PCI поддерживают мастеринг 64-битного DMA / шины в течение десяти и более лет); а для редких устройств, которые не поддерживают 64-разрядные, Linux может использовать IOMMU для повторного сопоставления своих запросов (поэтому устройство считает, что оно использует 32-разрядные адреса, хотя на самом деле это не так).
Примечание 2: Когда-то давно (go) были "микросхемы контроллера ISA DMA". Как и сам автобус ISA; они были ограничены первыми 16 МБ физического адресного пространства (и имели другие ограничения - например, не поддерживали передачи, которые пересекают границу 64 КБ). У этих чипов действительно не было причин существовать, так как контроллеры гибких дисков устарели. У вас может быть /proc/dma
, описывающий их (но если вы это сделаете, то, вероятно, говорит только «каскад», чтобы указать, как чипы подключаются, без устройств, использующих их).