~AreEnn
~R4SAS
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Guest18377
HackerMan
KabaOS
Most2
Nausicaa
Ruskoye_911
Trusishka
Vort
`
acetone_
anon3
b3t4f4c3
mittwerk
nemiga
not_bob_afk
plap
poriori_
profetikla
segfault
soos
teeth
tensor
un
weko_
whothefuckami
onon
Я так попробовал, с этим алгоритмом уже окно можно до 4096 увеличивать
onon
Тогда можно через 3+3 пару мегабайт гонять
onon
Если повезёт с туннелями
orignal
я попробую
orignal
как работает
onon
И да, rng () я не осилил, оставил rand ()
orignal
не срочно
orignal
я потом переделаю
onon
Угу
orignal
onon тебя на i2pd_ru требуют
orignal
выразить тебе благодарность за скорости i2p
onon
Это где
orignal
здесь канал #i2pd_ru
orignal
с мостом в телегу
onon
You must have a registered nick (+r) to talk on this channel (#i2pd_ru)
orignal
плохо
onon
На #ru кому нужно меня найдут
orignal
так зарегайся
orignal
ты не понимаещшь
orignal
там люди с телеги
onon
А, в телегу
orignal
а мост только там
orignal
а что мешает зарегаться? /msg nickserv register <пароль>
onon
Это нужно пароль придумать
orignal
утилита pwgen
orignal
залил
onon
А проверял хоть, как работает?
orignal
да
orignal
работает хорошо
orignal
пробовал ютуб гонять минут 5
onon
Ну норм тогда
onon
Ещё несколько хинтов, для собственного пользования. PREV_SPEED_KEEP_TIME_COEFF можно ставить 0,3 - 0,5 И MIN_WINDOW_SIZE тоже поднять до 3-6
onon
Ну и MAX_WINDOW_SIZE = 4096;
onon
Тогда меньше тормозить будет, быстрее разгоняться и максимальная скорость выше
orignal
нуу все постепенно
onon
Это если себе сервис настраивать будешь
onon
Ещё можно попробовать loss-based отключить вообще
onon
Он сильно снижает скорость на некоторых туннелях
onon
Но это всё тестировать нужно
orignal
даже и тем что счас народ доволен
orignal
прчием на многих каналах
orignal
этот не единственный
onon
Нет, вот то что было до этого - то не очень хорощо
onon
Вот последнее - сильно лучше и стабильнее
onon
И меньше перегружает промежуточные узлы
orignal
так и до этого народ доволен
onon
Это они может про 2.53.1 ?
orignal
конечно
orignal
транк мало кто собирает
onon
Так они ещё слаще морковки ничего считай не пробовали
orignal
ну типа да
orignal
я знаю что в транке все быстрее
orignal
но релиз делать пока рано
onon
Да и не горит вроде
orignal
почему на разных сторонах у одного и того же стрима так RTT отличается?
orignal
на одной 600 на другой 4000
onon
Потому что на клиенте он считается только один раз
onon
А на сервере пересчитывается на каждый акк
onon
Для разных туннелей и при перегрузке, естественно растет
orignal
а если я с клиента начну заливать больщой файл на сервер?
onon
Пересчитается
onon
На ирке с двух сторон пересчитывается
orignal
понял это из-за ассимметрии трафика
onon
Там двухсторонняя связь
onon
Я сейчас на последней версии loss выключил, через 12 хопов 1,5 мегабайта протащил
orignal
неплохо
onon
Нужно будет попробовать bbr сделать
onon
Он на loss вообще не смотрит
segfault
orignal: >новые фичи от 17 например при слияние двух сетов явно быстрее чем это делть поэлементно как в 11
segfault
а как это сделать быстрее? и там и там по дереву проходиться.
`
> я знаю что в транке все быстрее
`
Первое правило ш2зв - транк всегда быстрее.
segfault
разве что итерироваться можно не по порядку, а по строению дерева
segfault
есть методы lower_bound и upper_bound ещё из c++98, с помощью них и std::queue можно написать слияние std::set с поиском в ширину
segfault
это будет функция строчек 10
segfault
не понятно, зачем ради этого тащить c++17
Vort
"<~orignal> понял это из-за ассимметрии трафика" - стоит задуматься о подмешивании в стримы недавно добавленных RTT с уровня сессии
orignal
segfault а это не моего ума дело
orignal
пусть разработчики либы думают
orignal
Vort то есть пинги?
segfault
orignal: будет либа хотеть coroutine в качестве аргумента, дальше что?
orignal
тогда будем смотреть какая нам с этого выгода
Vort
"<~orignal> Vort то есть пинги?" ну да. я так понимаю с каждого ответа на пинг можно семпл RTT извлечь
orignal
не всегда та сторона может отвечать
orignal
но в общем да
Vort
не будет отвечать - не будет семпла
Vort
хотя я предполагал, что на уровне сессии всегда должен быть ответ
Vort
вот про то что на уровне стримов может не быть ответа - это я помню
Vort
разве что если узел в оффлайн ушёл
orignal
будет если трафик идет
orignal
сессия же ничего сама не отправляет
Vort
так какой тогда минимум данных? лизсеты?
orignal
то есть?
Vort
вот допустим для случая клиента-слушателя радио
orignal
ну клиент же аки посылает
Vort
окей, понятно
Vort
если будет приём, то будет и отправка, верно?
orignal
значит там будут данные сесии отсылаться
orignal
да
Vort
а если нет ни того ни другого, то об RTT говорить смысла мало
orignal
но с этой стороны считать RTT так себе занятие
orignal
между отправкой акка на предудщий и отравкой следующего
Vort
почему "так себе"? частота ack`ов от правильного значения RTT зависит
Vort
ну и косметический эффект тоже важен, хоть и не главный, понятно - чтобы юзера не пугать нереальными значениями RTT в консоли
orignal
логично
orignal
ну просто такой замер будет неприваильным
orignal
а вот пинг да на него должен отвечать сразу
orignal
но я не помню сделаны ли они у нас внутри стрима или только отдельно
Vort
ack+пинг спровоцирует какой-то ответ, так что ли?
Vort
я просто плохо понимаю
orignal
ты послал пинг
orignal
та сторона должна немедленно отправить понг
Vort
речь о вот этом механизме, верно? github.com/PurpleI2P/i2pd/commit/d47ae3012a80867996a289deae703925dc3763d5
orignal
но как я сказал не уверен что пинги вгнутри стрима релизхованы
orignal
да оно самое
orignal
можно для m_AckRequestMsgID сохранять время
Vort
я об этом и говорю
Vort
и спускать на уровень стримов как-то
Vort
когда ответ приходит
orignal
session->GetRtt из стримов вызывать
orignal
спусти на уровень стримов не выйдет
Vort
как-нибудь протащить полученные на уровне сессиии данные имею в виду
Vort
а как конкретно - этого я как раз не знаю
Vort
можно сохранять RTT в переменную, да. но надо ещё и время семпла сохранять
Vort
чтобы дважды один и тот же семпл не подмешивать
orignal
ну это само собой
orignal
я то это пока там сделал упрощенно для I2CP чтобы значит что сессия висит
orignal
так что решили с mingw? переключаем на 20?
Vort
gcc то есть? я им вообще не пользуюсь
Vort
а для clang вроде уже разобрались
Vort
кого ещё спросить - не знаю
orignal
ну да
Vort
мне, кстати, кажется, что gcc под винду может начать так же фейлиться, как и clang
orignal
R4SAS -а только
Vort
там же фейл из-за либы, а не из-за языка
orignal
ну пока не фейлится
orignal
но я проверю
orignal
вопрос то в другом
Vort
кстати почему ты под своей учёткой тесты на гитхабе не делаешь?
orignal
все ли mingw поддерживают 20
orignal
влом как обычно
Vort
сборка же и под учёткой настроена
Vort
все ли... msys2 же теперь только на ночных сборках работает
Vort
короч зависит от даты сборки :))
Vort
тут больше вопрос в том, кому оно нафиг надо
Vort
это же не линукс с традицией сборки из исходников
Vort
юзер обыкновенный стащит бинарник и всё
Vort
для более продвинутых юзеров, у которых есть учётка на гитхабе, есть скачка бинарников из Actions
orignal
ладно спросим R4SAS -а
Vort
ага
orignal
если у него нет каких то проблем со сборкой под XP то сделаем
Vort
"у него" локально то есть?
Vort
просто через Actions норм всё
Vort
по крайней мере собирается. надо запустить сейчас будет
Vort
сейчас сделаю
Vort
нормально под XP 2.53.1-48-g604bdf31 запустился
orignal
с 20?
Vort
который с actions
Vort
я не помню, как там точно сборка настроена
Vort
можешь сказать, где что менять надо - я закоммичу в свой форк и гляну на сборку
orignal
Makefile.mingw
orignal
там параметр
onon
Что-то дрозд мне +v зажал
onon
Я ему написал, а он игнорит
orignal
счас скажу
onon
to anyone requesting voice with the request "gimme voice too", you'll need to do better.
onon
Ну и идёт он в жопу
orignal
onon а чего не зарегаешься?
onon
Да вроде зареган onon_
orignal
нет
orignal
не показывает что ты заргеан
orignal
там точно также
onon
NickServ: (notice) You are now identified for onon_
onon
Это не значит, что я зареган?
orignal
вот теперь зареган
onon
Короче хреново ваша система настроена
orignal
почему наша?
orignal
наша это вот эта
Vort
надо же автоматом команду отправлять
orignal
а то это ихняя
Vort
ну или каждый раз вводить пароль
orignal
и в баунсере можно прописать
orignal
я пока билд для этого недоразумения под названием haiku подкручу
orignal
народ сказал там gcc 13
Vort
странное что-то с кешами происходит при сборке через мою учётку
Vort
Cache not found for input keys: winxp-headers-12.0.0.r247.g121331cff-1
Vort
на результат не повлияет, но ждать придётся долго
orignal
сранно да
Vort
а, кажется, понял. там наверно для каждой ветки свой кеш
Vort
я делаю каждый раз новые ветки и делаются новые кеши
orignal
хочу для ведра выпилить лишние бусты
Vort
про haiku - наверно, проще проверить, как собираться будет, а как - нет
orignal
пусть у них голова болит )))
Vort
чисто по версии можно не угадать из-за различающихся либ
orignal
ну я пока 17 поставил
orignal
он то точно есть
Vort
ок
orignal
а так я этим недоразумением особо заморачиваться не собираюсь
Vort
вроде нормально. на скрине ident замазал, остальное - как есть
Vort
коммит a09e0a5
orignal
ага получается все таки дело в gcc
Vort
это к вопросу проблем с clang ? просто не понял мысли
orignal
ты собрал под виндой чем? шлагом или гнусом?
Vort
гитхаб собрал, а не я
Vort
я взял вот этот бинарь и запустил на XP
orignal
а чем собрал интересно
Vort
MSYSTEM: MINGW32
Vort
по логам сборки можешь перепроверить
orignal
посмотрю
orignal
для шлага я там просто выкинул ту функцию
Vort
короч я на 99% уверен, что этот бинарь сделал GCC
orignal
ну вот я и говорю там функция в либе gcc есть
orignal
а у clang нету
orignal
собрал под ведро без этих бустов либ
orignal
полный порядок
orignal
обновил репу
segfault
orignal: сколько ещё i2pd точно будет собираться c++11?
orignal
а зачем тебе он?
orignal
последней системой с 11 был сентос 7
orignal
который закончился в июне
orignal
можно сколько угодно если объяснишь нафига
segfault
orignal: предпоследний релиз slackware ещё поддерживается
segfault
slackware 14.2
segfault
он 2016 года
orignal
там какой компилятор?
orignal
и нельзя ли обновить?
segfault
gcc-5.3.0
orignal
у меня тоже убунту 16.04 есть
orignal
я туда спокойно gcc8 поставил и все
orignal
пишут что на слаке этом можно 7 установить
orignal
*9
orignal
мне вот интересно какой openssl в этой слакваре
segfault
в slackware нет пакетного менеджера (точнее там есть installpkg - автоматический распаковщик tar.gz архивов и запускатель скрипта внутри, но это сложно сравнивать с apt, dnf и т.п.), а всё что хочется ставится из исходников или slackbuild. slackbuild это просто скрипт, который
segfault
компилирует исходники определённой версии и создаёт tar.gz архив, который может поставить installpkg, но зависимости всё равно надо ставить руками и тоже из исходников
orignal
я знаю как работает слакварб
orignal
но там же есть серии пакетов
orignal
так как там с openssl?
orignal
в 16 ом году был 1.0.2 который давно везде выпилен
segfault
мне кажется современный gcc, который к тому же перешёл на c++ заебаться ставить можно
orignal
более того с ним фейлятся многие сертфикты
segfault
orignal: вот openssl как раз поставить легко
orignal
не понял ты про gcc или про g++ ?
segfault
gcc и g++ это одно и тоже, только с разными опциями по умолчанию
segfault
gcc по умолчанию работает как компилятор c, а g++ как c++, но можно сделать и наоборот
orignal
так я не понял ты реально используешь слакварь или интересуешься теоретически?
segfault
раньше пользовался, сейчас нет
segfault
но как серверный linux он очень неплохой, очень стабильный
`
<segfault> но как серверный linux он очень неплохой, очень стабильный
`
Если попробуешь увидеть современный убунт-сэрвэр, то глаза могут выпасть от крОсОты увиденного
orignal
короче те кому надо поставял gcc9 и соберут
segfault
`: это то говно со systemd и телеметрией?
segfault
и навязанным snap
`
и смузи за каждый час аптайма, ага
Vort
orignal: можешь на человеческом языке объяснить как __cpp_lib_filesystem работает? то ли я туплю, то ли эту систему наркоманы придумывали
segfault
Vort: выглядит как макрос
Vort
чтобы проверить, доступен ли #include <filesystem>, надо проверить макрос, определяемый в #include <filesystem> ?
segfault
нет вроде, он без хедеров должен быть
Vort
en.cppreference.com/w/cpp/feature_test "The following macros are defined if the header <version> or any of the corresponding headers in the table below is included."
Vort
Standard library header <version> (C++20)
segfault
также как __cplusplus позволяет отличить какой компилятор c или c++
Vort
то есть, вариант <version> отпадает
orignal
а x3
orignal
разберемся счас
Vort
ну ты же его для проверки воткнул, вот оно и фейлится
Vort
хотя... я хз вообще почему фейлится. но подозрение у меня на этот макрос упало
Vort
больше там нечему ломаться. разве что __cplusplus
Vort
может, GCC, как и студию, надо носом ткнуть, чтобы версию правильно в макрос засунул?
segfault
ну проверь
segfault
#ifdef __cpp_lib_filesystem
segfault
#error this_macro_exists
segfault
#else
segfault
#error this_macro_not_exists
segfault
#endif
Vort
но маловероятно, думаю
orignal
похоже там такие 20 надо
orignal
с ним все собирается
orignal
фейлится там именно __cpluplus
Vort
что-то не сходится
Vort
когда ставишь c++17, что в __cpluplus оказывается?
orignal
да какая то хрень
orignal
посмотрю дальше
Vort
orignal: ну как я и предполагал
Vort
фейлится из-за __cpp_lib_filesystem
Vort
потому что не сделан #include
orignal
какой?
Vort
то есть, если хочется использовать __cpp_lib_filesystem, то надо вначале проверить версию стандарта, затем включить <filesystem> и потом проверить __cpp_lib_filesystem
orignal
понял
Vort
и если включать <filesystem> не надо... видимо авторам стандарта похеру
orignal
счас починим
orignal
неее так нельзя же
orignal
похоже тут наоброт
orignal
давай проверим
Vort
я просто говорю о том, что проверка может быть нужна без включения файла
Vort
для i2pd можно и включить
Vort
сделали через жопу просто
Vort
я уже проверил. но проверь и ты конечно
Vort
только убери потом включение из cpp файла
Vort
#if (!defined(MAC_OSX) && !TARGET_OS_SIMULATOR && \
Vort
(__cplusplus >= 201703L)) // C++ 17 or higher supporting filesystem
Vort
# include <filesystem>
Vort
# if defined(__cpp_lib_filesystem)
Vort
# define STD_FILESYSTEM 1
Vort
# endif
Vort
#endif
Vort
что-то около этого надо
orignal
счас я уже коммичу
orignal
закоммитили
orignal
и cpp похуй
Vort
по-моему ты сделал наоборот
Vort
на C++ 11 не будет хедера
orignal
да ты прав
orignal
не в то место
orignal
все
Vort
orignal: а вот и ответ пришёл про загадочное преимущество GCC перед clang ))
Vort
GCC просто "избегал" новых фич
Vort
похоже, только Visual Studio полноценно этот clock_cast понимает
Vort
ууу, оказывается там ещё сложнее
Vort
in function `i2p::fs::Exists(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': /usr/include/c++/8/bits/fs_path.h:184: undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()'in function `i2p::fs::Exists(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': /usr/include/c++/8/bits/fs_path.h:184: undefined reference to `std::f
Vort
ilesystem::__cxx11::path::_M_split_cmpts()'in function `i2p::fs::Exists(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
Vort
/usr/include/c++/8/bits/fs_path.h:184: undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()'
Vort
то есть, чисто компиляция прошла успешно, а вот линковка зафейлилась
Vort
видимо, надо специально либу какую-то подсовывать
Vort
винда кстати нормально собралась
orignal
неее это потмоу то там компилятор старый
Vort
так что действительно дело не только в компиляторе, но и в разновидности библиотеки
Vort
раз компилятор названия функций пытается найти, значит он про них знает
orignal
нет
orignal
там не надо чтобы этот макрос вообще срабатывал
Vort
но компилятор же не сказал "нафига ты мне -std=c++17 тычешь, не знаю я такого"
Vort
можно конечно тупо отключить, но подозреваю, что собрать с C++17 там всё-таки можно если постараться
orignal
я лучше откачу
Vort
до поломанной проверки стандарта что ли?
orignal
сделал как раньше и виндовый вернул
orignal
все собралось
orignal
думаем дальше что не так
Vort
я вот что не пойму - неужели новые версии GCC понимают __cpp_lib_filesystem даже без #include ?
Vort
или у тебя и локально никогда эта проверка не срабатывала?
orignal
да они и должны
orignal
а когда include его то gcc9 дает ошибку линковки
orignal
у меня везде нормально
Vort
из-за вот такой херни я только с GUI разрабатываю - там сразу видно - подсвечен код серым или нет
orignal
это какая то бага в mingw
Vort
ты что-то странное говоришь
orignal
почему?
Vort
под винду предпоследний коммит без проблем собрался
orignal
естественно
orignal
потому что ей #include <filesystem> надо
orignal
но из-за него фейлятся старые
orignal
это бага имеено его
Vort
"<~orignal> у меня везде нормально" как проверял?
orignal
убирая из линковки
orignal
на той же bsd
orignal
на лиуксе тоже убирал вручную
Vort
хм
orignal
смотри что нашел
orignal
может в этом все дело
orignal
Blinded message
orignal
какая то путаница идет
Vort
это может касаться фейлов убунты/дебиана
Vort
но не ситуации в целом
orignal
а они x3 откуда берут
orignal
ладно думаем дальше
Vort
я сейчас godbolt тормошу
Vort
короч тут надо разбираться, почему у тебя работало при том, что не должно было
Vort
я подозреваю, что нужный #include мог случайно попасться где-то в цепочке инклюдов
orignal
можно просто написать #eeror
orignal
не могло такого быть
orignal
возможно таки из-за 20
orignal
смотрим дальше
Vort
ну поклацай в списке godbolt`а. хоть 17, хоть 20
Vort
знаешь же где там опции компиляции задаются?
orignal
есть рабочая гипотеза
orignal
все дело в шланге
orignal
bsd и андроид там шланг
Vort
попробуй лучше у себя локально собрать то, что я запихал в godbolt
Vort
а дальше "дело техники" мутировать этот пример в i2pd
Vort
и на каком-то из этапов поведение поменяется
Vort
этот этап и укажет на причину различий
orignal
похоже все ясно
segfault
orignal: i2pd переходит на gnu c++?
orignal
шланг понимает и без #include <filesystem>
orignal
гнус не понимает
orignal
clock_cast вообще кривой
orignal
gcc9 выдает что есть но дает ошибку линковки
orignal
разберемся
segfault
orignal сделай cppcheck src/*.cpp src/*.h src/*.hpp --enable=missingInclude
segfault
--std=c++20
orignal
погоди я разберуюсь
segfault
orignal: cppcheck может помочь это сделать быстрее с большой вероятностью