Linux – How to change ‘Advertised pause frame use’ and autonegotiation setting on gigabit NIC

ethernetlinuxnetworkingnfs

I'm investigating some poor nfs performance on a new server, as compared to an old server. Both the old and the new server are nfs clients, and they connect to the same exact NetApp nfs server.

My specific question: How to I change the "Advertised pause frame use" setting?

I took a look on the switch side, and the ports on the switch say 1000 Full duplex for both hosts. However, the flow control for the old server shows "Sy/Asy" but the new server is set to Sym. I assume that Asy=Asymmetric and Sym=Symmetric, and my other assumption is that the switch sees Sym because Advertised pause frame use is set to Symmetric on the Linux side. How can I change this to Asymmetric? Could this setting affect performance? I'm just trying to rule out as much as possible.

These are dedicated storage links, i.e. they're a separate NIC and on a separate subnet than the primary NIC.

I see no iowait issues on both the old and new servers, so the CPUs and memory don't appear to be an issue. I figure its something with the eth settings or nfs settings. I can go into more detail on setup, but wanted to answer this specific question first.

New host (CentOS 6.3 on HP ProLiant Dl360P Gen8)

$ sudo ethtool eth3
Settings for eth3:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        **Advertised pause frame use: Symmetric**
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 4
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: off
        Supports Wake-on: g
        Wake-on: g
        Current message level: 0x000000ff (255)
        Link detected: yes

Driver: tg3

Old host (SLES 9 SP4 on Sun Fire x4150)

$ sudo ethtool eth1
Settings for eth1:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: umbg
        Wake-on: g
        Current message level: 0x00000007 (7)
        Link detected: yes

Driver: e1000

Best Answer

Apparently pause and autoneg are settings that can't be set to off on a gigabit NIC per IEEE standards. Thats the word around the intertubes.