История одной оптимизации.

????? ? ??? ???? ?????? ??????? ??? ??????? ?????. ????, ??? ??????????, ?? ?????? ??????? ??????? ????????. ??????? ??? ?????????-????????? ?????. ??????? ????. ?? ???? ???? ???????, ??? tear-down ??? ? ??????? ??????????? ???????, ?????? ??????????? ???????????? ?? ???????, ?????? hardcoded ?????????. ? ?????, ??????? ???????, ??? ?? ?????? ?? ????????

??????? ?? ??????????? ?????????, ????????????? ???????? TCP/IP ??????????. ?????????? ???????? 3 MByte/sec ?? ???? ??????????, ????? 12 MByte/sec – ??????? ?????????? ??????????? ?????????? ???????????? ??????????. ???????? ??? 1 Gbit/sec ??????????.

??????? ???????? CPU. 100%, ?? ??????? ?????? 90% - DPC. ?.?. ??????? ?? ?????????? ?? ????????. ??, ??????, ????????? ? ??? ??????? ??????????, ?? ??? ????? ????? ?????????????. ??????? ????????? Interrupt Moderation, ?.?. ???????? ?????????????? ???????? ????? ???????????? ???, ????? ?? ??????????? ?? ????? 1000 ? ???????. ???????? ???????. ?????? ???????? ?????? ???????????. ??? ????? ???????? ??????? ?????????? ????? ?????????? ???? ???????; ??????????? ? ???????????? ? ?.?. ??????? – ???????? ???? ??????? ?????. ??? ?? ????? ???? ????????? ???????????? ????????? Interrupt Throttling. ??????? DPCs ???? ?? 60% ??? ????????? ??????? ?? ???????? ??????????. ? ?? – ????.

?? ???? ?????????, ??? ???????? ?????????? ??????????? ???? ??????? ?? ??????? ????? ?????? ?? ??????. ??????? ??????????????? ????????? ? ???????. ??????? ????? ???????????? ???? ??? ????, ??????-?? ???? ?? ??, ????? ???????????? ? NDIS, ? ?? ? ?????????. ?? ???? ???? ??????? ??? ? ?????? ???????? ??????????? ???? ?????????. ??? ???????? ? ????, ??? ??? ???????????? ????????, ??? ??????? – ??? ??????? ?????????, TCP/IP ?????????? «???????????» (?? ????????? ??????? ?????). ?????? ?????? ?????? ????????????? ??? ?????? ? ??????? Network Monitor, ??? ?? ??????????. ? ????? ??????, ??? (???????? ??????????? ?? ????? ????) ??? ?????? ? ?????????????. ????????????? ??? ?????? ??? ?????? ? ?????????? «??? ??? ?? ??????????? ???? ???????, ??? ????? ???????????». ?????????? ??????????? ??????? ?? 17 MByte/sec ??? ?????? ???????? ??????????.

???????? ?????, ??? ???? ?????? ? ????????? TCP/IP. ???? ????????, ??? ??? ??????? ?????????? ????? ???????????????? ??????? ???? ??????? ??????. ????? ?? ??????? ??, ?? ??????? ????? ????????????? ????????? ????????? ? ????????, ?? ???????? (? ?????? - ??????? ????? ???? ?????, ??? ???? ?? ???????), ??? ???????? ???? ?? ???????? ???????. ?????????? ?????? ?????????? NDIS-? ?? ? ??? ???????, ? ????? ??? ???? ???????. ? ????? ?????? TCP/IP ??? ????????? ??? ?????? ???????. ??????? ????????? ????????? ?????????? ????????? ???????? «??????????» ???????, ????????? ???????, ??? ?????, ??????? ? ????? ?????? TCP ???? ?? ????????. ?????? ???????? ??????? ??????? ? ?????? (??? ??????? ? ????), ???????? ?????? ?????????? ??????? ????? 30 MByte/sec.

???? ? ??? ?????? ???????? checksum offloading ? ???? ?????? ???????? ?????, ?? ??????? ?????? ???? ?? ???????. :-)

Cross-posted from blog.not-a-kernel-guy.com.