You are not logged in.
When transfering files from a laptop (wlan max 150mbs, usually not less than 81mbs) to a server (eth - 100mbs), the behaviour represented in these graphics happens.
I'm observing this with files at least bigger than ~70mb. It spikes (first third and end of the graphic) to pseudo ~30.000 Kib/S and then it freezes for a good number of seconds. If the file is really big (ex: 700mb/1Gb) it starts a cycle of spike/freeze until the file is transfered. The duration of the freezes and the spikes vary greatly. It can last 10 seconds as it can last well over a minute. And when I say freezes, I'm not only talking about the actual transfer, but also Dolphin, which is being used for the transfer (this happens in cli as well, I'm just using Dolphin so I can observe those graphics). I can't ls the mounted directory, but I can still ping the server during these freezes:
18 packets transmitted, 18 received, 0% packet loss, time 17025ms
rtt min/avg/max/mdev = 20.453/39.204/103.703/20.727 ms
The freezes happen on the client side. Everything seems fine in server side. Nothing in htop in either one. For some reason, Chromium becomes quite unresponsive during these freezes.
When transfering through ethernet this still happens, but very moderately. It slows down a whole lot on the bigger files. If it's big enough, it slows down until it freezes. In this, around the middle, it starts a transfer of a 1.3Gb file, steady at ~25.500, followed by long slow down until a short freeze.
Configs Client:
#
# /etc/fstab: static file system information
#
# <file system> <dir> <type> <options> <dump> <pass>
devpts /dev/pts devpts defaults 0 0
shm /dev/shm tmpfs nodev,nosuid 0 0
#/dev/cdrom /media/cd auto ro,user,noauto,unhide 0 0
#/dev/dvd /media/dvd auto ro,user,noauto,unhide 0 0
#/dev/fd0 /media/fl auto user,noauto 0 0
/dev/sda6 / ext4 defaults,user_xattr 0 1
/dev/sda7 swap swap defaults 0 0
/dev/sda8 /boot ext4 defaults 0 1
/dev/sda2 /media/win7 ntfs-3g defaults 0 0
/dev/sda5 /media/data ntfs-3g defaults 0 0
# vgaswitcherro
none /sys/kernel/debug debugfs defaults 0 0
# nfs mount
databox:/ /mnt/ nfs4 _netdev,proto=tcp,timeo=14,auto,async 0 0
#
# /etc/hosts.allow
#
mpd: ALL
rpcbind: 192.168.1.86/255.255.255.255
sshd: ALL
# End of file
/etc/conf.d/nfs-common.conf
# Parameters to be passed to nfs-common (nfs clients & server) init script.
#
# If you do not set values for the NEED_ options, they will be attempted
# autodetected; this should be sufficient for most people. Valid alternatives
# for the NEED_ options are "yes" and "no".
# Do you want to start the statd daemon? It is not needed for NFSv4.
NEED_STATD=""
# Options to pass to rpc.statd.
# See rpc.statd(8) for more details.
# N.B. statd normally runs on both client and server, and run-time
# options should be specified accordingly.
# STATD_OPTS="-p 32765 -o 32766"
STATD_OPTS=""
# Options to pass to sm-notify
# e.g. SMNOTIFY_OPTS="-p 32764"
SMNOTIFY_OPTS=""
# Do you want to start the idmapd daemon? It is only needed for NFSv4.
NEED_IDMAPD="yes"
# Options to pass to rpc.idmapd.
# See rpc.idmapd(8) for more details.
IDMAPD_OPTS=""
# Do you want to start the gssd daemon? It is required for Kerberos mounts.
NEED_GSSD=""
# Options to pass to rpc.gssd.
# See rpc.gssd(8) for more details.
GSSD_OPTS=""
# Where to mount rpc_pipefs filesystem; the default is "/var/lib/nfs/rpc_pipefs".
PIPEFS_MOUNTPOINT=""
# Options used to mount rpc_pipefs filesystem; the default is "defaults".
PIPEFS_MOUNTOPTS=""
/etc/idmpad.conf
[General]
Verbosity = 0
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = databox
[Mapping]
Nobody-User = nobody
Nobody-Group = nobody
[Translation]
Method = nsswitch
Configs Server:
# /etc/exports
#
# List of directories exported to NFS clients. See exports(5).
# Use exportfs -arv to reread.
#
# Example for NFSv2 and NFSv3:
# /srv/home hostname1(rw,sync) hostname2(ro,sync)
#
# Example for NFSv4:
# /srv/nfs4 hostname1(rw,sync,fsid=0)
# /srv/nfs4/home hostname1(rw,sync,nohide)
# Using Kerberos and integrity checking:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt)
# /srv/nfs4/home gss/krb5i(rw,sync,nohide)
#
/srv/nfs/ 192.168.1.0/24(rw,fsid=0,async,no_subtree_check,nohide)
/srv/nfs/apps 192.168.1.0/24(rw,async,no_subtree_check,nohide)
/srv/nfs/backup 192.168.1.0/24(rw,async,no_subtree_check,nohide)
/srv/nfs/downloads 192.168.1.0/24(rw,async,no_subtree_check,nohide)
/srv/nfs/games 192.168.1.0/24(rw,async,no_subtree_check,nohide)
/srv/nfs/music 192.168.1.0/24(rw,async,no_subtree_check,nohide)
/srv/nfs/video 192.168.1.0/24(rw,async,no_subtree_check,nohide)
#
# /etc/fstab: static file system information
#
# <file system> <dir> <type> <options> <dump> <pass>
devpts /dev/pts devpts defaults 0 0
shm /dev/shm tmpfs nodev,nosuid 0 0
#/dev/cdrom /media/cd auto ro,user,noauto,unhide 0 0
#/dev/dvd /media/dvd auto ro,user,noauto,unhide 0 0
#/dev/fd0 /media/fl auto user,noauto 0 0
UUID=2b6dd92f-33f1-4b21-be0e-5660be56fe35 / ext4 defaults 0 1
UUID=610c3f37-4496-4c14-a44d-a9956154e5f8 /home ext4 defaults 0 1
UUID=6791fc96-7e4c-4a4d-b1f2-1942c56324ad swap swap defaults 0 0
UUID=ff9379f8-cd75-4d0a-9872-00aa7a9d03a8 /boot ext2 defaults 0 1
UUID=da147e01-4175-47d0-ac20-9aaae7e79e51 /media/data-750 ext4 defaults 0 1
UUID=e2f50893-10e5-4b48-8faa-e33bf6622532 /media/data-160 ext4 defaults 0 1
/media/data-750/apps /srv/nfs/apps none bind 0 0
/media/data-750/backup /srv/nfs/backup none bind 0 0
/home/xehoz/downloads /srv/nfs/downloads none bind 0 0
/media/data-750/games /srv/nfs/games none bind 0 0
/home/xehoz/music /srv/nfs/music none bind 0 0
/home/xehoz/video /srv/nfs/video none bind 0 0
#
# /etc/hosts.allow
#
sshd: ALL
mpd: ALL
pyLoadCore: ALL
rtorrent: ALL
#nfsd: 192.168.1.0/255.255.255.0
#rpcbind: 192.168.1.0/255.255.255.0
#mountd: 192.168.1.0/255.255.255.0
#idmapd: 192.168.1.0/255.255.255.0
#statd: 192.168.1.0/255.255.255.0
nfsd: ALL
rpcbind: ALL
mountd: ALL
idmapd: ALL
statd: ALL
# End of file
/etc/conf.d/nfs-common.conf
# Parameters to be passed to nfs-common (nfs clients & server) init script.
#
# If you do not set values for the NEED_ options, they will be attempted
# autodetected; this should be sufficient for most people. Valid alternatives
# for the NEED_ options are "yes" and "no".
# Do you want to start the statd daemon? It is not needed for NFSv4.
NEED_STATD=""
# Options to pass to rpc.statd.
# See rpc.statd(8) for more details.
# N.B. statd normally runs on both client and server, and run-time
# options should be specified accordingly.
# STATD_OPTS="-p 32765 -o 32766"
STATD_OPTS=""
# Options to pass to sm-notify
# e.g. SMNOTIFY_OPTS="-p 32764"
SMNOTIFY_OPTS=""
# Do you want to start the idmapd daemon? It is only needed for NFSv4.
NEED_IDMAPD=""
# Options to pass to rpc.idmapd.
# See rpc.idmapd(8) for more details.
IDMAPD_OPTS=""
# Do you want to start the gssd daemon? It is required for Kerberos mounts.
NEED_GSSD=""
# Options to pass to rpc.gssd.
# See rpc.gssd(8) for more details.
GSSD_OPTS=""
# Where to mount rpc_pipefs filesystem; the default is "/var/lib/nfs/rpc_pipefs".
PIPEFS_MOUNTPOINT=""
# Options used to mount rpc_pipefs filesystem; the default is "defaults".
PIPEFS_MOUNTOPTS=""
/etc/conf.d/nfs-server.conf
# Parameters to be passed to nfs-server init script.
#
# Options to pass to rpc.nfsd.
# See rpc.nfsd(8) for more details.
NFSD_OPTS=""
# Number of servers to start up; the default is 8 servers.
NFSD_COUNT=""
# Where to mount nfsd filesystem; the default is "/proc/fs/nfsd".
PROCNFSD_MOUNTPOINT=""
# Options used to mount nfsd filesystem; the default is "rw,nodev,noexec,nosuid".
PROCNFSD_MOUNTOPTS=""
# Options for rpc.mountd.
# If you have a port-based firewall, you might want to set up
# a fixed port here using the --port option.
# See rpc.mountd(8) for more details.
MOUNTD_OPTS="--no-nfs-version 1 --no-nfs-version 2"
# Do you want to start the svcgssd daemon? It is only required for Kerberos
# exports. Valid alternatives are "yes" and "no"; the default is "no".
NEED_SVCGSSD=""
# Options to pass to rpc.svcgssd.
# See rpc.svcgssd(8) for more details.
SVCGSSD_OPTS=""
/etc/idmapd.conf
[General]
Verbosity = 0
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = databox
[Mapping]
Nobody-User = nobody
Nobody-Group = nobody
[Translation]
Method = nsswitch
Also, nfsstat on the server:
[xehoz@databox ~]$ nfsstat
Server rpc stats:
calls badcalls badauth badclnt xdrcall
35384 0 0 0 0
Server nfs v4:
null compound
1 0% 35383 99%
Server nfs v4 operations:
op0-unused op1-unused op2-future access close commit
0 0% 0 0% 0 0% 1828 1% 1337 1% 1380 1%
create delegpurge delegreturn getattr getfh link
104 0% 0 0% 0 0% 33242 30% 1723 1% 0 0%
lock lockt locku lookup lookup_root nverify
0 0% 0 0% 0 0% 1704 1% 0 0% 0 0%
open openattr open_conf open_dgrd putfh putpubfh
1339 1% 0 0% 1337 1% 0 0% 35295 32% 0 0%
putrootfh read readdir readlink remove rename
4 0% 787 0% 9 0% 0 0% 0 0% 0 0%
renew restorefh savefh secinfo setattr setcltid
23 0% 1441 1% 1443 1% 0 0% 2688 2% 3 0%
setcltidconf verify write rellockowner bc_ctl bind_conn
3 0% 0 0% 22104 20% 0 0% 0 0% 0 0%
exchange_id create_ses destroy_ses free_stateid getdirdeleg getdevinfo
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
getdevlist layoutcommit layoutget layoutreturn secinfononam sequence
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
set_ssv test_stateid want_deleg destroy_clid reclaim_comp
0 0% 0 0% 0 0% 0 0% 0 0%
Client rpc stats:
calls retrans authrefrsh
0 0 0
Offline
The wiki has a troubleshooting-area that mentions packetsizes in your config to battle slowdowns. Maybe you could try it out?
Offline
They do mention it, but in the context of Gibabit networks.
Default value for NFS4 is 32768. Maximum is 65536. Increase from default in increments of 1024 until maximum transfer rate is achieved.
My issue being with Wifi, I assume I should diminish, instead of increasing it, 1024 at a time?
Last edited by Xehoz (2011-05-08 19:50:34)
Offline
It's fine (no freezes) with any 1024 multiple below 20480 (not inclusive). However, it's extremely slow. I fluctuates a bit, but the transfer speed ranges from under 1 Mb/s to under 300 Kb/s (1024). Those are max values. I can't say exactly what the average is, but it's a lot lower than that.
In the particular spot I tried this, I had a 40-54 Mb/s connection. That should equal to 5-6.75 MB/s. Considering the circumstances, I'd be happy with half of that rate.
fstab line's like this (not necessarily my best value, haven't tested every single 1024 multiple from 1024 to 20500 yet):
# nfs mount
databox:/ /mnt/ nfs4 _netdev,proto=tcp,wsize=10240,rsize=10240,timeo=14,auto,async 0 0
*edit*
When connected at 150 Mb/s, it's naturally better, but it's still quite slow (relatively speaking). Average ~2Mb/s. In theory, 150 Mbps = 18.75 MBps. I realize this is just theory, but 2 Mb/s it's still ridiculously slow.
Last edited by Xehoz (2011-05-09 22:40:18)
Offline
sshfs speeds are a little better - not to much -, but eventually freezes.
I wonder if what I am experiencing is this bug? I'll try the LTS kernel.
*edit*
Didn't get to try it. Now that I diverted my attention to a wireless issue, I noticed there is an ongoing topic about Atheros AR9222x, which points to another kernel bug. A couple of people already reported it to be happening with Atheros AR928x as well. Which is my case (AR9285).
Comment #27 From tm512 2011-04-22 22:20:30
I am having some problem with ath9k on Arch Linux x86_64, kernel 2.6.38. My
wireless card is the AR9285. I am using wireless G, and while the packet loss
is not constant, it intermittently hops up to around 30%, then back down. Other
times it's a steady 1% to 5% loss, which makes using SSH irritating, but
doesn't affect downloads that much.Of course, this was not an issue with 2.6.37 and earlier, so I have been using
kernel 2.6.32 (Arch's LTS kernel) since, and have not tested to see if
nohwcrypt fixes the issue.
From what I can tell, this is my issue.
I suppose this can be closed, or whatever Moderators do to these posts.
Last edited by Xehoz (2011-05-10 00:40:37)
Offline