Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 24 Jan 2010 19:39:11 +0100
From:      "Emanuele A. Bagnaschi" <zephyrus.271@gmail.com>
To:        FreeBSD-STABLE Mailing List <freebsd-stable@freebsd.org>
Subject:   Problematic network performance with Marvell 8072 on HP Probook 4710s
Message-ID:  <20100124183911.GA2589@polaris>

next in thread | raw e-mail | index | archive | help

--aT9PWwzfKXlsBJM1
Content-Type: multipart/mixed; boundary="i0/AhcQY5QxfSsSZ"
Content-Disposition: inline


--i0/AhcQY5QxfSsSZ
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Hi,
I've been experiencing a troubling issue with a Marvell 8072 NIC on an HP
ProBook 4710s.=20
I first noticed that there is a problem while transferring some files
through scp to a FreeBSD8-STABLE server: CPUs usage sky-rocketed to 100% (s=
ystem)
and network performance was awful (about 1.8 MiB/s).
I tried and succeeded in reproducing the issue with 'ttcp'. I decided
to use this little benchmark because is so simple (it is linked only agains=
t libc) that I can
be sure that the problem doesn't depend on scp/ssh or other parts of the sy=
stem.

This is the output of 'uname -a':

FreeBSD polaris 8.0-STABLE FreeBSD 8.0-STABLE #24: Sun Jan 17 21:08:02
CET 2010     toor@polaris:/usr/obj/usr/src/sys/POLARIS  amd64

Here it's some relevant information to identify the NIC:

first from 'dmesg'

mskc0: <Marvell Yukon 88E8072 Gigabit Ethernet> port 0x2000-0x20ff mem
0x90100000-0x90103fff irq 17 at device 0.0 on pci134
msk0: <Marvell Technology Group Ltd. Yukon EX Id 0xb5 Rev 0x02> on mskc0
msk0: Ethernet address: 00:25:b3:52:fc:fa
miibus0: <MII bus> on msk0
mskc0: [FILTER]
msk0: link state changed to DOWN
msk0: link state changed to UP

and then from 'pciconf -lv'

mskc0@pci0:134:0:0:     class=3D0x020000 card=3D0x3074103c chip=3D0x436c11ab
rev=3D0x10 hdr=3D0x00
    vendor     =3D 'Marvell Semiconductor (Was: Galileo Technology Ltd)'
    device     =3D 'Marvell 8072 Ethernet Nic (88E8072)'
    class      =3D network
    subclass   =3D ethernet

Here it's the output of 'ifconfig':

msk0: flags=3D8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu
1500
        options=3D19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO=
4>
        ether 00:25:b3:52:fc:fa
        inet 192.168.1.4 netmask 0xffffff00 broadcast 192.168.1.255
        media: Ethernet autoselect (100baseTX <full-duplex,flag0,flag1>)
        satus: active


Attached you will find the results of my tests, I hope that the file
will be self-explanatory.

I'm wondering, are there any other tunable parameters (apart from MSI on/of=
f) I
should try to modify? Should I file a PR? Are there any other interesting d=
ata
I should gather? With the proper guide I'm also available to contribute some
code myself.

Best regards
--=20
Emanuele A. Bagnaschi

--i0/AhcQY5QxfSsSZ
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=test_results
Content-Transfer-Encoding: quoted-printable

* notebook - Linux 2.6.32 - hostname: elsinore *
* server - FreeBSD8-STABLE - hostname:atlantis *=20


FIRST RUN - elsinore transmits, atlantis receives

elsinore --> atlantis (output on elsinore)

ttcp -n 12800 -t -s atlantis
ttcp-t: buflen=3D8192, nbuf=3D12800, align=3D16384/0, port=3D5001  tcp  -> =
atlantis
ttcp-t: socket
ttcp-t: connect
ttcp-t: 104857600 bytes in 8.87 real seconds =3D 11538.31 KB/sec +++
ttcp-t: 12800 I/O calls, msec/call =3D 0.71, calls/sec =3D 1442.29

atlantis <-- elsinore (output on atlantis)

ttcp -r -s
ttcp-r: buflen=3D8192, nbuf=3D2048, align=3D16384/0, port=3D5001  tcp
ttcp-r: socket
ttcp-r: accept from 192.168.1.4
ttcp-r: 16777216 bytes in 1.43 real seconds =3D 11464.61 KB/sec +++
ttcp-r: 11562 I/O calls, msec/call =3D 0.13, calls/sec =3D 8090.45
ttcp-r: 0.0user 0.0sys 0:01real 3% 14i+1022d 502maxrss 0+2pf 11559+42csw

SECOND RUN - elsinore receives, atlantis transmits

elsinore <-- atlantis (output on elsinore)

ttcp -r -s
ttcp-r: buflen=3D8192, nbuf=3D2048, align=3D16384/0, port=3D5001  tcp
ttcp-r: socket
ttcp-r: accept from 192.168.1.1
ttcp-r: 104857600 bytes in 9.00 real seconds =3D 11372.89 KB/sec +++
ttcp-r: 29235 I/O calls, msec/call =3D 0.32, calls/sec =3D 3246.94
ttcp-r: 0.0user 0.7sys 0:09real 8% 0i+0d 910maxrss 0+2pf 29195+456csw

atlantis --> elsinore (output on atlantis)

ttcp -t -s -n 12800 elsinore
ttcp-t: buflen=3D8192, nbuf=3D12800, align=3D16384/0, port=3D5001  tcp  -> =
elsinore
ttcp-t: socket
ttcp-t: connect
ttcp-t: 104857600 bytes in 8.99 real seconds =3D 11394.04 KB/sec +++
ttcp-t: 12800 I/O calls, msec/call =3D 0.72, calls/sec =3D 1424.26
ttcp-t: 0.0user 0.2sys 0:08real 3% 15i+1095d 578maxrss 0+2pf 27143+2543csw

-----

* notebook - FreeBSD8-STABLE - hostname:polaris - msk with MSI enabled *
* server - FreeBSD8-STABLE - hostname:atlantis *


FIRST RUN - polaris transmits, atlantis receives

polaris --> atlantis (output on polaris)

ttcp -t -s -n 12800 atlantis
ttcp-t: buflen=3D8192, nbuf=3D12800, align=3D16384/0, port=3D5001  tcp  -> =
atlantis
ttcp-t: socket
ttcp-t: connect
ttcp-t: 104857600 bytes in 13.63 real seconds =3D 7514.90 KB/sec +++
ttcp-t: 12800 I/O calls, msec/call =3D 1.09, calls/sec =3D 939.36
ttcp-t: 0.1user 10.7sys 0:13real 80% 5i+408d 674maxrss 0+1pf 1004+1525csw

atlantis <-- polaris (output on atlantis)

ttcp -r -s
ttcp-r: buflen=3D8192, nbuf=3D2048, align=3D16384/0, port=3D5001  tcp
ttcp-r: socket
ttcp-r: accept from 192.168.1.4
ttcp-r: 104857600 bytes in 13.63 real seconds =3D 7512.69 KB/sec +++
ttcp-r: 76875 I/O calls, msec/call =3D 0.18, calls/sec =3D 5640.02
ttcp-r: 0.0user 0.3sys 0:13real 2% 16i+1168d 502maxrss 0+2pf 76849+2128csw

SECOND RUN - polaris receives, atlantis transmits

polaris <-- atlantis (output on polaris)

ttcp -r -s
ttcp-r: buflen=3D8192, nbuf=3D2048, align=3D16384/0, port=3D5001  tcp
ttcp-r: socket
ttcp-r: accept from 192.168.1.1
ttcp-r: 104857600 bytes in 53.68 real seconds =3D 1907.67 KB/sec +++
ttcp-r: 14021 I/O calls, msec/call =3D 3.92, calls/sec =3D 261.21
ttcp-r: 0.0user 14.9sys 0:53real 27% 7i+563d 600maxrss 0+2pf 1176+2765csw

atlantis --> polaris (output on polaris)

ttcp -t -s -n 12800 elsinore
ttcp-t: buflen=3D8192, nbuf=3D12800, align=3D16384/0, port=3D5001  tcp  -> =
elsinore
ttcp-t: socket
ttcp-t: connect
ttcp-t: 104857600 bytes in 53.59 real seconds =3D 1910.75 KB/sec +++
ttcp-t: 12800 I/O calls, msec/call =3D 4.29, calls/sec =3D 238.84
ttcp-t: 0.0user 0.2sys 0:53real 0% 17i+1207d 576maxrss 0+2pf 40032+473csw


-----

* notebook - FreeBSD8-STABLE - hostname:polaris - msk with MSI disabled *
* server - FreeBSD8-STABLE - hostname:atlantis *


FIRST RUN - polaris transmits, atlantis receives

polaris --> atlantis (output on polaris)

ttcp -t -s -n 12800 atlantis
ttcp-t: buflen=3D8192, nbuf=3D12800, align=3D16384/0, port=3D5001  tcp  -> =
atlantis
ttcp-t: socket
ttcp-t: connect
ttcp-t: 104857600 bytes in 13.27 real seconds =3D 7716.57 KB/sec +++
ttcp-t: 12800 I/O calls, msec/call =3D 1.06, calls/sec =3D 964.57
ttcp-t: 0.2user 10.3sys 0:13real 79% 5i+419d 674maxrss 0+1pf 823+1938csw

atlantis <-- polaris (output on atlantis)
ttcp -r -s                                                                 =
                                                                           =
                                                                           =
                        ~
ttcp-r: buflen=3D8192, nbuf=3D2048, align=3D16384/0, port=3D5001  tcp
ttcp-r: socket
ttcp-r: accept from 192.168.1.4
ttcp-r: 104857600 bytes in 13.27 real seconds =3D 7713.85 KB/sec +++
ttcp-r: 76800 I/O calls, msec/call =3D 0.18, calls/sec =3D 5785.39
ttcp-r: 0.0user 0.3sys 0:13real 2% 15i+1065d 502maxrss 0+2pf 76778+2373csw


SECOND RUN - polaris receives, atlantis transmits

polaris <-- atlantis (output on polaris)

ttcp -r -s
ttcp-r: buflen=3D8192, nbuf=3D2048, align=3D16384/0, port=3D5001  tcp
ttcp-r: socket
ttcp-r: accept from 192.168.1.1
ttcp-r: 104857600 bytes in 59.32 real seconds =3D 1726.28 KB/sec +++
ttcp-r: 13499 I/O calls, msec/call =3D 4.50, calls/sec =3D 227.57
ttcp-r: 0.0user 13.4sys 0:59real 22% 7i+545d 600maxrss 0+2pf 710+2732csw

atlantis --> polaris (output on atlantis)

ttcp -t -s -n 12800 elsinore
ttcp-t: buflen=3D8192, nbuf=3D12800, align=3D16384/0, port=3D5001  tcp  -> =
elsinore
ttcp-t: socket
ttcp-t: connect
ttcp-t: 104857600 bytes in 59.22 real seconds =3D 1729.15 KB/sec +++
ttcp-t: 12800 I/O calls, msec/call =3D 4.74, calls/sec =3D 216.14
ttcp-t: 0.0user 0.2sys 0:59real 0% 14i+1029d 576maxrss 0+2pf 41750+287csw

--i0/AhcQY5QxfSsSZ--

--aT9PWwzfKXlsBJM1
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.14 (FreeBSD)

iEYEARECAAYFAktck88ACgkQrwnEPevYb9UIOQCgqjvhUdhFl5hPM817bQw0pgWt
QZwAnRGfVgm8zhd1yue7XYMSpF/B63dW
=TDK7
-----END PGP SIGNATURE-----

--aT9PWwzfKXlsBJM1--



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