~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
)))
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
ну и скриншотик из itoopie: paste.i2pd.xyz/?34fa1fcd3331875b#7diP2HMCJXFYcicNLe7cR4cxvfh5h8m9qUN2u1XXeSed
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
сейчас оно выглядит так: paste.i2pd.xyz/?4d5074222985c2e3#A3DPHQhDc1zZExW9ofFagmjnUJzYeYnfA1G2dTmhyiHF
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
ну просто привычка