मैं अपने एनआईसी की गति को कैसे सत्यापित करूं?


119

मैंने अभी लिनक्स में एक नया गीगाबिट नेटवर्क इंटरफेस कार्ड (एनआईसी) स्थापित किया है। मैं कैसे बताऊं कि क्या यह वास्तव में गीगाबिट गति के लिए सेट है? मेरे ethtoolपास गति सेट करने का एक विकल्प है, लेकिन मैं यह पता नहीं लगा सकता कि इसकी वर्तमान गति की रिपोर्ट कैसे करें।


1
ethtool -h कहती है: ethtool DEVNAME डिवाइस के बारे में मानक जानकारी प्रदर्शित करें
Ryan Babchishin

जवाबों:


165

बस एक कमांड का उपयोग करें: ethtool eth0आवश्यक जानकारी प्राप्त करने के लिए। उदाहरण के लिए:

$ sudo ethtool eth0 | grep Speed

Speed: 1000Mb/s

2
यदि आप अपने सभी इंटरफेस की पूरी सूची है चाहते हैं, तो आप इस कमांड का उपयोग कर सकते हैं:for i in $(netstat -i | cut -f1 -d" " | tail -n+3) ; do echo "$i: $(ethtool "$i" | grep Speed | sed 's/Speed://g')" ; done
कोड-सोर्स

यदि आप "गति: अज्ञात!" आप गलत एथएक्सएक्सएक्स नाम का उपयोग कर सकते हैं, एक डबल चेक के लायक :)
रॉगरडपैक

76

एथलूल के गुम होने पर कर्नेल से जानकारी का उपयोग करना संभव है:

cat /sys/class/net/<interface>/speed

Eth0 नाम के इंटरफ़ेस के लिए उदाहरण:

cat /sys/class/net/eth0/speed

5
नोट: केवल 2.6.33 संस्करण के बाद से उपलब्ध
zhaorufei

6
"अमान्य तर्क" प्राप्त करना
wi1

@ wi1: उपयोग को स्पष्ट करने के लिए एक उदाहरण जोड़ा गया। क्या यह अब काम कर रहा है?
ईसाई

@ क्रिसियन हाँ यह धन्यवाद है, लेकिन केवल मेरे कुछ इंटरफेस पर, जो मैंने पढ़ा है, इसलिए मुझे उम्मीद है कि मैं अच्छा हूँ
wi1

RHEL6 ने अपने 2.6.32 कर्नेल में इसे वापस भेज दिया है।
डैन प्रिट्स

42

नोट:mii-tool इस डिस्क्लेमर के लिए मैन पेज :

This program is obsolete. For replacement check ethtool.

mii-toolबातचीत की गई नेटवर्क स्पीड देखने के लिए उपयोग करें ।

पूर्व।

eth0: no link
eth1: negotiated 100baseTx-FD, link ok

15
डेबियन आधारित प्रणालियों के लिए, ethtoolडिफ़ॉल्ट रूप से स्थापित नहीं है। लेकिन mii-tool, आवश्यक "नेट-टूल्स" पैकेज के हिस्से के रूप में है। तो यह मेरे लिए सबसे अच्छा समाधान था।
मिशाल जूल

1
मैं इसे एमआईआई-टूल के लिए मैन पेज में देखता हूं "यह कार्यक्रम अप्रचलित है। वैध मीडिया केवल 100baseT4, 100baseTx-FD, 100baseTx-HD, 10baseT-FD और 10baseT-HD ईथरनेट कार्ड हैं। प्रतिस्थापन-मानसिक जांच के लिए एथलेटूल।" : |
रोजरपैक

जबकि mii-toolरिपोर्ट 'बातचीत के जरिए 100 baseTx-एफडी प्रवाह नियंत्रण, लिंक ठीक', दोनों ethtoolऔर cat /sys/class/net/eth…/speed'पर सहमत 1000 Mb / s पूर्ण द्वैध'। यह USB 3.0 नियंत्रक के लिए है, अर्थात् ASIX AX88179 (लिनक्स के लिए 'ax88179_178a' ड्राइवर)।
एंटोन सैमसनोव

23

यहां कुछ शानदार जवाब हैं, मैं बस कुछ और विकल्प जोड़ना चाहता था।

1. मुझे पता है कि यह वह नहीं है जो आपने पूछा था (अन्य तरीकों से पढ़ें)। लेकिन अगर आप अपने एनआईसी के वास्तविक विश्व प्रदर्शन को जानना चाहते हैं , बजाय इसके कि आपका कंप्यूटर क्या कहता है, तो आप iperf का उपयोग कर सकते हैं। मैं आमतौर पर ऐसा करता हूं - क्योंकि आप कभी नहीं जानते। मैंने हाल ही में 1Gb NIC खरीदा है जो केवल 672Mbps पर ट्रांसफर किया गया था लेकिन यह अपलिंक 1Gb था। अच्छी बात है कि मैंने जाँच की।

आपको दो कंप्यूटर की आवश्यकता होगी।

कंप्यूटर एक पर, सर्वर मोड में iperf चलाएं:

iperf -s

दूसरे पर, क्लाइंट मोड में iperf चलाएं:

iperf -c 192.168.0.10

यदि आप पूर्ण द्वैध गति देखना चाहते हैं, तो इसके बजाय यह प्रयास करें:

iperf -d -c 192.168.0.10

सर्वर आईपी पते के लिए 192.168.0.10 स्थानापन्न

2. उबंटू सिस्टम पर, /var/log/kern.logगिरी घटनाओं के सीमित लॉगिंग है। यह बदलने पर एनआईसी की लिंक गति और स्थिति रिकॉर्ड करेगा। मुझे यकीन है कि अन्य वितरण शायद ऐसा ही कुछ करते हैं या ऐसा करने के लिए सेटअप हो सकते हैं।

$ tail -n 300 /var/log/kern.log.1 | grep slave0
Aug 28 12:54:04 haze kernel: [ 9452.766248] e1000e: slave0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
Aug 28 12:54:41 haze NetworkManager[921]: <info>  [1472403281.8486] device (slave0): link disconnected
Aug 28 12:54:41 haze kernel: [ 9489.898476] e1000e: slave0 NIC Link is Down

3. आप शायद कभी नहीं, कभी भी यह बहुत दूर जाने की जरूरत है, लेकिन आप गति प्राप्त करने के लिए सी कोड लिख सकते हैं । परीक्षण किए गए काम और रूट की आवश्यकता नहीं है।

https://stackoverflow.com/questions/2872058/get-link-speed-programmatically

#include <stdio.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <linux/sockios.h>
#include <linux/if.h>
#include <linux/ethtool.h>
#include <string.h>
#include <stdlib.h>
int main (int argc, char **argv)
{
    int sock;
    struct ifreq ifr;
    struct ethtool_cmd edata;
    int rc;
    sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
    if (sock < 0) {
        perror("socket");
        exit(1);
    }
    strncpy(ifr.ifr_name, "eth0", sizeof(ifr.ifr_name));
    ifr.ifr_data = &edata;
    edata.cmd = ETHTOOL_GSET;
    rc = ioctl(sock, SIOCETHTOOL, &ifr);
    if (rc < 0) {
        perror("ioctl");
        exit(1);
    }
    switch (ethtool_cmd_speed(&edata)) {
        case SPEED_10: printf("10Mbps\n"); break;
        case SPEED_100: printf("100Mbps\n"); break;
        case SPEED_1000: printf("1Gbps\n"); break;
        case SPEED_2500: printf("2.5Gbps\n"); break;
        case SPEED_10000: printf("10Gbps\n"); break;
        default: printf("Speed returned is %d\n", edata.speed);
    }
    return (0);
}

1
गैर-अपेक्षित प्रदर्शन के लिए आपका अंतिम संकल्प क्या था?
रोज़गारपैक

जैसा कि आपने कहा था कि यदि कोई वर्तमान गति प्राप्त करना चाहता है और केवल निक संभावित गति नहीं है, तो iperf का उपयोग करना उत्तर है।
droid-zila

18

जैसा कि खालिद ने उल्लेख किया है, आपको एक तर्क के रूप में सिर्फ इंटरफेस के साथ एथलूल चलाने में सक्षम होना चाहिए। यह समर्थित गति, विज्ञापित गति, वर्तमान गति और अन्य चीजों का एक गुच्छा भी सूचीबद्ध करेगा:

Settings for eth0:
    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: 0
    Transceiver: internal
    Auto-negotiation: on
    Supports Wake-on: d
    Wake-on: d
    Current message level: 0x00000007 (7)
    Link detected: yes

आप dmesgअपने इंटरफ़ेस के लिए भी चला सकते हैं , और grep कर सकते हैं , लेकिन यह काम नहीं कर सकता है यदि आपका सिस्टम लंबे समय से चल रहा है और वर्तमान बफ़र में अब वह जानकारी नहीं है (उस स्थिति में, आपको पुराने / var को grep करना होगा /log/dmesg.* फ़ाइलें):

dmesg |grep eth0
[    2.867481] e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
[   19.429444] ADDRCONF(NETDEV_UP): eth0: link is not ready
[   19.431555] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
[   19.449341] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   26.972379] e1000: eth0: e1000_set_tso: TSO is Enabled
[   29.920458] eth0: no IPv6 routers present

10

नीचे दिए गए आदेश का उपयोग करें

 dmesg | grep -i duplex
 Output: eth0: link up, 100Mbps, full-duplex, lpa 0x45E1

उल्लेख इस


उपयोगी जब आपके पास रूट एक्सेस नहीं है।
मेहदी सदिघी

उपयोगी है जब लॉग अधिलेखित नहीं है। मैं दुर्भाग्यपूर्ण स्थिति में हूं।
ज़हरौफ़ी

यह तब काम आया जब मेरे पास बॉक्स पर सुपरयुजर प्राइवेट नहीं थे। धन्यवाद!
संकल्प

1

भविष्य के संदर्भ के लिए भी मैंने देखा है कि एथल में गति क्षेत्र एनआईसी द्वारा समर्थित अधिकतम गति देता है और एमआईआई-उपकरण वास्तविक गति देता है जिस पर एनआईसी चल रहा है।

[ root @  ]# mii-tool
eth0: negotiated 100baseTx-FD, link ok
[ root @  ]# ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 2
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: off (auto)
        Supports Wake-on: pumbg
        Wake-on: g
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: yes

अद्यतन: थोड़ी देर बाद एक पाया गया कि एमआईआई-टूल सही गति नहीं दे रहा है क्योंकि यह पुराना और अपवित्रा था और एथलेटूल बातचीत की गति को वापस कर रहा था।


-6

ethtool eth0मेरे लिए काम किया। उदाहरण:

$ethtool eth0 |grep -i speed
Speed: 1000Mb/s

1
जवाब देने से पहले कृपया अन्य उत्तर पढ़ें। यह छह साल पहले कहा गया है और 66 उत्तोलकों के साथ स्वीकृत उत्तर है।
स्वेन

अब भी कोई भी अपना उत्तर दे सकता है। दिए गए उत्तर किसी के लिए काम नहीं कर सकते, इसलिए बस एक और विकल्प जोड़ना चाहते थे जो मुझे मेरी स्थिति में अनुकूल लगे।
ड्रैगन

आपका उत्तर बिल्कुल वही है जो स्वीकृत है और मूल्य नहीं जोड़ता है।
स्वेन

पिछले विकल्पों में उल्लिखित नैतिक आदेश कहाँ है?
ड्रैगन

बगल में हरे रंग की टिक के साथ बहुत ही शीर्ष उत्तर देखें। यह स्वीकृत उत्तर है और यह बहुत स्पष्ट रूप से उपयोग करता है ethtool
स्वेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.