IT - How I Supercharged BiglyBT Disk I/O on Windows Using Cygwin, smartctl, StableBit DrivePool, and an LSI Controller
How I Supercharged BiglyBT Disk I/O on Windows Using Cygwin, smartctl, StableBit DrivePool, and an LSI Controller
⚡ Part 1: The Breakthrough – Unlocking Hidden I/O Throughput
BiglyBT is a powerful BitTorrent client, but out-of-the-box, it’s optimized for compatibility and not for high-performance environments. I discovered this the hard way after spending weeks wondering why my disk performance was severely lagging, despite having an overkill hardware setup.
🛠️ My Initial Setup
- OS: Windows 10 Pro (2009, Build 26100.1)
- CPU: Intel Core i7-10700K (8 Cores, 16 Threads @ 3.8GHz)
- RAM: 128GB DDR4
- Storage: 20+ SATA HDDs (Toshiba MG09, Seagate Exos, HGST), 2 SSDs (NVMe)
- Controllers: Onboard SATA & LSI 9300-16i (SAS3, PCIe Gen3 x8)
- Software: Cygwin (dd, smartctl), StableBit DrivePool, BiglyBT 3.8.0.2 (Java 8)
💡 The Problem
I use drive F:
as my processing area and P:
(a StableBit DrivePool volume) as the seeding/archive pool. Using dd
, the disks showed great performance:
$ dd if=/dev/zero of="/cygdrive/p/testfile.bin" bs=1M count=1024 conv=fdatasync
1.0 GiB copied, 5.1 s, 209 MB/s
$ dd if=/dev/zero of="/cygdrive/f/testfile.bin" bs=1M count=1024 conv=fdatasync
1.0 GiB copied, 15.5 s, 69.3 MB/s
Yet BiglyBT took over 30 minutes to move a 2GB file between those drives.
🎯 The Fix
Inside BiglyBT, navigate to:
Tools ➝ Options ➝ Advanced ➝ disk.io.max.disk.read.queue.requests Tools ➝ Options ➝ Advanced ➝ disk.io.max.disk.write.queue.requests
Change both values to 128
.
Result: Transfers jumped from under 10 MB/s to 100+ MB/s instantly. BiglyBT was finally utilizing the available hardware I/O bandwidth!
🔧 Part 2: Advanced Architecture, Diagnostics, and Controller Tuning
💽 Cygwin + smartmontools = Pro-Level Diagnostics
$ for dev in /dev/sd[a-z]; do
if smartctl -i "$dev" | grep -q "SMART support is: Enabled"; then
echo "Device: $dev"
smartctl -a "$dev" | grep -E "Device Model|Serial Number|Power_On_Hours|Temperature_Celsius"
echo
fi
done
Using this, I found drives with poor cooling, cable errors, and even a failing SATA port. One drive was propped with a folded paper to keep the SATA tab connected.
🚀 Why the LSI Controller Changes Everything
- ✅ Direct PCIe Gen3 bandwidth (x8 lanes)
- ✅ Supports 16 drives via 4x SFF-8643 Mini-SAS
- ✅ Native support for queued commands, unlike USB
- ✅ Proper SMART passthrough via StorPort
📚 Related Tools
🤖 Part 3: Automation, Monitoring, and Predictive Health
🧠 The Goal
Now that the system runs smoothly, I wanted to add automatic health monitoring to catch future failures before they happen.
🔍 PowerShell + smartctl
I created a scheduled task that runs daily to scan SMART data and log important metrics:
smartctl -a /dev/sdX | findstr /R "Reallocated_Sector|Current_Pending|Offline_Uncorrectable"
📊 Logging Disk I/O
dd
tests are run weekly- Results are stored in a CSV
- Trendline generated via Excel or Python
🔔 Future Plans
- Install
smartd
in Cygwin to automate threshold monitoring - Set up PowerShell to push alerts via Telegram
- Visualize I/O via Grafana + InfluxDB
📈 Results Recap
- File transfers went from 10 MB/s ➝ 150+ MB/s
- Seeding performance remains consistent even with 50+ torrents
- Zero instability since removing all USB enclosures
If you're running a torrent box with lots of storage, don’t underestimate the importance of disk queue tuning, controller choice, and low-level diagnostics. Your hardware deserves better than USB bottlenecks and default Java limits.
📬 Feel free to comment or reach out if you want help optimizing your own setup!
Comments
Post a Comment