~AreEnn
~R4SAS
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Guest29533
HackerMan
Most2
Nausicaa
Ruskoye_911
Trusishka
Vort
`
acetone_
anon3
b3t4f4c3
flumental
nemiga
not_bob_afk
plap
poriori_
profetikla
segfault
soos
teeth
un
weko_
whothefuckami
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к
Vort
onon1: вот это менять надо было: github.com/PurpleI2P/i2pd/blob/692f495adc6701fd3b6b51002254051c0996ac0d/libi2pd/SSU2.h#L28-L29
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
onon
xD
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)
orignal
{
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
:)
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
сейчас попробую запустить. если выкинет из чата - значит, заглючил профилировщик
Vort
weko: ну вот, смотри: paste.i2pd.xyz/?197da8e4998d6e92#5VYV3naPX4pVbLAaXB9qiqUQo3KWG7zuTFZvoPjKraoW
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
что-то я не учёл