Size: a a a

2021 December 09

DL

Dmitry Luhtionov in freebsd_ru
ты ж не забывай, что это чудо не умеет копировать из памяти в память, и 6 раз копируется из одного участка памяти в регистр проца, и 6 раз обратно
источник

AF

Alexander Fedorov in freebsd_ru
Я не знаю чё там в ядре, но компилятор умеет оптимизировать memcpy.
источник

AF

Alexander Fedorov in freebsd_ru
Для ARM m3/4 так точно
источник

DL

Dmitry Luhtionov in freebsd_ru
это называется memcpy, встроенный в компилятор, и это то, о чем я писал выше: *dst = *src
источник

DL

Dmitry Luhtionov in freebsd_ru
вот это выражение оптимизируется на уровне компилятора
источник

AF

Alexander Fedorov in freebsd_ru
Так а в каком конкретно участке кода?
источник

DL

Dmitry Luhtionov in freebsd_ru
глянь кусок работы с arp, например
источник

AF

Alexander Fedorov in freebsd_ru
Там нет смысла что-то оптимизировать
источник

DL

Dmitry Luhtionov in freebsd_ru
поясни
источник

DL

Dmitry Luhtionov in freebsd_ru
у 100% исходящих пакетов, ну за исключением мультикаста, меняется MAC адрес назначения
источник

AF

Alexander Fedorov in freebsd_ru
У тебя миллиарды ARP запросов? Или *dst = *src на фоне остального кода делает погоду?
источник

DL

Dmitry Luhtionov in freebsd_ru
ARP создает таблицу IP-MAC
источник

AF

Alexander Fedorov in freebsd_ru
А причём тут копирование адресов?
источник

DL

Dmitry Luhtionov in freebsd_ru
в таблице ARP ищется нужный IP, и MAC адрес, соответсвующий этому IP копируется в исходящий пакет
источник

DL

Dmitry Luhtionov in freebsd_ru
глянь в if_ether.c функции arpresolve и arpresolve_full
источник

DL

Dmitry Luhtionov in freebsd_ru
я понимаю, что большую часть времени там занимает поиск по таблице, но ведь можно еще убыстрить эти операции
источник

DL

Dmitry Luhtionov in freebsd_ru
la = lla_lookup(LLTABLE(ifp), plle ? LLE_EXCLUSIVE : LLE_UNLOCKED, dst);
 if (la != NULL && (la->r_flags & RLLE_VALID) != 0) {
   /* Entry found, let's copy lle info */
   bcopy(la->r_linkdata, desten, la->r_hdrlen);
источник

AF

Alexander Fedorov in freebsd_ru
Да это микрооптимизации, они совсем не инетересны.
Другое дело ты, помню, говорил про Netgraph и локи. Вот это более интересная тема, тем более. что @facepalm_tar_gz  в чате.
источник
2021 December 10

AC

Alexander Chernikov in freebsd_ru
не мак, а 14 байт реврайта
источник

AC

Alexander Chernikov in freebsd_ru
арпресолвз IIRc в форвардинге занимает 7%, но копирование кажется почти нисколько
источник