~AreEnn
~AreEnn_
~R4SAS
~acetone
~orignal
~villain
@onon
&N00B
+Xeha
GFW
Most2
NashaKyxnia
Nikat
Opax
Vort
WebClient0
`
anon
b3t4f4c3
duck
fidoid
grimreaper
iiii
karamba_i2p
nnm
not_bob_afk
osoznayka
poriori
profetikla
qend
r3med1tz
segfault
slfd
soos
spider
taureg
teeth
tensor
un
weko
whothefuckami
woodwose
onon
У меня ничего не поменялось
onon
Он так же запрашивает только когда буфер опустошился
orignal
ну так доавь в лог и разберись почему
onon
Наверное ты забыл колбэк из стрима сделать
onon
Чтобы он постоянно дёргал Recieve ()
onon
А то щас как я понял он делает Recieve (), пишет в буфер стрима, потом снова вызывает Recieve () и делает return потому что буфер полный (мы же его только что заполнили)
orignal
не забыл
orignal
правильно так и делает
onon
А кто тогда его дёргать должен
orignal
идея такая
orignal
мы получили что то с сокета
orignal
пишем в стрим
orignal
в это время снова ждем с сокета
onon
так return же
orignal
if (unsentSize >= I2P_TUNNEL_CONNECTION_BUFFER_SIZE) return; // buffer is full
orignal
вот тут попробуй заменить на
orignal
if (unsentSize >= 2*I2P_TUNNEL_CONNECTION_BUFFER_SIZE) return; // buffer is full
orignal
тогда там гарантированно будет 2 разных буфера
onon
Какое-то ты шаманство предлагаешь
onon
Щас подумаю
onon
Ну он так же двойной размер буфера заполнит и отвалится
orignal
когда буфер полный то Receive вызывается только когда какой то из буферов в очереди отправится
onon
Разве нет?
orignal
отавилится
orignal
но там будут сидеть в очереди 2 буфера
orignal
а не один
onon
А чем отличается от простого увеличения буфера в 2 раза?
orignal
тем что читаешь с сокета ты одинарный размемер
orignal
а не двойной
orignal
и если у тебя заполнился двойной буфер то в очереди и будет 2 буфера
onon
Короче толку ноль
orignal
почеум"?
onon
Задача была читать ровно столько сколько отправилось за раз в стриме
orignal
ну пока это не сделано
orignal
это более сложно
onon
А что из стрима нельзя вызвать Recieve () ?
onon
В функции SendBuffer () после отправки
onon
Да, дёргать будет часто, но там return будет и всё
orignal
можно наверное
orignal
но тогда ведь будет на каждый пакет а оно надо?
onon
На пачку же
onon
Если медленно, то по одному шлёт
orignal
а практически будет на каждый
onon
Если быстро - то пачками
orignal
ну попробуй
orignal
вставь там и посмотри
onon
Я не умею
orignal
расскажешь
orignal
правильно потмоу что там коллбэк
onon
Скажи как написать - я попробую
orignal
так просто там не напишешь
orignal
ты попробуй с 2*I2P_TUNNEL_CONNECTION_BUFFER_SIZE или с 4*I2P_TUNNEL_CONNECTION_BUFFER_SIZE для начала
onon
32*I2P_TUNNEL_CONNECTION_BUFFER_SIZE
orignal
ну вот попробуй
orignal
и размер буфера тогда 4K сделай
orignal
ну че попробовал?
onon
Собираю пока
onon
Вот так уже больше похоже на правду
onon
Значит надо делать буфер размером в 1 пакет и туда количество пакетов писать
onon
А, не
onon
А хотя да
onon
Норм скорость выдаёт
onon
Надо чтобы буфер в стриме был 64кб
onon
Чтобы скорость 5 Мб/с была
orignal
на давай какой размер буфера и множитель ставить
onon
Ну я б в размер MTU стримовского поставил
onon
Но ты не хочешь по пакету читать...
onon
Я хз почему
orignal
а множитель какой?
orignal
там нет причины
orignal
просто так было сделано психом наверное
onon
Ну примерно чтоб 50-60 кб был общий
orignal
8 по 8K нормально?
onon
Потому что за 1 раз на скорости 5 мбайт/с он берёт большую пачку
onon
Щас попробую объяснить
onon
Смотри если у тебя сервис не локальный и ты его в итупи раздаёшь и он чувствителен к задержкам
onon
Тогда тебе важно чтобы СС на паре клир сокетов работал нормально, если там bbr например
onon
Так вот, если ты будешь вычитывать из буфера большими кусками, то CC не сможет нормально работать
orignal
ближе к конкретике
orignal
может тогда 16*4K?
onon
Потому что он отправляет по сети блок и ждёт
onon
И только когда вычитал буфер, тогда шлёт акк
onon
И сервис шлёт новую порцию данных
onon
А если ты вычитываешь малыми порциями, то на сервис идут акки равномерно
onon
И bbr так высчитывает RTT и начинает слать пакеты с той скоростью, с которой ты их вычитываешь
onon
И тогда общий RTT от сервиса до клиента через i2p будет минимальный
orignal
ну короче делаем 16*4K?
onon
Давай хоть так
orignal
или лучше 8*8K?
onon
Ну с локальным сервисом будет работать и так и так
onon
А с удалённым нужно тестировать
onon
Поэтому делай как считаешь лучше
onon
Потом можно будет поменять
orignal
счас переделаю