Skip to main content

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

Popular posts from this blog

TV Series - The Brokenwood Mysteries [NZ] (2014) - Season 10

 

Movie - Sin City: A Dame to Kill For (2014)

 

Movies - Deadpool & Wolverine (2024)