IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2024/02/29
~R4SAS
~orignal
~villain
@onon
&N00B
+Most2
+Xeha
+acetone
+r00tobo
+relaybot
+whothefuckami
AreEnn
KabaOS
Nausicaa
Vort
anon2
b3t4f4c3
karamba_i2p
nemiga
not_bob
poriori
profetikla
segfault
soos
tolik
un
onon1 Это что-то странное, нужно погонять подольше.
onon1 Эта "дохленькая" машинка, показывает очень обнадёживающие результаты с буфером в 16мб. Она раньше такую нагрузку не держала.
onon1 Единственное, что смущает - куча ошибок error - I2PTunnel: Read error: End of file а логе.
orignal это надо поменять тип ошибки
orignal это просто закрытие сокета
orignal короче я считаю нужен параметр в конфиге у кого памяти завались пусть 16M ставит
onon1 Держит транзит 2мб 13к туннелей ещё и клиентов обслуживает исправно.
orignal и все на чистом SSU2?
onon1 Не, нтцп не выключал
relaybot 13apophis: хаха
onon1 Стоит выключить?
relaybot 13apophis: проблемы с ссу2 опять ?
orignal нет не стоит
orignal apophis так мы вот и разбираемся с его буферами
onon1 Не может всё так быть хорошо, где-то должен быть косяк, нужно тестировать.
relaybot 13apophis: > orignal: apophis так мы вот и разбираемся с его буферами
relaybot 13apophis: я в курсе, я читаю вас. Я пытался сказать тебе давно еще, что из за того, что у вас разработка идет быстрее чем у явы роутера, может стоило "отрезать" их всех о <clipped message>
relaybot 13apophis: т испытаний и рзменений ( чтобы не мешали) и отрабатывать на чистой и2п сети. Потом бы помогли им подстроится, когда бы сами были в порядке.
relaybot 13apophis: *чистой и2пд сети
orignal возможно
onon1 Для этого придумали строить тестовые сети
relaybot 13apophis: дело то ваше, конечно .. как решите так и будет.
relaybot 13apophis: тестовые сети на одном компутере .. это не то :(
relaybot 13apophis: сами знаете почему...
relaybot 13apophis: ну дело то ваше...
onon1 Сам придумал про один компьютер, сам опроверг, сам с гордостью удалился... =)
relaybot 13apophis: разве вы делали тестовые сети > 1 компутер ?
relaybot 13apophis: не будь ребенком, анон1 ... я читаю иногда что тут делается
onon1 Ты знаешь, сколько у меня машин под контролем?
relaybot 13apophis: поставить 300 роутеров на один тцпип стак на одном компутере .. это не чистый експеримент
relaybot 13apophis: я говорю про то, что тут писали ... что там у тебя ... мне неведомо.
relaybot 13apophis: дело то ваше...
relaybot 13apophis: что казается тестовых сетей с нетИД отличным от этой, то такие и раньше были. Они то и нужны
onon1 Я пытаюсь в итернетах найти описание возможных проблем с большим буфером UDP, и не могу ничего найти, везде его предлагают увеличивать по мере возможности. Начиная от 25мб и выше.
orignal я вижу проблему только в потрбелении памяти
orignal насечт 25М спасибо
orignal на работе поставим сразу 32М
orignal у нас там на машинах памяти по 128 гигов
Vort "<~orignal> откуда оно берется пока не понтяно" я рассказывал, откуда. это проблема с логикой завершения SSU2 сессии
onon1 Я, кстати даже на 32метровом буфере наловил эксепшнов под нагрузкой...
Vort onon1: это странно. разве это не означает лаг секунд в 10?
Vort как ексепшен кстати выглядит? может это какой-то другой ещё лезет в дополнение?
onon1 Лаг между чем и чем?
Vort между отправкой UDP пакета из приложения и отправкой пакета по сети
onon1 SSU2: Send exception: Resource temporarily unavailable to 137.134.162.186:24951
onon1 Может мы просто пытаемся в буфер засунуть очень много пакетов?
onon1 Одновременно
Vort 32 мегабайта? тогда это баг
Vort нет таких скоростей же сейчас
Vort может, ОС лимитирует максимум? там можно в коде поставить рядом запрос на чтение макс размера буфера
onon1 Ну я пока 100мб поставил буфер, смотрю.
Vort и посмотреть, вернётся ли то же значение или нет
onon1 Максимум 2гб вроде
Vort ну если вернётся то же - значит не лимитирует
Vort это обязательно надо проверить
Vort у меня на 4 мегабайтном буфере так ни одного исключения и не вылезло
Vort или, может, линуксу надо, чтобы вначале неблокирующий режим включился, а только потом размер буфера был поставлен
onon1 Нет, я системный буфер меняю
Vort "<onon1> Нет, я системный буфер меняю" - получается мы всё это время о разных вещах говорили
Vort orignal: похоже, onon не тот буфер менял. надо будет перепроверять результаты
onon1 /proc/sys/net/core/rmem_max
onon1 /proc/sys/net/core/wmem_max
onon1 /proc/sys/net/core/wmem_default
onon1 /proc/sys/net/core/rmem_default
onon1 То, не то?
Vort не то
Vort точнее, не совсем то
Vort rmem_max и wmem_max не должны быть помехой, да
Vort помехой для установки реального значения
Vort у тебя всё время буфер был на 128к
onon1 Короче я системный поднял, а роутер его всё равно не использовал?
Vort роутер его переопределяет (если системный максимум позволяет)
Vort какой wmem_max был, кстати, до твоих изменений?
onon1 212кб
Vort опять линуксы проблемы создают :/
Vort скорее всего, если поставить 4 мегабайта в i2pd, то система поставит вместо этого 212кб. пока юзер не полезет в систему. а нафига это юзеру вообще надо? бред какой-то
Vort это не юзер должен решать, а разработчик программы
onon1 Сколько поставить буфер для теста?
Vort так разные значения проверять надо
onon Ты скажи, будем тестировать разные
Vort можно увеличивать в 2 раза
Vort было 128к, поставить 256к
Vort будут лезть ексепшены - ещё в 2 раза увеличить
onon В хексе это сколько
onon 2FFFF
onon Так?
Vort 3FFFF вместо 1FFFF
onon Системный буфер какой поставить перед запуском?
Vort больше этого значения. можно поставить мегабайт 16, чтобы о нём не вспоминать больше при этих тестах
Vort я кстати хочу сделать сейчас коммит, который будет показывать, какой размер буфера получилось установить
Vort можно сделать так, что при расходжении будет ошибка в лог выдаваться
onon Мне подождать?
Vort не надо. я на виртуалке проверю
onon Ок
onon Косяк, конечно. Я думал роутер использует весь доступный буфер по умолчанию.
Vort похоже, нашёл ошибку в документации: "## By default logs go to stdout with level 'info' and higher"
Vort у меня вывод был warn на линуксе
Vort пока я не поменял в конфиге
tetrimer Мне кажется смысл этой фразы немного в другом: сообщения идут на stdout при включенном уровне логирования Info или выше.
Vort сделал вывод в лог размер буферов ssu2: github.com/PurpleI2P/i2pd/pull/2031
Vort код получился объёмный, но таков boost
onon Оно же только один раз будет вызываться, при старте?
Vort дважды. ну да не важно
Vort для ipv4 и ipv6
Vort я тестировал только на ipv4, не подумал о втором сокете
Vort но это мелочи
Vort забыл сказать - винда 4 меговый буфер не ограничила. линукс ограничил, но после изменения rmem_max и wmem_max и он нормальное значение согласился поставить
Vort ну и никаких крешей. просто при упоре в лимит ставится меньшее значение
onon Так что, новый холивар, линукс мастдай? Винда форева?
Vort так разработчики же ОС не выбирают ) приходится иметь дело с тем, что есть )
Vort вот в данном случае придётся так же, как и в случае лимитов на дескрипторы, убеждать юзеров менять настройки системы...
Vort кстати, по поводу асинхронных сокетов - не факт, что они могут помочь избежать проблемы с переполнением буфера
Vort так что, полагаю, адекватную реакцию на такую ситуацию всё равно приёдтся продумывать
Vort пока что можно просто игнорировать, "спрятав" ексепшен подальше
Vort это явно будет лучше, чем блокирующий режим
Vort но потом, может, удастся придумать что-то получше
onon Получается, что даже без увеличения буфера у меня на слабом железе при socket.non_blocking (true); заметно увеличилась производительность...
Vort onon: перестал заклинивать поток SSU2, как я понимаю
Vort скорее всего, 4 меговые буферы - это дохрена даже для X узла
Vort думаю, стоит выбрать максимально допустимый лаг и от него считать
Vort если максимальный лаг - 200мс, то с моим лимитом bandwidth = 6144 это получаются буферы 1228 килобайт
Vort максимум на 4 мега поставить вполне можно - для людей с гигабитными каналами
Vort но при обычной нагрузке на узел в 3-4 мегабайта/сек - так много не нужно
Vort лаг = сколько мы максимально позволяем системе тупить с отправкой пакета. то есть, время, через которое этот пакет устарел и лучше его уже не отправлять
tetrimer В udp разве бывает так, что "пакет устарел" и его можно не отправлять?
onon На 256кб под нагрузкой вылазит ошибка.
onon На сколько поднимать?
Vort onon: в 2 раза
Vort 7FFFF
Vort "<tetrimer> В udp разве бывает так, что "пакет устарел" и его можно не отправлять?" я имею в виду по логике i2pd
Vort onon1: можешь опять проверить пинг туннеля с explicit peers через свой другой узел? только на этот раз с non-blocking изменениями на двух сторонах
onon1 Да уже проверял. Пинга как будто нет. Даже, когда узел под нагрузкой пинг вырастает совсем незначительно.
onon Только если стрессом проц упереть в потолок, подскакивает пинг
Anonymous geti2p.net/en/get-involved/todo#batching so tunnels are sometimes throttled for anonymity, but if we find alternative, we maybe gain on speed/latency?
Anonymous it would be fun to have speed/low latency without having to compromise with anonymity
Anonymous orignal: do you think switching router keys automatically can contribute to anonymity?
Vort onon1: то есть, туннели живут весь положенный срок и нормально пересоздаются?
onon1 Сложно сказать, у меня они и так не дропаются, даже при фейле теста, но фейлов теста на этой паре я не замечал
Anonymous I understand that having an ident is a part of profiling, but can we afford to start a-fresh?
Anonymous I suppose that the IP address and port number could correlate your new router ident with the new router ident
Anonymous Any solutions?
Anonymous R4SAS: maybe you can do better with English than orignal
Anonymous I try to use basic English
orignal ясен пень что надо менять буфер который в SSU2.cpp ставится
orignal так что решили сколько ставим?
onon1 метр
Vort ну я вон выше сделал предложение
onon1 Я голосую за метр
Vort а я за 0.2*bw
Vort orignal: посмотри ещё выше я писал про лимиты линукса - не всё так просто
orignal а если 48 K?
orignal а что там с ним?
Anonymous Maybe I should think this trough more and make a proposal, with all goods and bads of this
Vort orignal: сверху на 0.2*bw ещё ограничить минимум, максимум и можно переопределить конфигом
Vort изначальное предложение min 128k max 4M я считаю правильным
Vort "<~orignal> а что там с ним?" без изменения системных настроек максимальный размер буфера 208K
Vort надо юзеров будет просить менять
orignal это же легоко проверить
Vort а вот я PR сделал
orignal достаточно взять текущее значение
Vort который пишет в лог
Vort если есть расхождения
orignal смержил
Vort хорошо
orignal Anonymous your genious ideas are worhtless here
Anonymous Your English is worthless, faggot
orignal Vort ну так сделаешь размер буфера ты или мне делать?
orignal then start learning Russian
Vort да у меня вопросы есть
orignal давай
Vort к примеру, стоит ли одинаковый алгоритм брать для send и recv ?
Vort и, соотвественно, задавать константой максимум
Anonymous orignal: eat shit nigger, English is no.1, you should start learning it if you want to make i2pd as better as soon possible, 1 person learns English is better than 100 people learning Russians
Anonymous Russian* learn math
Anonymous stupid nigger
Anonymous And you wonder why i2pd and with it I2P aren't famous
Anonymous because YOU DO NO KNOW HOW TO ENGLISH
Anonymous stupid shit
Anonymous You are so smart and genious, yet fail to realize simple truth
Anonymous It's actually sad, not funny
Anonymous Because he will ignore this and still not learn English
Anonymous And I love him, but he's so stupid
Anonymous orignal: you are a developer, but also a liability to i2pd
Anonymous You lack a cruicial component that most good programmers have
orignal Vort вряд ли у нас поток будет ассиметричный
Anonymous and that's communication
orignal ты же не раздаешь/получаешь фиды мультикастом?
Vort ну тогда я начну с общего лимита. и пока не буду трогать конфиг
tetrimer ~orignal: Свой плюс транзит?
tetrimer Всегда будет асимметричным, но потребуется угадать - в какую сторону?
orignal tetrimer если у тебя узел нагружет взяд ли будет большая ассиметрия
orignal так о том и речь
Anonymous FUCK RUSSIAN
orignal если например ты случшаешь фиды по мультикасту понятно что у тебя только получение
orignal если раздаешь то отправка
tetrimer Наверное правильнее сделать одинаковыми.
orignal а тут правильнее делать симметричноэ
Anonymous i2pd will never become famous or secure if most active developer orignal does not learn English good
Anonymous Mark my words
Anonymous movies are good sources of English, and entertaining
Anonymous orignal: watch English movies, noob
orignal заебал
Vort я опять в какой-то баг вляпался. и вроде же что-то подобное уже чинилось
Vort придётся отложить тесты SSU2 буферов
orignal что за баг?
Vort orignal: проблема с очередным unique_lock
orignal может быть
Vort TunnelPool::GetNextOutboundTunnel
Vort std::unique_lock<std::mutex> l(m_OutboundTunnelsMutex);
Vort вот с этим
Vort сейчас второй тред гляну
orignal а там то что может быть?
orignal только что надо поменячть на lock_guard
Vort а тьфу, тут же не во втором треде дело. в этом же самом где-то блокировка
Vort я пока не вижу с чем это место конфликтует
orignal так посмотри стек
Vort тут хуже ситуация
Vort это не двойной блок
Vort похоже нулевой указатель
Vort auto pool = i2p::tunnel::tunnels.GetExploratoryPool ();
Vort pool = empty
Vort какого фига...
Vort короч pool надо на ноль проверять
Vort а почему так... ну у меня ошибка вылезла про занятый порт прокси. может, пока висит ошибка, пул не создаётся. хз
Vort (в NetDbRequests::SendNextRequest)
Vort orignal: что-то надо ещё по этой проблеме ловить или вырубать отладчик? я всё же собирался буферы тестировать
orignal а как explratory может стать нулем?
Vort ну не инициализироваться
Vort это при старте узла вылезло
orignal так он при старте тоннелей же создается
orignal аааа при старте
orignal может где то зависло
orignal это погляжу
Vort на mesagebox с ошибкой могло?
Vort какой тред глянуть?
orignal я не понмю он вроде в тоннелеях создается
orignal или в контексте
orignal давно делал
Vort Tunnels спит
Vort странно
orignal там странный код
Vort короч он ещё не проснулся
orignal он создает в void Tunnels::ManageInboundTunnels (uint64_t ts)
Vort ни разу не выполнялся
Vort // wait for other parts are ready
Vort вот тут спит
orignal if (!m_ExploratoryPool)
Vort да, я понимаю. но вызывается из туннель потока. а он ещё спит
orignal так там ожидание в секунду
orignal я не знаю кто такую хуйню написал там
Vort зато netdb не спит и уже дёргает его
Vort :))
orignal я бы так не написал
Vort ладно, примерно поняли, в чём дело. буду буферы тестировать
orignal я бы наприсал отдельный метод
orignal и вызывал бы его откуда надо
Vort а может это и студия мне опять какую-то херню собрала )
orignal дурацкий код то это явно не студия ))
Vort оу. Transit Tunnels: 83059
Vort в таких условиях почему бы треду лишние несколько секунд не поспать ) шучу )
Vort не дают спокойно код проверить )
orignal Transit Tunnels: 46061
orignal у меня поменьше
orignal и Transit Tunnels: 54809 на другом
Vort неужели набилось из-за того, что я в отладчике возился. ну комп грузил то есть
orignal вряд ли
orignal у меня просто по трафику в лимит уперлось
Vort угу. но что-то ж даёт эти волны
Vort вероятнее всего, атака. но может быть и что-то иное
orignal кнопка "start" у кого то
orignal никакое "иное" не может дать столько тоннелей
Vort orignal: такой вопрос возник. в конфиге что - можно вообще любое числовое значение в bandwidth воткнуть?
Vort надо ли корректно обрабатывать случаи, когда туда кто-то шибко умный воткнёт миллиарды?
orignal счас гляну
Vort просто если без поддержки дуростей, то код у меня уже есть
orignal void SetBandwidth (int limit); /* in kilobytes */
orignal 4 ,fqnf rjhjxt
orignal 4 байта
orignal я отйду на несколько часов
orignal потом продолжим
Vort ладно, сделаю с поддержкой дуростей
Vort окей
Vort сделал. желательно чтобы кто-нибудь проверил. github.com/PurpleI2P/i2pd/pull/2033
Vort weko: с последними коммитами проблема недогруженности узла уже не стоит :) Tunnel creation success rate: 5% / Transit: 210.65 GiB (5469.45 KiB/s) / Transit Tunnels: 58770
orignal а зачем 1024/5? нельзя просто 200?
Vort orignal: то килобайты, а то доли секунды, разные вещи как бы.
orignal да я понимаю
Vort вызывается 2 раза всего лишь ) так что о нагрузке на CPU можно не беспокоиться
orignal смержил
Vort хорошо
Vort но проверять, проверять надо
orignal ну привычка просто ))
orignal прорять буду
onon1 Комментариев нету, трудно разобраться.
Vort :))
Vort буст хитро значения возвращает, поэтому большой такой кусок кода получился
Vort а в остальном - должно быть понятно. onon1: если что - спрашивай
Vort второй коммит переносит wouldblock ексепшен на уровень info
onon1 Я минуты три думал, как это работает bufferSize = std::max(SSU2_SOCKET_MIN_BUFFER_SIZE, std::min(bufferSize, SSU2_SOCKET_MAX_BUFFER_SIZE)); берем минимальное от максимального, а потом максимальное от минимального.
Vort onon1: я всегда туплю над этим кодом. понимаю )
Vort в новых версиях C++ исправили проблему
Vort но пофиг
Vort есть ещё в буст алгоритмах, но решил не переусложнять
orignal все я уехал
onon1 Было бы неплохо ещё как-нибудь измерить уровень потерь пакетов для udp/ssu2 с маленьким буфером и с большим.
Vort onon1: да это мелочи, я полагаю. даже с прошлым буфером в 128к. самое большое, что гадило, - это зависание потока
Vort посмотри, сколько пишет эксепшенов в лог и подумай, сколько всего пакетов отправляется за то же время
Vort я не считал, но думаю, что потери там меньше процента
weko Vort: так это из-за атаки, а не реальный трафик
Vort weko: после того, как я насмотрелся на баги за последние дни, я уже не так уверен
Vort пробовал последние коммиты ставить, кстати?
weko Нет пока что
weko А что там самок важное?
Vort они довольно гадкое зависание в SSU2 чинят (проявляющееся правда в основном на слабых компах)
weko Хм
weko Ну у меня вроде не висло
Vort так зависал поток обработки
Vort и не навсегда
weko Хм
Vort в результате отваливались почти все SSU2 сессии
Vort потом пересоздавались. но всё же
weko Интересно
weko Вообще я думаю надо бы релиз делать через неделю две. Сейчас просто масштабные изменения не вносить, а тестить что есть
weko Уже кучу всего исправили
Vort тестировщиков мало, а так согласен
weko Можно ещё udp исправить
weko Было бы не плохо
weko [14:42:13] <orignal> все я уехал
weko Но видимо пока лося нету, будем тестить
onon1 Да, на Х узле, с 256кб буфера ошибки не вылазят. Там транзит около 3 с пиками до 6
Vort хорошо
Vort формулу расчёта размера буфера можно будет ещё подкручивать
Vort я постарался выбрать что-то не сильно "жмущее", но и не сильно "жирное"
Vort хз как описать точнее )
weko Интересно, лиссет размером 16 влезает в 1KB?
Vort кстати, я читал, что винда сразу весь буфер не выделяет
Vort а только по потребности
weko Просто я бы мог многое повесить на один destination, однако я боюсь что будет сильно баговать, и будет не успевать строить туннели. Просто я бы тогда 16 тыкнул
Vort да сейчас с туннелями беда
Vort перегруженный узел начинает чаще строить туннели и больше перегружать сеть
weko Просто у меня дохрена b32, и во время атака, даже с укоренным созданием строить не успевает
weko Атаки*
weko Vort: из-за атака больше узлов уходят в лимиты -> меньше tcsr -> узлы чаще строят туннели -> больше узлов уходят в лимиты
Vort по-моему тут кроме ожидания ухода волны (и параллельного обновления сети) мало что можно сделать
Vort weko: и это тоже
weko Пока что реакция не запускается, видимо из-за того, что узлы очень медленно пытаются создавать туннели
weko Vort: почему же. Можно попробовать найти атакуещего
weko По крайней мере его адреса
weko Просто посмотреть по статистике откуда больше всего прёт туннелей
weko Там надо код как то доделать, чтобы в i2np пакет добавлялось информация, откуда он пришёл
Vort в общем, если можешь, обнови узел и скажи, какой это эффект даст
weko И далее где туннель создаётся обрабатывать
weko Vort: я обновлю а любом случае
weko У мен, достаточно маленьким лимиты так то
weko Vort: я предлагаю заняться защитой от этой атаки
Vort там и для маленьких лимитов есть исправление. несколько дней назад было
Vort для зеркальных туннелей
weko Ну что следующий хоп это мы
weko Да было
weko Не хочу тайминг ловить
weko [15:51:30] <weko> Vort: я предлагаю заняться защитой от этой атаки
onon1 Лось говорил, что с дедом обсуждал вариант не учитывать в лимитах пустые туннели
onon1 А до чего дообсуждались, не говорил.
weko onon1: у джавистов туннели пустые тоже
onon1 Ну так, перестает быть пустым - начинаем его тоже считать...
Vort ну важно убрать зависимость лимита от рейта
weko Прикол в том, что атакующий может сделать так, что даже не созданный туннель будет якобы не пустым
onon1 Это ему будет стоить вычислительных мощностей
weko onon1: гораздо меньше чем создание туннеля
weko Потому что там симметричное
weko Vort: локального лимита от локального рейта? Ну это надо с netDb работать
Vort нет, от оценки рейта по пустым транзитам
weko Отделение просто свалки RI от базы RI для строительства туннелей
Vort не важно конкретное значение, важно убрать зависимость
Vort хотя мне вообще идея ограничения количества транзитов кажется странной
Vort это количество само по себе почти ни на что не влияет
weko Vort: чтобы узел не тупил
weko Vort: так то влияет
weko На netDb и нагрузку узла
Vort так нету доказательств, что количество транзитов даёт тормоза
weko Vort: тормоза тогда, когда времени процессора не хватает
Vort так оно тратится на трафик в основном
Vort вот трафик и лимитировать
weko Когда 100к туннелей, это как 166 созданий в секунду
weko Как 166 KB/s
weko Учитывай, что это асимметричное шифрование
weko То есть потребляет в разы больше времени
weko Вот тебе пруф
Vort я когда делал раньше профилирования, я вообще шифрования не находил
Vort если можешь, то сделай профилирование, покажи результаты - тогда будет пруф
Vort таблицу с потреблением CPU по функциям кода
Vort именно при нагрузке транзитом
weko Vort: оно в любом случае потребляет больше 0. Так что должно быть
Vort я допускаю, что где-то может быть баг, дающий тормоза именно из-за количества. но если он и есть, то он не грузит CPU, а заставляет ждать. ну или делать какую-то фигню вместо того что надо
Vort weko: ну понятно. просто мелочи. допустим, меньше процента
weko Vort: так ты сказал что вообще не нашёл
weko Как будто их нет
weko А они то есть
Vort окей, я сказал неточно. их было так мало, что иногда профилировщик их пропускал
Vort если перенастроить его, то что-то находилось
weko Интересно, почему так. Вроде должно быть много
Vort то есть, если очень поискать, то найти было можно
weko И что больше всего тратило?
Vort может я криво смотрел
Vort отправки и приёмы TCP с UDP
weko Оч странно
Vort SSU2 больше всего по-моему
weko Должно быть наоборот
Vort сейчас попробую запустить. если выкинет из чата - значит, заглючил профилировщик
weko Зелёное - это функции профилировщика?
Vort зелёное - это функции системных библиотек, похоже
Vort может профилировщик фигня, может пользуюсь им неправильно
Vort в линуксе есть хороший профилировщик
Vort который даже на ядро ОС нагрузку считать умеет
weko Там в основном wait
Vort если можешь - перепроверь
weko Даже у тебя видно что даже если брать чисто i2pd, то функции криптографии в топп
weko Топе
weko Правда не ясно, сколько это относительно всего
Vort Linux perf посмотри
Vort только не gprof - то говно
Vort моё заявление такое: "i2pd даёт нагрузку не столько своими функциями, сколько функциями операционной системы"
Vort могу ошибаться, жду или потдтверждения или опровержения
weko Там wait в основном
weko Значит просто функция выполнялась долго
Vort в perf ?
weko Без фактической затраты времени процессора
weko Vort: у тебч
weko У тебя на скрине
weko Там везде в названиях wait
Vort более навороченный профилировщик мне не только i2pd заглючит, но и всю систему
Vort так что лучше ты попробуй
weko perf record надо?
weko Ну у меня тут дела есть, сделаю, приду проверю
Vort да вроде record, а потом просмотреть как-то
Vort я когда-то разобрался, попользовался, а потом забыл
Vort запомнил только, что результаты получше, чем в винде
Vort я до сих пор не знаю как в винде делать профилирование с учётом загрузки ядра
Vort бывают программы, которые почти полностью в ядре сидят, а профилировщик показывает, что нагрузки почти нету :))
Most2 13.<douknowwatusee> У кого-то есть проблемы с постороением исходящих туннелей?
Most2 13.<douknowwatusee> Указал 16, а строится дай бог 3
Most2 13.<douknowwatusee> При этом входящих много
Vort есть у многих. атака идёт
Most2 13.<douknowwatusee> Понял, спасибо
orignal тут я
orignal проблема с исходящими еше из-за бага
Vort из-за того, который был починен?
Vort хотя даже при полнейшем рандоме непонятен перекос
orignal перекок как раз понятен
orignal входящие то строятся парно к исходящим
orignal и запрашиваются чаще чем чистятся
tetrimer На одном из OfE серверов за час количество ттранзитных туннелей подскочило с 4 до 16 тыс.
tetrimer После перехагрузки - больше не поднимается.
tetrimer Это я к тому, что атака цепляет в основном флудфилы и за результатом, похоже, следят.
Vort у меня последние дни прыгает между 20 и 80 тысячами
tetrimer У меня больше 20тыс - нигде не подскакивает: где-то, видимо, само тормозится.
Vort O флаг и тормозит, так задумано
tetrimer А, у меня, похоже, упирается в параметр share - я его ставлю в 50%.
Vort ну и это тоже, да
orignal счас буду пробовать на флудфиле
orignal SSU2: Socket send buffer size: requested = 1638400, got = 212992
orignal давайте говорите че там меня в системе
Vort ага. лучше, чем 128к
orignal ну я системные лимиты подниму
Vort sudo sysctl -w net.core.rmem_max=1638400
Vort sudo sysctl -w net.core.wmem_max=1638400
orignal счас попробую
orignal поставил
Vort поменялось сообщение в логе?
orignal еще не смотрел
Vort ну надо перезапустить конечно
Vort сам i2pd
Vort систему не надо
orignal знаю
Vort оу, я кое что не дочитал
orignal перезапущу чуть позже
Vort To make the change permanent, add the following lines to the /etc/sysctl.conf file, which is used during the boot process:
Vort короч надо ещё и в конфиг прописать
Vort чтобы после ребута поставилось
Vort я только смену через sysctl в виртуалке потестил
Vort а сохренение после ребута не проверял
orignal что именно?
orignal туда написать
tetrimer Вообще-то - прописывание в sysctl.conf - стандартная процедура. :) Иногда еще в /boot/loader.conf пишут некоторые переменные
Vort net.core.rmem_max=1638400
Vort net.core.wmem_max=1638400
orignal tetrimer вот у нас на работе пиздаболы сисдамины этого не делают
Vort "стандартная процедура" ну я виртуалку раз в месяц примерно запускаю, поэтому про стандарты не в курсе :)
orignal в результате после любого ребута вылетает вообще все
tetrimer Так оно не всегда нужно.
orignal там вооьще все рушится начиная с домашних директорий на нфс
tetrimer А есть sysctl-переменные, которые правильно встают только после ребута.
orignal ну наши с этой премудростью не знакомы
orignal потому все время приходится их тыкать палочкой
orignal была бы моя воля я бы разогнал всех этих бездельников и нанял нормальных
tetrimer Проблема - где их, нормальных, брать. :)
onon2 Может кто объяснить за что отвечает параметр const int MAX_WINDOW_SIZE = 128; в Streaming.h
orignal за максимальный размер окна ))
onon2 А подробнее, как пакеты в стриме обрабатываются?
orignal плохо
orignal там протокол по типу TCP
orignal с окнами, RTT и прочим
onon2 Я тут попробовал прогнать трафик без ограничений через два узла, выжал около 250кб/с
onon2 При том, что отдача/прием был 450/450
onon2 Почти половина пакетов просто дропалась
onon2 Лог забивается сообщениями missing messages
onon2 и duplicate message
onon2 Плюс там ещё со стримами проблема с лизсетами
onon2 Они зависают с ошибкой в логе remote leaseset expired
onon2 При том, что входящие и исходящие туннели есть
onon А перед этим начинает бешено запрашивать какой-то странный дестинейшн, которого у меня нет.
tetrimer Запросы отсутствующего в NetDB - уже давно идут.
tetrimer Причем пачками одного и того же файла
tetrimer Заклинило стрим на irc и никак он не хотел сам падать. :( RTT=8000 и стоим, чего-то ждем.
Vort tetrimer: тоже на заклинивание irc попадал, но не рассматривал подробно
tetrimer Ну так это как с нулевыми туннелями: надо просто по косвенному показателю принимать решение о закрытии.
Vort "<onon2> Я тут попробовал прогнать трафик без ограничений " - речь о TCP или UDP ?
onon2 udp/ssu2
onon2 На реальной сети, моделирование реальной нагрузки
Vort а, ну по этому поводу weko уже много жаловался )
Vort orignal говорил, что в реализации UDP очень много багов
Vort хотя я наверно неправильно понял
weko Как и в TCP
weko Хоть там и меньше
weko Судя по коду udp там вполне может быть куча багов
weko Vort: сейчас займусь профилированием
tetrimer TCP сам следит за потерями пакетов, а в UDP - с этим беда.
Vort onon2: внутри SSU2 что было? TCP ?
Vort в i2p ведь и udp можно _внутри_ гонять, я думал ты об этом говоришь
Vort точнее, не UDP, а датаграммы
orignal конечно много
onon2 Короче, я поднял сервер, и прокси и качаю с сервера файл, через 1 хоп туннель.
Vort а, теперь понятно
Vort это хороший сценарий
Vort но можно и udp через iperf3 проверять
onon2 И казалось бы все узлы мои и все узлы хорошие, а вот такая вот фигня.
Vort "<onon2> Почти половина пакетов просто дропалась" - тогда о каких пакетах речь ? которые ssu2 ?
onon2 Которые "missing packets" видимо
Vort наверно ssu2
onon2 Ой messaages
Vort а...
Vort короч попробую сейчас на локалхосте
Vort если на локалхосте будет глючить - значит опять какой-то жирный косяк
Vort потому что это же первое, что имеет смысл тестировать
Vort onon2: как туннели были сделаны? на первом узле 1+1 хоп через второй узел и на втором 1+1 хоп через первый?
Vort или где-то 0 хопов было?
onon2 на сервере через explicit и на клиенте через trust.enabled
onon2 по 1му своему роутеру
onon2 там и там 1 хоп
onon2 Когда это был один и тот же роутер, удалось выжать около 1мб/с, когда разные - совсем плохо
Vort плохо в trust опции разбираюсь - сейчас поясню, как я настроил
onon Там можно вроде через tunnels.conf кастомный httpproxy сделать
onon Там проще будет
Vort на первом узле сделал 1+1 хоп клиентский туннель ко второму узлу через третий узел
Vort на втором узле сделал 1+1 хоп серверный туннель через третий узел
Vort и прогнал через iperf3 тест
Vort получил скорость 2.6 мегабайта/сек
Vort все три узла на одном и том же компе и одном и том же адресе
Vort даже увидел, во что упирается - в CPU, на всех трёх узлах
Vort странно, так как третий узел держит транзит в два раза больше без особых проблем и без особой нагрузки на CPU
Vort что-то я не учёл