IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2022/12/12
~R4SAS
~orignal
~villain
&N00B
+relaybot
Guest7184
Most2_
Nausicaa
Nikat
Opax
Vort
WayBest_
acetone
anon
anontor
banona_
fidoid
grimreaper
itsAMe
karamba_i2p
mauzer
onon
overflow
poriori
profetikla
qend
r00tobo
soos
teeth
tensor_
typhoon
uis
un
weko
whothefuckami
колдобина
колдырь
orignal Uptime: 20 minutes, 2 seconds
orignal Network status: Proxy
orignal Network status v6: Proxy
orignal NTCP2 и SSU2
R4SAS orignal: да вроде
R4SAS там не добавлял. а надо?
orignal ну смотри я стал делать ресид чисто с ipv6 и хрен там
orignal скажи чего там с бидом хрюши поломалось?
orignal сегодня кто то жаловался что не пашет
R4SAS не знаю, первый раз слышу
R4SAS сейчас ipv6 добавлю на pl
orignal <tdrom> Билды для XP с Github Actions, начиная с 8db352b "recognize symmetric NAT from peer test msg 7", не запускаются, потому что безуспешно ищут GetTickCount64 в Kernel22.dll
R4SAS ну значит опять сломалось
R4SAS посмотрю
orignal думаю скоро придется новый релиз делать
orignal народ жалуется на падения под нагрузкой
R4SAS не проблема, главное надо вынести фиксы на сам релиз
orignal в смысле вынести?
R4SAS ты собираешься делать релиз с вырезанным ssu?
orignal конечно
R4SAS или же делать минор
orignal из транка
orignal нет 2.45
R4SAS ок
orignal там счас много изменений
R4SAS всё, добавил
orignal че добавил?
R4SAS ipv6 на reseed-pl
R4SAS надо на reseed-fr тоже добавить
orignal понял
orignal на все ресиды надо
R4SAS усё
R4SAS нормально так
orignal это что?
R4SAS это вывод nmon - статы по ресурсам машины
orignal и о чем говорит?
R4SAS крч это s5, где ирка сейчас. это обычная vps, которая вообще не дедик
R4SAS но смотри как разогналось
R4SAS ~ 7 МБ/с i2pd дает
orignal ну так
orignal счас сеть резко просралась везде
R4SAS s5#1
R4SAS Uptime: 14 days, 15 hours, 50 minutes, 23 seconds
R4SAS Network status: OK
R4SAS Tunnel creation success rate: 39%
R4SAS Received: 1989.87 GiB (3075.74 KiB/s)
R4SAS Sent: 2067.93 GiB (3155.16 KiB/s)
R4SAS Transit: 1965.19 GiB (3095.33 KiB/s)
R4SAS Routers: 6275 Floodfills: 1618 LeaseSets: 0
R4SAS Client Tunnels: 47 Transit Tunnels: 3454
orignal ой бля
R4SAS s5#2
R4SAS Uptime: 14 days, 16 hours, 20 minutes, 46 seconds
R4SAS Network status: OK
R4SAS Tunnel creation success rate: 55%
R4SAS Received: 170.94 GiB (117.96 KiB/s)
R4SAS Sent: 203.30 GiB (106.03 KiB/s)
R4SAS Transit: 154.78 GiB (108.08 KiB/s)
R4SAS Routers: 4541 Floodfills: 1508 LeaseSets: 0
R4SAS Client Tunnels: 45 Transit Tunnels: 1252
R4SAS s5#3
R4SAS Uptime: 14 days, 16 hours, 21 minutes, 40 seconds
R4SAS Network status: OK
R4SAS Tunnel creation success rate: 57%
R4SAS Received: 167.44 GiB (124.41 KiB/s)
orignal а вот тут непрнятно
R4SAS Sent: 200.43 GiB (175.91 KiB/s)
R4SAS Transit: 155.11 GiB (107.72 KiB/s)
R4SAS Routers: 4444 Floodfills: 1468 LeaseSets: 0
R4SAS Client Tunnels: 25 Transit Tunnels: 1050
R4SAS тут лимит на туннели стоит
orignal понял
R4SAS s5#4
R4SAS Uptime: 15 days, 4 hours, 59 minutes, 0 seconds
R4SAS Network status: OK
R4SAS Tunnel creation success rate: 59%
R4SAS Received: 1556.24 GiB (1108.51 KiB/s)
R4SAS Sent: 1614.26 GiB (1157.73 KiB/s)
R4SAS Transit: 1530.32 GiB (1096.55 KiB/s)
R4SAS Routers: 5653 Floodfills: 1574 LeaseSets: 0
R4SAS Client Tunnels: 47 Transit Tunnels: 2546
R4SAS просто 2 и 3 обслуживают рег, так что не нужны мне там такие объемы. меньше, но стабильнее
R4SAS там кстати и флаги соответствующие стоят: OR
R4SAS так что и не должно взлетать)
orignal логично
orignal я наконец хочу взяться за список адресов роутера в видде массаива с фиксированной позицией
R4SAS каких адресов?
R4SAS netdb?
orignal которые в RouterInfo сидят
orignal счас они просто в вектор как попало вставляются
R4SAS а, есть такое
orignal а тут сторого массив из 5 элементов
R4SAS хочешь сделать на базе этого приоритет?
orignal которые могут быть нулевыми
orignal нет хочу без лишнего поиска
R4SAS хе
R4SAS все равно придется поиском работать
orignal нужен адрес данного типа
orignal прямое обращение к элементу массива
orignal зачем поиск?
R4SAS не забывай что сеть большая, и не обновляется по шелчку пальцами
orignal и что?
R4SAS всё равно же будет прилетать беспорядочно
orignal так это в ReadFromStream
orignal будет вставяться в нужное место и все
R4SAS или ты говоришь о том как хранить в процессе работы?
R4SAS тогда да
orignal в процессе работы конечно
R4SAS и локально записывать будешь упорядоченно?
orignal ну да
orignal снчала NTCP2 потом SSU2 потом ygg
R4SAS orignal: про последний коммит - такое себе
R4SAS GetTunnelCreationSuccessRate () отдает рейт за всё время работы
R4SAS соответственно если роутер долго проработал, то процент очень долго падать будет скорее всего
orignal да я знаю
orignal но это лучше чем ничего
orignal и кстати нет
orignal если нет сети то падает быстро
orignal потому что будут постоянные попытки построить
R4SAS надо как то реализовать мониторилку за периоды
R4SAS как раз для i2pcontrol нужно
orignal надо
orignal я займусь
R4SAS если случайно 50 баксов не найдешь)))
R4SAS погодные условия позволяют такую роскошь )
orignal ну я ж не былинник никуда не собираюсь ))
R4SAS это я так понимаю надо как то дополнительно писать в какой то буффер
R4SAS либо... переделать счетчики в map, которые будут хранить еще timestamp
orignal нее
R4SAS и по нему потом отфильтровывать
orignal надо просто хранить время последнего обновления
R4SAS обновления чего?
R4SAS рейта?
orignal статистики по построению тоннелей
R4SAS так надо знать тогда на сколько изменились значения за такой то период
R4SAS надо же получать информацию за 5, 15, 60 минут от текущего времени
orignal за послелнюю минуту достаточно
orignal ну или пару
R4SAS ну, это конкретно для решения проблемы с постройкой туннелей, а для статы - нет
orignal погоди мы же как то вроде считаем в I2PControl
R4SAS TunnelsSuccessRateHandler?
R4SAS i2p::tunnel::tunnels.GetTunnelCreationSuccessRate ()
orignal там где значния меняются надо
R4SAS у нас нет такого
orignal itoopie же как то показывает ее
R4SAS у нас не показывает вроде как
orignal ну вот надо будет делать
R4SAS в доках идет i2p.router.net.bw.inbound/outbound для 1 и 15 секунд
orignal а мы что выдаем на это?
R4SAS у нас только 1s
R4SAS i2p::transport::transports.GetInBandwidth ()
R4SAS i2p::transport::transports.GetOutBandwidth ()
R4SAS который считается за 50 секунд, лол
orignal короче все это надо по уму переделывать
R4SAS я вижу как оно сделано
R4SAS void Transports::HandlePeerCleanupTimer
R4SAS Blinded message
R4SAS UpdateBandwidth (); // TODO: use separate timer(s) for it
R4SAS надо каждую секунду вызывать
orignal как обычно )))
orignal нууу там надо продумать чтобы не создавать нагузку зря
R4SAS какая нагрузка то?
R4SAS посчитать 3 числа
orignal если часто вызывать
R4SAS m_InBandwidth = (m_TotalReceivedBytes - m_LastInBandwidthUpdateBytes)*1000/delta; // per second
R4SAS вот 3 такого типа расчета
R4SAS крипта больше нагружает
orignal возможно
R4SAS иhttps://github.com/PurpleI2P/i2pd/blob/openssl/libi2pd/Transports.cpp#L360
orignal ну можно
R4SAS сюда же добавить еще три uint32_t
R4SAS и дополнительный if чтобы обновлять их каждые 15 секунд
orignal так и надо сделать
R4SAS а таймер на ежесекундное выполнение куда пихать?
orignal вот в этом и проблема что надо обходиться без него
orignal если обновления реже чем секунда то брать старое значние
orignal то есть не таймер заводить а только пассивно время замерять
R4SAS тогда это вообще не ежесекундная скорость
R4SAS это средняя за N секдунд получается
orignal ну точно нам не важна
orignal только приблизительная
R4SAS нене, погоди
R4SAS это то же самое ты получишь
R4SAS ты не можешь получить информацию за 15 секунд опрашивая каждую минуту
R4SAS задача то стоит получать скорость за период в 1 и 15 секунд
R4SAS среднюю
orignal так я не опрашиваю я же вызываю этот апдейт когда приходят новые данные
orignal а они могут идти чаще чем раз в секунду
orignal короче тут надо думать и как обойтись без таймера
R4SAS HandlePeerCleanupTimer вызывается разве не раз в 50 секунд?
R4SAS и да, почему код находится внутри проверки на ошибку?
R4SAS хотя ладно, там ясно почему
R4SAS но все равно обновление надо выносить оттуда
orignal я не помнб если честно как оно сделано
orignal надо смотреть
orignal давно это былр
R4SAS m_PeerCleanupTimer->expires_from_now (boost::posix_time::seconds(5 * SESSION_CREATION_TIMEOUT));
R4SAS т.е. на старте оно через 5 * 15 = 75 секунд обновляет таймер?
R4SAS ой, не таймер, а скорость
R4SAS а далее каждые 45 секунд
orignal ну понятно
orignal ладно я ушел
R4SAS boost::asio::basic_waitable_timer<std::chrono::steady_clock> is not a file descriptor.
R4SAS хм?
Vort я бы ещё подумал о разнице между средним за секунду и средним каждую секунду. это разные значения
Vort если нужно среднее за секунду, то это тоже фильтр получается, как в случае с RTT
Vort по-моему, без буфера, хранящего усредняемые значения, такое не сделать
R4SAS ну, это уже зависит от того что нужно получить
Vort ему с одной стороны данные добавляются, с другой - удаляются
R4SAS но есть ли смысл от этого
Vort да, я не смотрел, что там по стандарту
R4SAS можно взять 15 метрик по секунде и поделить их на 15
R4SAS но смысл, если можно записать разницу объемов, и поделить её на те же 15 секунд
Vort прошлое значение ведь скачком обновляется?
Vort тут или будут данные хоть и за 15 сек, но не совсем последение или не за 15 сек, а меньше
Vort или я не правильно понимаю идею (вполне вероятно)
R4SAS сейчас оно работает так:
R4SAS запускается таймер, берутся данные
R4SAS засекается время выполнения
R4SAS потом опять по таймеру запускается, вычитаются значения из ранее записанных и делятся на прошедшее время
R4SAS т.е. получаем среднее деля объем в байтах на время
Vort ну так запрос на получение данных может в любое время прийти
R4SAS да, может
R4SAS почти в любое
R4SAS там конкретно каждые 45 секунд
Vort и ответ в таком случае может быть устаревшим, допустим, на 14 секунд
R4SAS поэтому там хранится ts
R4SAS и берут его для того чтобы понимать сколько времени прошло
R4SAS но я говорю, это тоже такое себе
R4SAS оно показывает конкретно за 45 секунд среднее время
R4SAS среднюю скорость **
Vort что-то я не понял
Vort речь о томэ, что юзер может по протоколу сделать запрос, так?
Vort типа "дай мне статистику". так?
R4SAS изучай
R4SAS да, может запросить значение за 1 и 15 секунд
R4SAS но это, как я говорил ранее, не дает понимания чего конкретно отдавать
Vort ну так при чём тут каждые 45 секунд? он может хоть 10 запросов в секунду сделать
R4SAS я понял про что ты сейчас хотел спросить
R4SAS не может
R4SAS данные внутри обновляются по таймеру
R4SAS не по каждому запросу из I2PControl
Vort это разные вещи
R4SAS да, оно будет с отставанием, но это пофиг
Vort вот. я об отставании и говорю
Vort и о том, как оно должно быть по документации
R4SAS нет никакого описания этого
R4SAS **i2p.router.net.bw.inbound.15s – [double] The 15 second average inbound bandwidth in Bps.
R4SAS не сказано относительно чего
R4SAS просто среднее
R4SAS было бы сказано что "15 секунд относительно времени вызова", тогда да
Vort Blinded message
R4SAS но это Real Time Data, что точно не про эту фигню
Vort по-моему, написано довольно чётко. но если сделать не идеально, то мало кто заметит (разве что такие, как я :D)
R4SAS uptime относительно времени запуска
R4SAS получение значения таймера отслеживающего время работы
Vort от запуска до момента вызова запроса, как я понимаю
R4SAS да
R4SAS а в i2p.router.net.bw среднее за 1 и 15 секунд
R4SAS просто среднее
Vort ну вот и 15 секунд от момента запроса в прошлое считаются. но. как я сказал, мало кто заметит
R4SAS угу
R4SAS считать при каждом запросе просто глупо
Vort нужно решить, какая точность будет достаточна
Vort среднее за 15 секунд свежестью от 0 до 15 секунд - более-менее норм
Vort если брать кусочками по 1 сек (получим свежесть 0-1сек), так вообще будет незаметно
R4SAS ага
R4SAS если это конкретно врутри следящей софтины делается
Vort ну я имел в виду заметность для юзера, а не нагрузку процессора роутера
Vort ещё можно посмотреть на то, как эти данные используются
Vort если юзер постоянно смотрит на эти значения, то обновление 15 секундного значения скачками будет заметно
Vort можно ещё глянуть для примера как команда uptime в Линуксе работает
Vort там тоже усреднения по нескольким периодам
Vort будет ли значение прыгать или меняться плавно?
Vort там другие периоды, правда - 1, 5 и 15 минут
R4SAS вот так сделал пока что
R4SAS видно как было статично из-за периодичности в 45 секунд, и как стало
weko У меня ssu2 привысил ntcp2
Vort R4SAS: это эффект от корректной реализации односекундного интервала
Vort 15-секундный в itoopie просто игнорируется
Vort использует ли кто-то вообще 15-секундный...
Vort кстати, алгоритм скользящего среднего ресурсы вообще почти не ест. если его делать правильно - с кольцевым буфером и сложением/вычитанием по одному семплу за итерацию
Vort вот эта реализация - она в том числе заменяет тормозное обновление на главной веб интерфейса на односекундное?
Vort это лучше, да не совсем. ждать пока обновится - это плохо, но и терять информацию из-за того, что каждую секунду обновлять страницу не будешь - тоже
Vort ещё важно подумать над тем, как такое изменение повлияет на алгоритм лимитирования скорости
Vort да и вообще, подумать над тем, правильно ли он работает
Vort есть ведь две цели - ограничить максимальную скорость и ограничить среднюю скорость
Vort в Tor, к примеру, для этого есть две настройки - RelayBandwidthRate и RelayBandwidthBurst
weko Burst скорее всего за короткий промежуток типо 1 секунда или меньше, а средняя наверное за минуту или типо того
weko кстати, странно. у меня в последнее время сильно снизилось количество транзита и лиссетов
weko я конечно ещё подожду, аптайма хотя бы в 3 дня
weko но странно это всё, раньше такого не было
weko стоило пожаловаться, как ситцация улучшилась. +-
weko ситуцация*
weko ситуация*
R4SAS Vort: я 15 секундный в морду воткнул
orignal короче я еще не читал чего решили то?
Vort хм. пропустил
Vort а по поводу лимитов что? было норм - осталось норм?
R4SAS каких лимитов?
Vort ну флагов роутера, ограничение полосы
Vort они же тоже от m_InBandwidth и т.д. считаются или нет?
R4SAS ограничение было уже
R4SAS только я не знаю меняет ли это флаг
Vort что значит "было"? я имею в виду, не сломает ли его новый код?
R4SAS а с чего бы?
Vort и вообще, интересно, как оно работало - что-то срабатывало при превышении средней скорости?
R4SAS да, срабатывало... как я знаю
Vort ну оно же было привязано к среднему за 45 секунд, а теперь к среднему за 1 сек? или я опять пропустил что-то?
orignal транзит переставал приниматься
orignal если превышало
Vort превышало среднее? за сколько секунд? 45?
orignal не помню
R4SAS i2p::transport::transports.IsBandwidthExceeded
R4SAS Transports::IsBandwidthExceeded
R4SAS надо кстати переделать на 15s
Vort ну вот я об этом
R4SAS получается при запросе на построение туннеля проверяется текущая скорость
R4SAS тогда это было за 45 секунл
R4SAS если orignal примет этот вариант кода - будет за 15 секунд
Vort ну вот 15 или 45 это не сильно большая разница. а 45 и 1 - уже слишком
orignal 15 не пробелма
R4SAS orignal: ты мне скажи про таймер
R4SAS чем deadline_timer от steady_timer отличается
orignal steady это монтонный
orignal он не зависит от ntp
orignal там абсолюьное значение от балды
R4SAS а по поводу использования дескриптора?
orignal думаю точно также timerfd
R4SAS orignal: это видал? stackoverflow.com/a/47876415
R4SAS > There's a single timerfd used to maintain all timers.
R4SAS я так думаю это и к deadlock применимо
R4SAS мы же как раз указываем контекст io_service в виде m_Service
orignal возможно
orignal не знаю что там написано но мы на работе замеряли
orignal deadline_timer когда запущен отжирает дескриптор
R4SAS в steady?
R4SAS а в *
orignal не пробовали
orignal R4SAS проблема не в дескпирторе таймера а в частоте срабатывания
Vort хм. игры в 144 FPS работают, так там не только таймер. как минимум, целя сцена рендерится. какие могут быть проблемы от срабатывания раз в сек с миниматюрной нагрузкой?
Vort миниатюрной*
Vort какая цель нагрузки вообще? сомневаюсь, что тут будет даже 0.01% от CPU. ну, может, 0.1% будет
orignal ну так мы же не хотим проц нагружать
orignal мы хотим чтобы он потреблял мало
Vort ну есть, образно говоря, бюджет ресурсов
R4SAS orignal: так я сделал таймер на секунду
Vort разработчик определяет, каким функция сколько разрешено жрать
orignal ну вот и надо посмотреть как будет загрузка проца
R4SAS одни параметры обновляются ежесекундно, другие каждые 15 секунд
Vort про сказать "мало" - мало
Vort посмотреть. именно
orignal срабатывание таймера раз в секнуду не проблема
orignal проблема что там делается
Vort на линуксе perf есть. хорошая штука
Vort в винде предпочитаю "найденный" VTune
Vort а вот gperf - гадость неимоверная
Vort тьфу. gprof
orignal valgrind лучше
orignal там много режимов
Vort лучше perf? буду знать
Vort жаль что нет поддержки винды
Vort под винду или проприетарный VTune или проприетарный MSVS (не работающий с DWARF) или бесполезный gprof
orignal ну просто привычка