adron2 Posted September 12, 2012 Posted September 12, 2012 (edited) Собственно давно мучают вопросы по пункту DMA Engine support в ядре линукса. А конкретнее вот какие: 1) Просто включение этого пункта без выбора какого либо драйвера для dma engine(Intel I/OAT DMA support, etc...) включает какую то базовую поддержку dma? 2) Intel I/OAT DMA support - написано что это только для новых процессоров xeon. Имеет ли смысл это включать на core duo/quad? 3) Intel MID DMA support for Peripheral DMA controllers - как я себе понимаю сервер SuperServer 5015A на Atom D510 тоже относится к MID и в атоме есть DMA engine. Нужно ли его включать для такого вот сервера? 4) Реально ли добавляется производительность при включении Network: TCP receive copy offload и нужно ли для этого включить один из dma enigines(Intel I/OAT DMA support or Intel MID DMA support for Peripheral DMA controllers) Проясните знающие люди эти вопросы...а то гугливание что то особо не помогло мне ( Заранее спасибо. Edited September 12, 2012 by adron2 Вставить ник Quote
NiTr0 Posted September 12, 2012 Posted September 12, 2012 http://cateee.net/lkddb/web-lkddb/DMA_ENGINE.html - думаю, смысла расписывать что-либо подробнее нет. Вставить ник Quote
nuclearcat Posted September 12, 2012 Posted September 12, 2012 Для I/OAT - прироста нет, по моему опыту, а вот глюки бывали. Видимо прирост бывает в каких-то специфических ситуациях, например когда контент обрабатывается локально. Будет время, потестирую снова, на свежем железе. Вставить ник Quote
Ivan_83 Posted September 12, 2012 Posted September 12, 2012 В случае роутинга хватит ДМА сетевух, а базовый=системный будет простаивать. Базовый нужен только если у вас внутри ворочаются горы памяти, типа база стоит или что то ещё. Для раздачи с диска - уже давно есть свои ДМА. Если кратко: пакеты наваливаются в буфер сетевухи, она их своим ДМА пишет в память и через прерывание сообщает что оно уже есть в памяти, дальше ядро просматривает заголовки полученных пакетов и инициализирует ДМА для отправки дальше. В обоих случаях это ДМА самой сетевухи, никаких крупных операций с память не происходит, дма системы там применить просто некуда, дешевле копировать процом те жалкие десятки байт. Вставить ник Quote
NiTr0 Posted September 12, 2012 Posted September 12, 2012 Базовый нужен только если у вас внутри ворочаются горы памяти, типа база стоит или что то ещё. I/OAT DMA - его задача, если не ошибаюсь, положить данные в кеш проца, а не память. Тут может и быть прирост, а может и не быть или быть незаметным, в зависимости от латентности памяти и накладных расходов на этот самый I/OAT DMA. Вставить ник Quote
Ivan_83 Posted September 12, 2012 Posted September 12, 2012 С пакетов чекается не больше 48 байт, такое проще копировать, чем инитить дма и потом его запускать и хэндлить. А собственно в кеш запихать можно и обычным способом - прочитав. Кстати, по п4 - при роутинге TCP вообще не разбирается, так что пофик включено или нет. На карточках наооборот выключают разбор (лро, гсо и пр). Вставить ник Quote
NiTr0 Posted September 12, 2012 Posted September 12, 2012 С пакетов чекается не больше 48 байт, такое проще копировать, чем инитить дма и потом его запускать и хэндлить. ДМА все равно инитится. Т.к. пакет из сетевухи ложится в память, и потом уже оттуда передается ядру. Если он будет ложиться не в память, а в кеш - это потенциально ускорит форвардинг. Вставить ник Quote
nuclearcat Posted September 13, 2012 Posted September 13, 2012 Это уже I/OAT DCA, нужно чтоб и карта поддерживала. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.