SAP / arp142-hana

Project "Arp 142" - Linux OS checks for HANA environments - SLES,RHEL for Intel x64 and IBM Power
Apache License 2.0
3 stars 2 forks source link

new CHECK: PowerLinux - MTU=9000 and 10G speed and TSO=on #117

Open PeterPitterling opened 5 months ago

PeterPitterling commented 5 months ago

at least 1 ethX device should have MTU=9000 and 10G speed

tso = eth["tcp-segmentation-offload"]
if tso == "off":
  tso_warning = 1
PeterPitterling commented 5 months ago
    def validateNetwork(self):
        if self.ARCHITECTURE != "ppc64" and self.ARCHITECTURE != "ppc64le":
            # check defined only on ppc64
            return ("CHECK_NETWORK",self.hostname,"network","",0,'')
        try:
            import re, os
            MEMInformationContainer = self.getNetworkInfo()
            mtu_warning = 0
            tso_warning = 0
            linkspeed_10g_possible = 0;
            linkspeed_10g_avail = 0

            for n in self.net:
                eth = self.net[n]
                driver = eth["driver"]
                speed = int(eth["Speed"].split('M',1)[0])
                if driver == "ibmveth":
                    # ibm driver does not know about vio link speed
                    linkspeed_10g_possible = 1
                else:
                    # non ibmveth driver, we have linkspeed information
                    if (speed > 1000):
                        linkspeed_10g_avail = 1
                mtu = int(eth["MTU"])
                tso = eth["tcp-segmentation-offload"]
                if mtu < 9000:
                    mtu_warning = 1
                if tso == "off":
                    tso_warning = 1

            if tso_warning == 1 or mtu_warning == 1:
                # neither tso nor mtu problem found
                if linkspeed_10g_avail == 1:
                    # generate error message
                    reason = "\nYou are running a 10 Gb Ethernet Network, but the network settings do not allow maximum performance. Please consult the implementation guide for setting up 10 Gbit Ethernet correctly"
                    self.exceptions["validateNetwork"] = self.exceptionInfo("WARNING",reason) 
                    self.report["validateNetwork"] = self.reportInfo("FAILED")
                    return ("CHECK_NETWORK",self.hostname,"network","",1,reason)

                if linkspeed_10g_possible == 1:
                    reason = "\nIf you are running in a 1 Gb ethernet environment please ignore this warning.\n If you are running in a 10 Gb ethernet network environment your network settings do not allow maximum performance. Please consult the implementation guide for setting up 10 Gbit Ethernet correctly"
                    self.exceptions["validateNetwork"] = self.exceptionInfo("WARNING",reason)
                    self.report["validateNetwork"] = self.reportInfo("FAILED")
                    return ("CHECK_NETWORK",self.hostname,"network","",1,reason) 
                    # generate warning

            self.report["validateNetwork"] = self.reportInfo("SUCESS")
            return ("CHECK_NETWORK",self.hostname,"network","",0,"" )
        except Exception,e:
            return ("CHECK_NETWORK",self.hostname,"","",5,"" )
        pass
PeterPitterling commented 5 months ago
atgls90010:~ # grep . -r /sys/class/net/**/operstate -r /sys/class/net/**/mtu -r /sys/class/net/**/speed
/sys/class/net/bond0/operstate:up
/sys/class/net/eth0/operstate:up
/sys/class/net/eth1/operstate:down
/sys/class/net/eth2/operstate:down
/sys/class/net/eth3/operstate:up
/sys/class/net/eth4/operstate:down
/sys/class/net/eth5/operstate:up
/sys/class/net/lo/operstate:unknown
/sys/class/net/usb0/operstate:down
/sys/class/net/vlan2/operstate:up
/sys/class/net/vlan3/operstate:up
/sys/class/net/vlan4/operstate:up

/sys/class/net/bond0/mtu:9000
/sys/class/net/eth0/mtu:1500
/sys/class/net/eth1/mtu:1500
/sys/class/net/eth2/mtu:1500
/sys/class/net/eth3/mtu:9000
/sys/class/net/eth4/mtu:1500
/sys/class/net/eth5/mtu:9000
/sys/class/net/lo/mtu:65536
/sys/class/net/usb0/mtu:1500
/sys/class/net/vlan2/mtu:9000
/sys/class/net/vlan3/mtu:9000
/sys/class/net/vlan4/mtu:1500

/sys/class/net/bond0/speed:20000
/sys/class/net/eth0/speed:1000
grep: /sys/class/net/eth1/speed: Invalid argument
grep: /sys/class/net/eth2/speed: Invalid argument
/sys/class/net/eth3/speed:10000
grep: /sys/class/net/eth4/speed: Invalid argument
/sys/class/net/eth5/speed:10000
grep: /sys/class/net/lo/speed: Invalid argument
grep: /sys/class/net/usb0/speed: Invalid argument
/sys/class/net/vlan2/speed:20000
/sys/class/net/vlan3/speed:20000
/sys/class/net/vlan4/speed:20000