Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 12 Sep 2014 20:52:54 -0400
From:      Mike Tancsa <mike@sentex.net>
To:        Rick Macklem <rmacklem@uoguelph.ca>, Glen Barber <gjb@freebsd.org>
Cc:        freebsd-stable <freebsd-stable@freebsd.org>, Jack Vogel <jfvogel@gmail.com>
Subject:   Re: svn commit: r267935 - head/sys/dev/e1000 (with work around?)
Message-ID:  <54139566.7050202@sentex.net>
In-Reply-To: <1109209778.35732953.1410564825048.JavaMail.root@uoguelph.ca>
References:  <1109209778.35732953.1410564825048.JavaMail.root@uoguelph.ca>

next in thread | previous in thread | raw e-mail | index | archive | help
On 9/12/2014 7:33 PM, Rick Macklem wrote:
> I wrote:
>> The patches are in 10.1. I thought his report said 10.0 in the message.
>>
>> If Mike is running a recent stable/10 or releng/10.1, then it has been
>> patched for this and NFS should work with TSO enabled. If it doesn't,
>> then something else is broken.
> Oops, I looked and I see Mike was testing r270560 (which would have both
> the patches). I don't have an explanation why TSO and 64K rsize, wsize
> would cause a hang, but does appear it will exist in 10.1 unless it
> gets resolved.
>
> Mike, one difference is that, even with the patches the driver will be
> copying the transmit mbuf list via m_defrag() to 32 MCLBYTE clusters
> when using 64K rsize, wsize.
> If you can reproduce the hang, you might want to look at how many mbuf
> clusters are allocated. If you've hit the limit, then I think that
> would explain it.


I have been running the test for a few hrs now and no lockups of the 
nic, so doing the nfs mount with -orsize=32768,wsize=32768 certainly 
seems to work around the lockup.   How do I check the mbuf clusters ?

root@backup3:/usr/home/mdtancsa # vmstat -z | grep -i clu
mbuf_cluster:          2048, 760054,    4444,     370, 3088708,   0,   0
root@backup3:/usr/home/mdtancsa #
root@backup3:/usr/home/mdtancsa # netstat -m
3322/4028/7350 mbufs in use (current/cache/total)
2826/1988/4814/760054 mbuf clusters in use (current/cache/total/max)
2430/1618 mbuf+clusters out of packet secondary zone in use (current/cache)
0/4/4/380026 4k (page size) jumbo clusters in use (current/cache/total/max)
0/0/0/112600 9k jumbo clusters in use (current/cache/total/max)
0/0/0/63337 16k jumbo clusters in use (current/cache/total/max)
6482K/4999K/11481K bytes allocated to network (current/cache/total)
0/0/0 requests for mbufs denied (mbufs/clusters/mbuf+clusters)
0/0/0 requests for mbufs delayed (mbufs/clusters/mbuf+clusters)
0/0/0 requests for jumbo clusters delayed (4k/9k/16k)
0/0/0 requests for jumbo clusters denied (4k/9k/16k)
0 requests for sfbufs denied
0 requests for sfbufs delayed
0 requests for I/O initiated by sendfile
root@backup3:/usr/home/mdtancsa #

Interface is RUNNING and ACTIVE
em1: hw tdh = 343, hw tdt = 838
em1: hw rdh = 512, hw rdt = 511
em1: Tx Queue Status = 1
em1: TX descriptors avail = 516
em1: Tx Descriptors avail failure = 1
em1: RX discarded packets = 0
em1: RX Next to Check = 512
em1: RX Next to Refresh = 511


I just tested on the other em nic and I can wedge it as well, so its not 
limited to one particular type of em nic.


em0: Watchdog timeout -- resetting
em0: Queue(0) tdh = 349, hw tdt = 176
em0: TX(0) desc avail = 173,Next TX to Clean = 349
em0: link state changed to DOWN
em0: link state changed to UP

so it does not seem limited to just certain em nics

em0@pci0:0:25:0:        class=0x020000 card=0x34ec8086 chip=0x10ef8086 
rev=0x05 hdr=0x00
     vendor     = 'Intel Corporation'
     device     = '82578DM Gigabit Network Connection'
     class      = network
     subclass   = ethernet
     bar   [10] = type Memory, range 32, base 0xb1a00000, size 131072, 
enabled
     bar   [14] = type Memory, range 32, base 0xb1a25000, size 4096, enabled
     bar   [18] = type I/O Port, range 32, base 0x2040, size 32, enabled
     cap 01[c8] = powerspec 2  supports D0 D3  current D0
     cap 05[d0] = MSI supports 1 message, 64 bit enabled with 1 message
     cap 13[e0] = PCI Advanced Features: FLR TP


I can lock things up fairly quickly by running these 2 scripts across an 
nfs mount.

#!/bin/sh

while true
do
  dd if=/dev/urandom ibs=64k count=1000 | pbzip2 -c -p3 > /mnt/test.bz2
  dd if=/dev/urandom ibs=63k count=1000 | pbzip2 -c -p3 > /mnt/test.bz2
  dd if=/dev/urandom ibs=66k count=1000 | pbzip2 -c -p3 > /mnt/test.bz2
done
root@backup3:/usr/home/mdtancsa # cat i3
#!/bin/sh

while true
do
dd if=/dev/zero of=/mnt/test2 bs=128k count=2000
sleep 10
done


	---Mike




-- 
-------------------
Mike Tancsa, tel +1 519 651 3400
Sentex Communications, mike@sentex.net
Providing Internet services since 1994 www.sentex.net
Cambridge, Ontario Canada   http://www.tancsa.com/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?54139566.7050202>