vacikL 0 10 января, 2017 Опубликовано 10 января, 2017 · Жалоба Приветствую. Вопрос к тем кто работает с 10G. Возникла задача зарегистрировать данные на компьютере(Windows). Скорость выдачи данных до 6 Гбит. Сетевая карта Intel520. Попробовали принимать через "PSSDK", происходит потеря пакетов. Подскажите кто что может. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 10 января, 2017 Опубликовано 10 января, 2017 · Жалоба Приветствую! ... Возникла задача зарегистрировать данные на компьютере(Windows). Скорость выдачи данных до 6 Гбит. Сетевая карта Intel520. Попробовали принимать через "PSSDK", происходит потеря пакетов. ... А протокол какой требуется? Мы под Win7 делали прием потока 2 x 10G (2.2 Gbyte/s) через обычный UDP стек. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vacikL 0 10 января, 2017 Опубликовано 10 января, 2017 · Жалоба Принимаем пакеты UDP. Если не секрет, через что принимали. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 10 января, 2017 Опубликовано 10 января, 2017 · Жалоба Приветствую! Принимаем пакеты UDP. Если не секрет, через что принимали. "через обычный UDP стек" виндовый. Ну и родные драйвера для сетевой карточки. Точка-точка соединения FPGA - PC. Сетевая тоже на чипе Intel но тип сейчас не помню (это года 4 назад было). Для сетевой включен режим flow control, jumbo-frame 4-8K. Софт свой - по заголовкам пакетов собирал потоки с 2-4 линков в один с проверкой целостности. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vacikL 0 11 января, 2017 Опубликовано 11 января, 2017 · Жалоба Добрый день! Попробовали сделать через сокет, потери пакетов возросли. Может вспомните какие-нибудь нюансы. Или кто что еще подскажет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Кнкн 5 11 января, 2017 Опубликовано 11 января, 2017 · Жалоба Добрый день! Попробовали сделать через сокет, потери пакетов возросли. Может вспомните какие-нибудь нюансы. Или кто что еще подскажет. Буфер для сокета может быть нужно увеличить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vacikL 0 14 января, 2017 Опубликовано 14 января, 2017 · Жалоба Сделали RX буфер для сокета в 64МБ. Объем ошибок резко сократился. Наблюдался момент прихода пакетов не подряд. Сделали буфер задержки. Ошибки теперь наблюдаются редко, но все же они есть. Обратил внимание, что они появляются когда: - происходит деинсталляция программ в системе - работала виртуальная машина - был входящий udp-траффик ~100Мб/c на карту 1G (может просто совпадение). Есть ли способ улучшить прием? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Des333 0 14 января, 2017 Опубликовано 14 января, 2017 · Жалоба Есть ли способ улучшить прием? Перейти на Linux (если это возможно) и использовать DPDK. Можете почитать советы из статьи Но она, опять же, под Linux. Я не в курсе, если ли в Windows похожие "крутилки". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mikeT 0 16 января, 2017 Опубликовано 16 января, 2017 · Жалоба Есть ли способ улучшить прием? Попробуйте использовать WSASocket и все что с ним связано - это если делать под Windows. Суть в том, что можно организовать прием пачки пакетов как-бы "автоматически", т.е. без "дергания" механизмов синхронизации уровня пользователя. Ну и естественно, организуете свою буферизацию как бы вторым слоем. У нас стояла задача выжать предельную производительность при приеме 1Г потока с нашего железа на комп под виндой. Сначала я написал пробной тест с использованием обычных сокетов, но были проблемы с потерей пакетов, переупорядочиванием (даже на локал-хосте!) и, самое главное, загрузкой процессора. У нас пакеты не превышали обычную длину, т.е. 1472 байта. Был организован пул буферов (количество буферов естественно настраивается, но из практики их количество = 64-256). На каждый принятый пакет формируется сообщение (вроде бы там семафор используется, но это уже детали реализации) и управление передается следующему слою софта (следующему потоку). С WSA сокетами получается двухуровневая буферизация - на уровне WSA организуется пул "мега"-буферов каждый на 64 пакета (это вроде максимум, что WSA может позволить) и ОС дергается уже в 64 раза реже, чем при использовании обычных сокетов. Ну а далее все тоже самое - организуется еще один слой - ряд буферов, как и в первом случае, но теперь это уже буфера 64*1472 (все параметры есс-но задаются как минимум на уровне компайл-тайм), их количество у нас порядка 128. Скорость в установившемся режиме (гоняли сутками) удалось получить на уровне 99.7% или 99.8% от теоретического предела для 1Г. Стабильность высокая. Загрузка процессора небольшая. При грамотно написанном софте можно распараллелить задачу - как минимум аффиннити процессорам задать, но нам и этого не потребовалось. 100% исключить пропадания пакетов нельзя, да и сам UDP это не гарантирует. P.S. А вообще, мне тоже многие знакомы профи сказали "переходи на Линукс" :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vacikL 0 16 января, 2017 Опубликовано 16 января, 2017 · Жалоба //на уровне WSA организуется пул "мега"-буферов каждый на 64 пакета это происходит автоматически при использовании WSA? Попробовал. Ошибки появляются в процессе загрузки ОС на VirtualBox. Видимо что-то дергает он у хостовой ОС. Это нормально? А загрузка процессора что при использовании WSA, что не WSA, итак была небольшой 1-2%. Размер буффера сокета на прием 256М. Т.е. не кратно длине 1 пакета. Ошибки изредка все же есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mikeT 0 17 января, 2017 Опубликовано 17 января, 2017 · Жалоба //на уровне WSA организуется пул "мега"-буферов каждый на 64 пакета это происходит автоматически при использовании WSA? Вы должны задать это все сами. Там не совсем так просто, но в документации написано все достаточно внятно. Кроме буферов там подцепляются т.н. overlapped events и т.д. Попробовал. Ошибки появляются в процессе загрузки ОС на VirtualBox. Видимо что-то дергает он у хостовой ОС. Это нормально? Насчет этого ничего сказать не могу. Мы работали под виндой чистой. Попробуйте для начала тоже под "чистой" виндой потестить, а иначе вы рискуете бороться с проблемами не связанными собственно с сетью и сокетами (вашей реализацией), а связанными с реализацией сторонних фирм. Размер буффера сокета на прием 256М. Т.е. не кратно длине 1 пакета. Размер этого буфера влияет конечно, но после какого-то значения (скажем 8М по нашему опыту) уже не так сильно Ошибки изредка все же есть. Это нормально, это же UDP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vacikL 0 18 января, 2017 Опубликовано 18 января, 2017 · Жалоба Не могли бы Вы подробнее описать предлагаемый механизм? Пробовал использовать 64 структуры у WSARecv… Не помогло… Во всех структурах оказываются одинаковые данные. По документации ведь WSARecv предназначен для приема только одной датаграммы. В интернете про настройки мера-буферов ничего не нашел… Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mikeT 0 19 января, 2017 Опубликовано 19 января, 2017 · Жалоба Не могли бы Вы подробнее описать предлагаемый механизм? Написал вам в личку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sysmaster 0 19 января, 2017 Опубликовано 19 января, 2017 · Жалоба Обратил внимание, что они появляются когда: - происходит деинсталляция программ в системе - работала виртуальная машина - был входящий udp-траффик ~100Мб/c на карту 1G (может просто совпадение). а это нехорошо если карты настроены по умолчанию [/b]Есть ли способ улучшить прием? Необходимо перевести сетевую карту на разбор пакетов с минимальным участием процессор Смотреть тут1 и тут2 сходить в зоны для разработчиков на сайтах Intel и Microsoft.com или попросить настроить админа. Для минимизация влияния windows попробуйте Netdma У меня в серверах помогает,для максимальной производительности клиенту высылаю REG файл с тюнингом сетевухи. На 10 G тонкий тюнинг весьма помогает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться