Pertanyaan Bagaimana cara memverifikasi kecepatan NIC saya?


Saya baru saja memasang kartu antarmuka jaringan gigabit baru (NIC) di Linux. Bagaimana saya tahu apakah itu benar-benar diatur ke kecepatan gigabit? saya melihat ethtool memiliki opsi untuk mengatur kecepatan, tetapi saya tidak bisa mencari cara untuk melaporkan kecepatannya saat ini.


101
2017-11-30 16:20




ethtool -h says: ethtool DEVNAME Menampilkan informasi standar tentang perangkat - Ryan Babchishin


Jawaban:


Cukup gunakan perintah seperti: ethtool eth0 untuk mendapatkan info yang dibutuhkan. Ex:

$ sudo ethtool eth0 | grep Speed

Speed: 1000Mb/s

145
2017-11-30 16:23



Jika Anda ingin memiliki daftar lengkap dari semua antarmuka Anda dengan kecepatan mereka, Anda dapat menggunakan perintah ini: for i in $(netstat -i | cut -f1 -d" " | tail -n+3) ; do echo "$i: $(ethtool "$i" | grep Speed | sed 's/Speed://g')" ; done - Code-Source
Jika Anda mendapatkan "Kecepatan: Tidak Diketahui!" Anda mungkin menggunakan nama ethXX yang salah, senilai dengan cek ganda :) - rogerdpack


Adalah mungkin untuk menggunakan informasi dari kernel ketika ethtool hilang:

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

Contoh untuk antarmuka bernama eth0:

cat /sys/class/net/eth0/speed

54
2018-04-15 15:39



Catatan: Hanya tersedia sejak versi 2.6.33 - zhaorufei
Mendapatkan "Argumen tidak valid" - wi1
@ wi1: Menambahkan contoh untuk memperjelas penggunaan. Apakah sekarang berfungsi? - Christian
@Christian Ya itu terima kasih, tetapi hanya pada beberapa antarmuka saya yang sudah saya baca diharapkan jadi saya semua baik - wi1
RHEL6 telah memasukkan ini kembali ke kernel 2.6.32 mereka. - Dan Pritts


Menggunakan mii-tool untuk menonton kecepatan jaringan yang dinegosiasikan.

Ex.

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

40
2017-11-30 20:58



Untuk sistem berbasis Debian, ethtool tidak diinstal secara default. Tapi mii-tool adalah, sebagai bagian dari paket "net-tools" penting. Jadi ini adalah solusi terbaik untuk saya. - mivk
Saya melihat ini di halaman manual untuk mii-tool "Program ini sudah usang. Media yang valid hanya 100baseT4, 100baseTx-FD, 100baseTx-HD, 10baseT-FD dan 10baseT-HD ethernet cards. Untuk ethtool ganti-ment." : | - rogerdpack
Sementara mii-tool laporan dinegosiasikan 100kontrol aliran baseTx-FD, tautan ok ', keduanya ethtool dan cat /sys/class/net/eth…/speed setuju pada '1000Mb / s dupleks Penuh '. Ini untuk kontroler USB 3.0, yaitu ASIX AX88179 (driver 'ax88179_178a' untuk Linux). - Anton Samsonov


Ada beberapa jawaban yang bagus di sini, saya hanya ingin menambahkan beberapa opsi lagi.

1 Saya tahu ini tidak sesuai dengan yang Anda minta (baca terus untuk cara lain). Tapi jika Anda ingin mengetahui kinerja dunia nyata NIC Anda, daripada apa yang dikatakan komputer Anda seharusnya, Anda dapat menggunakan iperf. Saya biasanya melakukan ini - karena Anda tidak pernah tahu. Saya membeli 1Gb NIC baru-baru ini yang hanya ditransfer pada 672Mbps tetapi uplink-nya adalah 1Gb. Untung aku memeriksanya.

Anda akan membutuhkan dua komputer.

Di komputer satu, jalankan iperf dalam mode server:

iperf -s

Di sisi lain, jalankan iperf dalam mode klien:

iperf -c 192.168.0.10

Jika Anda ingin melihat kecepatan dupleks penuh, coba ini sebagai gantinya:

iperf -d -c 192.168.0.10

Ganti 192.168.0.10 untuk alamat IP server

2 Pada sistem Ubuntu, /var/log/kern.log telah membatasi penebangan kejadian kernel. Ini akan merekam kecepatan dan status tautan dari NIC ketika berubah. Saya yakin distribusi lain mungkin melakukan hal serupa atau dapat diatur untuk melakukannya.

$ 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 Anda mungkin tidak akan pernah, sejauh ini, tetapi Anda dapat menulis kode c untuk mendapatkan kecepatan. Diuji bekerja dan root tidak diperlukan.

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);
}

20
2017-10-01 10:28





Seperti yang disebutkan oleh Khaled, Anda harus dapat menjalankan ethtool hanya dengan antarmuka sebagai argumen. Ini akan mencantumkan kecepatan yang didukung, kecepatan yang diiklankan, kecepatan saat ini, dan banyak hal lain juga:

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

Anda juga bisa berlari dmesg, dan grep untuk antarmuka Anda, tetapi ini mungkin tidak berfungsi jika sistem Anda telah berjalan untuk waktu yang lama dan buffer saat ini tidak lagi memiliki informasi itu (dalam hal ini, Anda harus grep yang lebih tua / var / log / dmesg . * file):

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

18
2017-11-30 16:40





Gunakan perintah di bawah ini

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

lihat ini


8
2017-11-28 10:17



Berguna saat Anda tidak memiliki akses root. - Mehdi Sadeghi
berguna saat log tidak ditimpa. Saya dalam situasi yang tidak menguntungkan. - zhaorufei
ini sangat berguna ketika saya tidak memiliki hak superuser di kotak. Terima kasih! - Sankalp


Juga untuk referensi di masa mendatang, saya telah memperhatikan bahwa medan kecepatan dalam ethtool memberikan kecepatan maksimum yang didukung oleh NIC dan mii-tool memberikan kecepatan aktual di mana NIC sedang berjalan.

[ 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

PEMBARUAN: Setelah beberapa saat mengetahui bahwa alat-mii tidak mengembalikan kecepatan yang tepat karena sudah usang dan usang dan ethtool mengembalikan kecepatan dinegosiasikan.


1
2017-11-11 11:59





ethtool eth0 bekerja untukku. Contoh:

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

-5
2017-07-11 11:39



Silakan baca jawaban lain sebelum menjawab. Ini sudah dikatakan enam tahun yang lalu dan merupakan jawaban yang diterima dengan 66 orang yang suka mengomel. - Sven♦
seseorang masih bisa mengirim jawabannya terlepas. Jawaban yang diberikan mungkin tidak berfungsi untuk seseorang, jadi hanya ingin menambahkan opsi lain yang cocok untuk saya dalam situasi saya. - dragon
Jawaban Anda sama persis dengan yang diterima dan tidak menambah nilai. - Sven♦
dimanakah perintah ethtool yang disebutkan dalam opsi sebelumnya? - dragon
lihat jawaban paling atas dengan centang hijau di sampingnya. Ini adalah jawaban yang diterima dan sangat jelas digunakan ethtool. - Sven♦