by genesc » Mon Feb 14, 2011 7:44 am
I have to say that I am also seeing very slow Samba performance. I'm doing a ftp transfer from one computer to my PC, and then from my PC to a Samba share that only averages around 500 KB/sec (though the transfer speed bounces around between 300 KB/sec and 750 KB/sec), when normally the transfer does 2.5 MB/sec to a disk not on my Pogoplug. I have a pink Pogoplug running Arch Linux ARM install (uname -a gives "Linux Arch Linux ARM install 2.6.36 #1 PREEMPT Wed Dec 8 01:07:33 CST 2010 armv5tel Feroceon 88FR131 rev 1 (v5l) Marvell SheevaPlug Reference Board GNU/Linux") with the latest Samba installed. NTP and Samba are the only packages I've installed. My target disk is formatted with ext3.
Among the things I've tried:
1. Swapping out the ethernet cable.
2. Adding swap to my hard drive (swapon -s says it's not even being used)
3. Reinstalling Arch Linux ARM install on a completely new USB flash disk in case my old one was worn out.
When I do a wget, I get transfer speeds of 1.8 MB/sec over the internet, so the basic TCP stack probably isn't the problem. This problem started about a month or so ago. At that time I could do at least the 2.5 MB/sec my ftp source could do (which was the gating item). Then for some reason it dropped down to about 1.5 MB/sec (though I can't remember changing anything). After I "upgraded" to the latest kernel, it's now down to the 500 KB/sec.
I've done Wireshark traces. Though I'm no expert on Wireshark, it looks like there are a bunch of data packets of 1460 bytes each from my PC to my Pogoplug, for a total of 64KB (there's only about 0.00002 sec between each packet). My Pogoplug then responds with a series of ACKs to my PC. Between each ACK from the Pogoplug there are several milliseconds, with some actually taking a hundredth of a second between ACKs. Obviously, if it takes several milliseconds to ACK a packet with a payload of 1460 bytes, the overall transfer speed is going to be very slow, and roughly corresponds to the 500 KB/sec I'm seeing. If my interpretation is correct, then something must be very broken in this implementation of Samba on my Pogoplug. Note, I've tried using the Samba options specified by moonman (in fact, I think they are the default).