IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2024/08/30
~R4SAS
~orignal
~villain
@onon
&N00B
+Xeha
+r00tobo
+relaybot
+whothefuckami
AreEnn
HackerMan
KabaOS
Leastr
Most2
Nausicaa
Vort
WayBest
`
acetone
anon2
b3t4f4c3
karamba_i2p
nemiga
not_bob
osoznayka
poriori
profetikla
segfault
soos
teeth
tolik
un
unwr
weko
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 пробовал ютуб гонять минут 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 значит там будут данные сесии отсылаться
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 мне вот интересно какой 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 #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 может помочь это сделать быстрее с большой вероятностью