A Low Power Bittorrent Server - IBM 300PT

First, select a processor and system. There are many options. The lowest power processors x86 processors are made by Via. I decided the Via processors are generally underpowered and somewhat expensive. The next lowest power processors are notebook processors. They are generally more expensive and motherboards for them are limited and expensive. If you had an old notebook lying around, that would make a fine bittorrent server (possibly needing an external disk).

The Pentium III 733 is a reasonably fast, reasonably low power processor. One limitation is there is almost no power saving when the cpu is idle. Virtually all processors made the last 3 years draw less power when idle. In the last two years processors drop their frequency and voltage when load goes down. This was first available with notebook processors, but migrated to the desktop, as desktop processors use more power than notebook processors. If I couldn't locate an old system, I would likely use a low power desktop processor, as they are cheap and readily available. Many motherboards allow the processor voltage to be lowered, or there are software programs such as RM Clock that will allow setting the processor voltage as a function of load. I have used RM Clock to drop my notebook voltages on Turion as well as Core 2 Duo systems. Dropping the voltage n percent will reduce power by approximately n^2 percent. I have dropped my notebook voltage by 20%, which means a 36% reduction in power.

Rather than buy a new computer, I decided to use an existing (free) IBM desktop Pentium III system. The cost is unbeatable, the form factor desirable, and the CPU is relatively low power. I read the IBM manuals and found this particular model doesn't accept ECC memory, though other IBM desktop models do. Even worse, the max supported memory is 512mb. This isn't ideal, so I am now in the market for another low power system that takes ECC and is cheap. It came with a 20gb hard drive which was dedicated to the OS. A 200gb hard drive was added for storing the files. This machine was old enough that the BIOS didn't recognize the hard drive was over 137gb (new BIOS's know about big hard drives) but it wasn't a problem as the loaded OS didn't use the BIOS to access the big hard drive. The existing graphics card was adequate, as was the 10/100 Ethernet card. I eventually added a low power AGP video card with 32 mbytes of RAM, since I use a KVM switch, and I have a high resolution screen.

For software, a recent version of Linux was selected. In addition to being free, I think that Linux is much more secure than any version of Windows. It also can be configured to not require lots of resources, which is important with older hardware. ssh was enabled to transfer files to and from the server. A firewall was installed, and it allows ssh and the bittorrent protocol in. TCP wrappers was used to limit tcp access. The machine has never crashed.

Power consumption:

I ordered an adapter so I can use a notebook hard drive rather than a 3.5 inch hard drive for the OS. (If you do this, get adapter rails to mount a 2.5 inch drive in a 3.5 inch bay. My solution was a kludge.) Power consumption with the notebook drive:

I may also buy a seasonix SFX form factor 80+ power which should also save a few watts. It won't be very cost effective however.

Update on my Bittorrent Server

After about a year the 2.5 inch notebook hard drive became unreliable, which produced a variety of amusing symptoms such as the computer hanging. A friend pointed out that most notebook drives aren't designed for 24x7 operation, which I was subjecting mine to. (The drive itself had come from a 5 year old notebook computer.) I disconnected the drive and reformatted the 200gb hard drive to have the OS as well as the bittorrent storage area. I have re-thought my desire for running a 2.5 inch drive, unless it is rated for 24x7 operation. If I was building a bittorrent server from scratch I might consider one of the 'green' 3.5 inch drives, as they are lower power than most conventional drives.

A Lower Power Bittorrent Server - Compaq EVO N600

I wanted a lower power bittorrent server. I considered the Intel Atom, but with the current chipset, the power consumption was almost as high as my Pentium III 733 system. With the Intel D945GCLF m-ITX motherboard which has a single core Atom and a notebook hard drive, it idles at 27 watts. With the Zotac IONITX-A, which has the ION chipset and a dual-core Atom and a notebook hard drive, it idles at 22 watts. I considered an ARM chip based system. The best one I found was the SheevePlug development system. It features gigabit ethernet, USB2, draws about 5 watts, and costs $100. The downside was very limited Java support (Java is what Azureus and some other bittorrent programs are written it.) Also it didn't have a keyboard, mouse, or video connector. I could work around the KVM problem by using vnc or ssh, but it would be a bit of a hassle. I decided to stick with an x86 based processor.

I got a notebook from a friend with a Pentium III 1000. I found out that it used a desktop chip when I opened it up to change the BIOS battery. Also, the external video didn't work under windows or linux, which was a bit of a problem. It did have a firewire port, which was a nice touch. I ended up using an old Compaq Evo N-600 notebook I bought about 6 years ago. It has a Pentium III 1.2ghz mobile chip. It didn't have firewire or usb2, but the external video worked. The notebook has a single PS/2 port which supportes a keyboard and mouse PS/2 splitter, enabling me to use it with my KVM switch. It had come with 256mb of ram, but I had added 512mb of ram, and it supports a maximum of 1gb. I wish it supported ECC memory, but I have never seen a x86 based notebook support ECC memory. The hard drive was not big enough for storing my bittorrent files, but it was plenty big for the operating system. I added a PCMCIA card which supports Firewire and USB2. I bought an external 320gb 2.5 inch drive, for storing the bittorrent files. It came with a 3 year warranty, which is a good thing, as I will be using it 24x7, and it runs pretty hot. When the screen is on, it draws 23-24 watts AC. After about 10 minutes, the screensaver starts and it draws 17 watts AC. That is about half the power of my previous bittorrent server. I run the notebook with the screen folded open completely. This way, I can access the power switch, and the notebook runs cooler, since much of the heatsink is under the keyboard. The fan rarely comes on, making it virtually silent (except for the 2 hard drives).

A New Lower Power Bittorrent Server - IBM T40P

I got an IBM t40p notebook. This uses a newer pentium m processor than my Compaq Evo N-600 notebook. The IBM notebook uses a 1.6ghz processor, with twice the cache of the Evo. It also has gigabit ethernet, and usb2. With the screen turned off, it idles at 12-13 watts AC (without an external hard drive). It also can address 2gb of ram, rather than the 1gb of ram limit with the Evo. A better, stronger, faster, lower power bittorrent server.

SHA-1 performance on different bittorrent servers

Bittorrent uses sha1 for file integrity checking. It is a reasonably quick hash generator. When I started running bittorrent on a raspberry pi 2 I discovered that SHA1 is really quite slow on it. Here are some performance numbers for SHA1 on different computers I have access to. These numbers are from running sha1sum, not some optimized or assembly sha1 code.

Raspberry Pi 2 900mhz x4 512kb L2 cache -> 26 mbytes per second
Raspberry Pi 3 1.2ghz x4 512kb L2 cache -> 27-30 mbytes per second
Intel Pentium III 733 mhz 256kb L2 cache -> 23 mbytes per second
Intel Prntium III-M 1.2ghz 512kb L2 cache -> 86 mbytes per second
Intel Prntium M 1.6ghz 1mb L2 cache -> 123 mbytes per second
Intel Xeon L5520, 2.2ghz -> 218 mbytes per second

File integrity checking with Azureus/Vuze on different bittorrent servers

Bittorrent clients typically verify file integrity by using the SHA1 hash. This is generally accurate and fast. Vuze is written in Java which is complied to bytecode, and runs slower than code written in C. This depends on the quality of the Java execution environment, which depends on both the Java runtime and the architecture specific optimizations. Based on my measurements, the ARM-7 architecture is not well optimized with OpenJDK. These measurements are not very accurate as I had to use a stopwatch, but they are reasonably accurate. The conclusion is not to use OpenJDK for bittorrent with ARM-7 i.e. raspberry pi).

Raspberry Pi 2 900mhz x4 512kb L2 cache -> 0.65 mbytes per second
Intel Pentium III 733 mhz 256kb L2 cache -> 15 mbytes per second
Intel Prntium III-M 1.2ghz 512kb L2 cache -> 16 mbytes per second
Intel Prntium M 1.6ghz 1mb L2 cache -> 24 mbytes per second
Dell 3050 2.4ghz xx -> 80 mbytes per second

SSH performance on different bittorrent servers

SSH is an end to end encrypted secure shell. It can be used for remote login, file transfer, or things. Because it is encrypted it requires more CPU cycles than unencrypted programs such as ftp.

Raspberry Pi 2 900mhz x4 512kb L2 cache -> 4.4 - 5.6 mbytes per second
Raspberry Pi 3 1.2ghz x4 512kb L2 cache -> 7.9 - 8.3 mbytes per second
Intel Pentium III 733 mhz 256kb L2 cache -> 4.9 mbytes per second
Intel Prntium III-M 1.2ghz 512kb L2 cache -> 8.4 mbytes per second (100mbit ethernet)
Intel Prntium M 1.6ghz 1mb L2 cache -> 32.0 mbytes per second
Dell 3050 2.4ghz xx -> 47.4 mbytes per second
Intel Xeon L5520, 2.2ghz -> 52.5 mbytes per second

If you have comments or suggestions, Email me at turbo-www@weasel.com

Created with gnu emacs and template-toolkit, not some sissy HTML editor.

No Java or javascript needed to view my web pages. They both have significant security issues.

Home