Page 1 of 1

Whs 2011 / server 2008R2 bandwidth

Posted: July 19th, 2012, 10:09 pm
by Ramdodger
Having a strange bandwidth issue running Home Server 2011 and Server 2008 R2. Hardware backend is AMD x4, 8GB ram 1000full duplex. Just upgraded to a 75/35 line (router is also set to 1000full duplex), getting 85mbps down, 36mbps up (speed test.net). With Sabnzbd 7.x getting a fluctuating 7-8MB down using either WHS2011 or Server2008R2. Swapped in a new drive (same size and speed) and loaded Windows 7 Enterprise (to rule out hardware/nic issues) and I'm getting 10.2MB down. Have a laptop running Windows 7 enterprise, Sabnzbd 7.x and getting 10MB+ over wifi. Searched all the forums and still scratching my head.

Re: Whs 2011 / server 2008R2 bandwidth

Posted: July 20th, 2012, 1:24 am
by sander
So what is the problem? 7 MB versus 10 MB?

Or 7-8-10MB versus 85Mbps? If so: Bytes versys bits ... see http://wiki.sabnzbd.org/faq#toc29

Re: Whs 2011 / server 2008R2 bandwidth

Posted: July 20th, 2012, 2:07 am
by exussum
sander wrote:So what is the problem? 7 MB versus 10 MB?

Or 7-8-10MB versus 85Mbps? If so: Bytes versys bits ... see http://wiki.sabnzbd.org/faq#toc29
Think his issue is hes getting faster speeds over wifi ?

Re: Whs 2011 / server 2008R2 bandwidth

Posted: July 20th, 2012, 10:26 am
by Ramdodger
My main concern is what is different in Server2008/WHS2011 and windows7 that would cause the bandwidth to be throttled on the server OS's. Wired or wifi on the same hardware, windows7 is getting a smooth end even 10.2MB/s. The server OS's get a fluctuating 7-8MB/s.

Re: Whs 2011 / server 2008R2 bandwidth

Posted: August 30th, 2012, 3:19 pm
by Ramdodger
I've finally found a solution that I should have tried a long time ago.

Open Task Manager and set the Affinity of SABnzbd.exe to use a single CPU core. I am now getting a smooth and consistent 10.2 MB/s. You can create a shortcut or batch file so you don't have to manually set the process to use 1 core every time you restart.

Create a shortcut that points to SABnzbd.exe, go into the properties and set the target to:
C:\Windows\System32\cmd.exe /C start /affinity 1 sabnzbd.exe

or create a batch file and have it run upon startup:
@echo off
cd "C:\Program Files (x86)\Sabnzbd"
c:\windows\system32\cmd.exe /C start /affinity 1 SABnzbd.exe
exit

Hope this helps someone with a similar issue...

Re: Whs 2011 / server 2008R2 bandwidth

Posted: August 30th, 2012, 4:04 pm
by shypike
Interesting.
I know Python cannot use more than one core, but did not realize that you have tell some OSses that.
As far as I can tell, there's no predictably good method of setting it programmatically.
Meaning, that if SABnzbd should try to force single-core mode, the result may also get worse.
The reason is that you cannot just say that you want a single core; you need to tell which one.

Re: Whs 2011 / server 2008R2 bandwidth

Posted: August 31st, 2012, 2:33 am
by sander
Interesting indeed. http://www.linuxjournal.com/article/6799 telss CPU-switching causes cache misses, and "Thus, cache miss rates grow very large. CPU affinity protects against this and improves cache performance."

I did some affinity tests on my Ubuntu Linux (but not yet download speed tests):

To see which CPU SAB is running on:

Code: Select all

cat /proc/[123456789]*/stat | grep -i sabnzbd | grep -vi grep | awk '{ print "SABnzbd is running on CPU " $(NF-5) }'
Start SABnzbd, later on bind SABnzbd to CPU 2 (so bitmask = 2^2 = 4):

Code: Select all

taskset 0x00000004 ./SABnzbd.py

After some time, change SAB-pid (14468) to run on CPU 0:

Code: Select all

sander@R540:~$ taskset -c -p 0 14468
pid 14468's current affinity list: 2
pid 14468's new affinity list: 0
sander@R540:~$



Results:

Code: Select all

sander@R540:~$ ./sab-cpu.sh 
SABnzbd is running on CPU 0
SABnzbd is running on CPU 0
SABnzbd is running on CPU 3
SABnzbd is running on CPU 2
SABnzbd is running on CPU 0
SABnzbd is running on CPU 1
SABnzbd is running on CPU 0
SABnzbd is running on CPU 1
SABnzbd is running on CPU 0
SABnzbd is running on CPU 1
SABnzbd is running on CPU 1
SABnzbd is running on CPU 0
SABnzbd is running on CPU 2

SABnzbd is running on CPU 0

SABnzbd is running on CPU 2
SABnzbd is running on CPU 2
SABnzbd is running on CPU 2
SABnzbd is running on CPU 2
SABnzbd is running on CPU 2
SABnzbd is running on CPU 2
SABnzbd is running on CPU 2
SABnzbd is running on CPU 2
SABnzbd is running on CPU 2
SABnzbd is running on CPU 2
SABnzbd is running on CPU 2

SABnzbd is running on CPU 0
SABnzbd is running on CPU 0
SABnzbd is running on CPU 0
SABnzbd is running on CPU 0
SABnzbd is running on CPU 0
SABnzbd is running on CPU 0
EDIT:

Another way to see the CPU:

"ps -F ax" shows a column PSR (probably "ProceSsoR"): the processor that process is currently assigned to.

So:

Code: Select all

sander@R540:~$ ps -F ax | grep -i -e PSR -e SABnzbd | grep -vi grep
UID        PID  PPID  C    SZ   RSS PSR STIME TTY      STAT   TIME CMD
sander   18731 10705 11 649954 65008  1 09:45 pts/8    Sl+    0:01 /usr/bin/python -OO ./SABnzbd.py
sander@R540:~$ 
sander@R540:~$ ps -F ax | grep -i -e PSR -e SABnzbd | grep -vi grep
UID        PID  PPID  C    SZ   RSS PSR STIME TTY      STAT   TIME CMD
sander   18731 10705 12 649954 66212  0 09:45 pts/8    Sl+    0:02 /usr/bin/python -OO ./SABnzbd.py
sander@R540:~$ 
First PSR 1, then PSR 0 ... CPU was switched.