qbt: things
This commit is contained in:
@@ -54,11 +54,11 @@
|
|||||||
serverConfig.BitTorrent = {
|
serverConfig.BitTorrent = {
|
||||||
Session = {
|
Session = {
|
||||||
MaxConnectionsPerTorrent = 100;
|
MaxConnectionsPerTorrent = 100;
|
||||||
MaxUploadsPerTorrent = 15;
|
MaxUploadsPerTorrent = 50;
|
||||||
MaxConnections = -1;
|
MaxConnections = -1;
|
||||||
MaxUploads = -1;
|
MaxUploads = -1;
|
||||||
|
|
||||||
MaxActiveCheckingTorrents = 2; # reduce disk pressure from concurrent hash checks
|
MaxActiveCheckingTorrents = 2;
|
||||||
|
|
||||||
# queueing
|
# queueing
|
||||||
QueueingSystemEnabled = true;
|
QueueingSystemEnabled = true;
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
inherit (config.services.qbittorrent.serverConfig.Preferences.Downloads) TempPath;
|
inherit (config.services.qbittorrent.serverConfig.Preferences.Downloads) TempPath;
|
||||||
TempPathEnabled = true;
|
TempPathEnabled = true;
|
||||||
|
|
||||||
ConnectionSpeed = 100;
|
ConnectionSpeed = 200; # half-open connections/s; faster peer discovery
|
||||||
|
|
||||||
SaveResumeDataInterval = 300; # save resume data every 5 min (default 60s)
|
SaveResumeDataInterval = 300; # save resume data every 5 min (default 60s)
|
||||||
ResumeDataStorageType = "SQLite"; # SQLite is more efficient than legacy per-file .fastresume storage
|
ResumeDataStorageType = "SQLite"; # SQLite is more efficient than legacy per-file .fastresume storage
|
||||||
@@ -100,29 +100,20 @@
|
|||||||
DisableAutoTMMTriggers.DefaultSavePathChanged = false;
|
DisableAutoTMMTriggers.DefaultSavePathChanged = false;
|
||||||
|
|
||||||
ChokingAlgorithm = "RateBased";
|
ChokingAlgorithm = "RateBased";
|
||||||
|
SeedChokingAlgorithm = "FastestUpload"; # unchoke peers we upload to fastest
|
||||||
PieceExtentAffinity = true;
|
PieceExtentAffinity = true;
|
||||||
SuggestMode = true;
|
SuggestMode = true;
|
||||||
|
|
||||||
# max_queued_disk_bytes: the max bytes waiting in the disk I/O queue.
|
|
||||||
# When this limit is reached, peer connections stop reading from their
|
|
||||||
# sockets until the disk thread catches up -- causing the spike-then-zero
|
|
||||||
# pattern. Default is 1MB; high_performance_seed() uses 7MB.
|
|
||||||
# 64MB is above the preset but justified for slow raidz1 HDD random writes
|
|
||||||
# where ZFS txg commits cause periodic I/O stalls.
|
|
||||||
DiskQueueSize = 67108864; # 64MB
|
|
||||||
|
|
||||||
# POSIX-compliant disk I/O: uses pread/pwrite instead of mmap.
|
# POSIX-compliant disk I/O: uses pread/pwrite instead of mmap.
|
||||||
# On ZFS, mmap forces data into BOTH ARC and Linux page cache (double-caching),
|
# On ZFS, mmap forces data into BOTH ARC and Linux page cache (double-caching),
|
||||||
# wasting RAM. pread/pwrite goes only through ARC, maximizing its effectiveness.
|
# wasting RAM. pread/pwrite goes only through ARC, maximizing its effectiveness.
|
||||||
# Saved 26 gb of memory!!
|
|
||||||
DiskIOType = "Posix";
|
DiskIOType = "Posix";
|
||||||
|
|
||||||
# === Network buffer tuning (from libtorrent high_performance_seed preset) ===
|
FilePoolSize = 500; # keep more files open to reduce open/close overhead
|
||||||
# "always stuff at least 1 MiB down each peer pipe, to quickly ramp up send rates"
|
AioThreads = 24; # 6 cores * 4; better disk I/O parallelism
|
||||||
SendBufferLowWatermark = 1024; # 1MB (KiB) -- matches high_performance_seed
|
|
||||||
# "of 500 ms, and a send rate of 4 MB/s, the upper limit should be 2 MB"
|
SendBufferLowWatermark = 512; # 512 KiB -- trigger reads sooner to prevent upload stalls
|
||||||
SendBufferWatermark = 3072; # 3MB (KiB) -- matches high_performance_seed
|
SendBufferWatermark = 3072; # 3 MiB -- matches high_performance_seed
|
||||||
# "put 1.5 seconds worth of data in the send buffer"
|
|
||||||
SendBufferWatermarkFactor = 150; # percent -- matches high_performance_seed
|
SendBufferWatermarkFactor = 150; # percent -- matches high_performance_seed
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user