SSD Seedbox: The Holy Grail of Performance?
SSD Seedbox – Is it the Holy Grail of Performance?
With SSDs as the storage medium you may be expecting always blazing fast speeds, link maximum upload speeds at whenever, and basicly going through your traffic limit super fast.
To drive throughput like that is a bit more complicated than just the storage medium you have, there are a lot of factors at play. So, while one element of potential bottlenecking is eliminated, it does not immediately and automatically mean that you will be pushing 100MB/s all day long.
While SSD seedbox does provide always fast storage, always fast GUI, fast compression/decompression etc. BY FAR the biggest bottleneck usually is elsewhere, by many orders of magnitude: High latency network, and end point link speeds.
Networking: Can’t accept faster than the max speed
If you have SSD + 1Gbps connectivity to you, but the receiving end only has a 512kbps DSL, it in no means can accept data at faster pace than 512kbps.
Average broadband speed in the U.S. is 11.9Mbps in Q1/2015. So how many peers does it take to get full 1Gbps? If all the peers dedicate 100% of their downstream speed to you: 84. But this is rarely the case, a peer could be connected to 50 different seeds.
For the sake of argument, let’s assume each peer is connected to 15 different seeds from which they are downloading at the same time. This gives us 0.79Mbps per peer, or you need to be uploading to 1265 peers to exhaust the 1Gbps link. Very few torrents have that many active downloaders simultaneously.
Those who use torrents albeit probably have on average much faster broadband than the average broadband users, but even at the peak rate of ~5 times higher, this means you need to be uploading simultaneously to 253 peers.
To make matters worse, they are probably using that same bandwidth to other tasks as well at the same time. Of course, there will be some very high speed peers which will take relatively the most.
But this assumes, every peer, every time, whenever, from where ever could get their maximum speed over a single connection. This is very rarely the case, and it gets relatively worse over time as link speeds increase. There is Bandwidth Delay Product, and the overall chaos of internet. Basicly, between you and the peer there might be thousands of KM of fiber optic cable, dozens of routers, many times that of cross connects, millions of routing rules (IPv4 full routing table is huge! and each router has their own set of routing rules). There might be maintenance work, or a submarine cable cut.
In essence, it is somewhat controlled chaos by a lot of different parties. Routes change constantly, there is always some link not working, under maintenance, over congested etc.
Single thread speeds are exactly the same on HDD and SSD based servers; Unless storage is the bottleneck. If you test two identical servers, one with HDD and one with SSD, it is very likely the single connection speeds are exactly the same. Unless the data needs to come from storage, and that storage is either delayed (seek time, read ahead, queue depth, other users) OR congested (maximum performance reached due to heavy activity).
To make matters worse, it does not matter that much does your SSD server have 10Gbps or 1Gbps. Infact, increasing link speed might even be detrimental to network performance in some cases, which usually requires hefty infrastructure investments to solve (microbursts, contention ratio and aggregation level switching).
The main benefits of SSD Seedbox
The main benefits are the sheer insane IOPS capability of SSD seedbox, since there is no seeking involved, and hence lower latency of the storage medium. Those 253 peers mentioned above are mostly requesting different chunks, quickly necessitating a huge random access speed (assuming data is not cached – usually is not). 1Gbps is roughly 110MiB/s, which is nothing to an SSD, but due to limited cache you might wind up needing 220MiB/s or more worth of read speed to exhaust that 1Gbps – JUST 1Gbps. This all is random access too, where as a single 7200RPM drive with all the optimizations, caching etc. is limited to roughly 150IOPS (which btw is more than the theoretical physical limitation, but is possible due to optimization algorithms and on drive caching etc.).
Usually seedboxes wind up having 500-1000KiB request sizes per I/O, this means at 220MiB/s you are doing 225 to 450 IOPS to maintain this speed. 220MiB/s and 450 IOPS is a breeze for an SSD. You would need at least 3 HDDs to get that speed in stable manner (500KiB request size). Those 253 peers are likely to require at the very minimum 1 IOPS each, quite frequently even more.
This is not accounting for all the other activity on a server, you might have hash checks going on, compressing an archive, GUI activity, FTP/SFTP transfers etc etc. going on, which all adds up.
Even at worst case scenario where your peers are slow necessitating that 1265 peers or more to get 1Gbps exhausted, SSDs are not going to bottleneck, you can continue doing everything else on the server without as much as a delay due to the storage. Those 1265 peers would most likely require 1265 IOPS or more, which would require 9 HDDs or more to sustain.
This is just on a single user, single rTorrent instance, highly optimized use scenario. Multi-user shared seedboxes will not achieve the same speeds as single user, single instance usage due to sheer data amount – there’s just too much of activity, writing to the drives, multiple times the active data amount etc. It’s quite complicated subject.
What SSD achieves is that it removes one potential bottleneck completely in almost every case, and makes using the server much more pleasant by not having storage I/O caused delays in applications and GUI.
This all means that we can have many many many times the upload slots and connected peers, and data can be served to a really high count of torrents and to a really high count of peers at the same time, ultimately achieving much higher total throughput – but only when there is sufficient demand for data.
Essentially, SSD seedboxes solves a subset of performance requirements completely, but does not magically mean super fast torrent speeds.