#bittorrent 

Обновления btrtrc

Я уже не первый год использую свой самописный btrtrc BitTorrent клиент.
Ну как свой: по сути то это просто frontend для github.com/anacrolix/torrent,
но с простыми bitfield файлами для отслеживания наличия кусочков. Когда-то
там были наработки связанные с уменьшением кол-ва тредов, а также обрезания
длинных имён файлов, не умещающихся из-за ограничений ФС.

Периодически подтягивал из upstream-а более свежую версию кода и делал
rebase на неё. Но в последнее время автор активизировался и много кода
поменял, так что rebase уже не так прост, да и сам автор всякие
оптимизации делает.

Поэтому сейчас обрезание имён и оптимизации тредов выкинуты. Вроде ни
один торрент не поломался из-за этого -- сделал полную проверку всего,
"потерь" нет.

Но начиная с какой-то версии он стал медленно отдавать данные. Поэтому я
держал аж две версии: старую и новую. Старая почему-то медленно качала и
на торрентах с большим кол-вом файлов -- частенько паниковала из-за
конкурентной записи и чтении map-а (не разбирался в каком именно). Новая
же отлично качала, ни разу не падала, но на раздачу новая версия даже
половину канала не всегда умудряется утилизировать. Старая же без
проблем на все 100Mbps раздавала.

Уйму кода просмотрел в diff-е, но так и не понял в чём может быть
причина. В GitHub даже есть issue о деградации производительности. Но,
уже просто методом тыка, нашёл решение: просто навсего в конфиге указать
MaxAllocPeerRequestDataPerConn равным не 1MiB, как было по умолчанию
(даже в старой версии), а в разы больше. И всё начинает отдаваться на ура.

    [оставить комментарий]