]> Sergey Matveev's repositories - stargrave-blog.git/commit
Первая попытка эксплуатации BitTorrent клиента
authorSergey Matveev <stargrave@stargrave.org>
Sun, 27 Nov 2022 07:25:41 +0000 (10:25 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Sun, 27 Nov 2022 07:25:41 +0000 (10:25 +0300)
commit2643c085a0970d8d8bc3471cb5c294ba8b09fee8
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904
parenta832cb95520fee89f578409fb419d6a9e46b7489
Первая попытка эксплуатации BitTorrent клиента

https://github.com/anacrolix/torrent/issues/769
... провалилась. Процесс грохнулся с SIGABRT, потому что runtime не смог
создать новый тред: Resource temporarily unavailable.
kern.threads.max_threads_per_proc у меня выставлен в 1500 по умолчанию,
а процесс после запуска уже ~1300 имеет тредов. Есть даже заведённый
issue на это, где автор говорит про исчезновение проблемы при
использовании mmap-based storage. Попробовал -- действительно, тредов
стало меньше сотни и не растёт.

Но... у меня же ZFS, а mmap на ней использовать не гоже. Page cache для
mmap-а отъедает память, не смотря на то, что копия данных всё равно
имеется в ARC-е ZFS. В итоге использование памяти моим процессом
стремительно растёт, вытесняя ARC. А так как это торренты, то память
будет использоваться под завязку, нивелируя кэш ZFS.

В общем, или увеличить max_threads_per_proc (что я уже и сделал чтобы
продолжало работать) или ограничивать количество соединений.