Кіріспе

New API (одан әрі NAPI деп аталады) - Linux ядросындағы желілік құрылғылар үшін үзілістерді азайту әдістерін пайдалану интерфейсі. Мұндай тәсіл пакеттерді қабылдаудың жалпы шығынын азайтуға бағытталған. Идеясы - кіретін хабарламаларды бірден өңдеуге болатын жеткілікті мөлшерде болғанша кейінге қалдыру.

Мотивация

Желілік драйверді іске асырудың қарапайым әдісі - әр келіп түскен пакет үшін үзіліс сұранысын (IRQ) беру арқылы өзекті үзіп тастау. Алайда IRQ-ға қызмет көрсету процессор ресурстары мен уақыты жағынан қымбатқа түседі. Сондықтан, жоғары жылдамдықты желілерде тікелей іске асыру өте тиімсіз болуы мүмкін, ядроны секундына мыңдаған пакеттермен үнемі үзіп тұрады. Нәтижесінде жүйелердің жалпы өнімділігі мен желілік өткізу қабілеті төмендейді. Сауалнамалау үзіліске негізделген өңдеуге балама болып табылады. Ядро жүйеге кіретін желілік пакеттердің кіруін үзіліссіз мерзімді түрде тексеріп отыра алады, бұл үзілісті өңдеудің үстіртін жояды. Алайда, оптималды дауыс беру жиілігін белгілеу маңызды. Тым жиі жүргізілетін сауалнамалар әлі келмеген кіріс пакеттерін қайта-қайта тексеру арқылы процессор ресурстарын ысырап етеді. Екінші жағынан, сауалнама өте сирек кіретін пакеттерге жүйелік реактивтілікті азайту арқылы кіруді енгізеді және егер кіретін пакеттер буфері өңделместен бұрын толтырылса, ол пакеттерді жоғалтуға әкелуі мүмкін. Компромистік ретінде Linux өзегі әдетте үзіліске ұшыраған режимді қолданады және тек кіретін пакеттер ағыны белгілі бір шектен асқанда ғана дауыс беру режиміне ауысады, бұл желі интерфейсінің "салмағы" деп аталады.

Артықшылықтар

Ауысулар туғызатын жүктеме ядроның ауызша сұрауын қажет еткенмен де азаяды. Пакеттерді қайта тапсыру ықтималдығы төмен, ал тапсырыссыз пакеттерді өңдеу бұдан басқа бөтелке болуы мүмкін. Егер ядро барлық кіріс пакеттерді өңдеуге қабілетсіз болса, оларды тастау үшін ядроға ешқандай жұмыс істеудің қажеті жоқ: олар желілік картаның кіріс сақиналық буферіне жазылады. NAPI-сіз ядроға қызмет көрсетуге уақыт бар-жоғына қарамастан, әрбір кіріс пакетін өңдеуге тура келеді, бұл шабуылға әкеледі.

Тарих

NAPI Алексей Кузнецов, Джамал Хади Салим және Роберт Олссонның үш жылдық еңбегі болды. NAPI-ді қосуға алғашқы күш-жігер қауымның кейбір мүшелері тарапынан қарсылық танытты, алайда Дэвид Миллер NAPI-ді қосуды қамтамасыз ету үшін көп жұмыс істеді. Бұл жобаға қатысуға дейін Уппсала университетінің желісінде көптеген тәжірибелік сынақтар жүргізілді. Шын мәнінде, www. Слю. se NAPI-ге негізделген алғашқы өндірістік ОЖ болды және ол әлі күнге дейін NAPI-ге негізделген Bifrost / Linux маршрутизаторларымен қамтамасыз етіледі. Бұл уақытта PKTgen трафик генераторы да пайда болды. Pktgen кеңінен нақты әлемдегі трафиктен туындамаған NAPI сценарийлерін сынау үшін пайдаланылды.