Linux'a yeni bir gigabit ağ arayüz kartı (NIC) kurdum. Gerçekten gigabit hızlarına ayarlanmış olup olmadığını nasıl anlarım? ethtool
Hızı ayarlama seçeneğine sahip olduğumu görüyorum , ancak şu anki hızını nasıl rapor edeceğimi bilemiyorum.
Linux'a yeni bir gigabit ağ arayüz kartı (NIC) kurdum. Gerçekten gigabit hızlarına ayarlanmış olup olmadığını nasıl anlarım? ethtool
Hızı ayarlama seçeneğine sahip olduğumu görüyorum , ancak şu anki hızını nasıl rapor edeceğimi bilemiyorum.
Yanıtlar:
Sadece ethtool eth0
gerekli gibi bir komut kullanın: gerekli bilgileri almak için. Ör:
$ sudo ethtool eth0 | grep Speed
Speed: 1000Mb/s
for i in $(netstat -i | cut -f1 -d" " | tail -n+3) ; do echo "$i: $(ethtool "$i" | grep Speed | sed 's/Speed://g')" ; done
Ethtool eksik olduğunda çekirdekten gelen bilgileri kullanmak mümkündür:
cat /sys/class/net/<interface>/speed
Eth0 isimli arayüz için örnek:
cat /sys/class/net/eth0/speed
NOT: için man sayfası mii-tool
şu feragatnameye sahiptir:
This program is obsolete. For replacement check ethtool.
mii-tool
Anlaşmalı ağ hızını izlemek için kullanın .
Ör.
eth0: no link
eth1: negotiated 100baseTx-FD, link ok
ethtool
varsayılan olarak yüklenmez. Ancak mii-tool
, temel "net-tools" paketinin bir parçası olarak. Yani bu benim için en iyi çözümdü.
mii-tool
raporlar 'müzakere 100 BaseTX-FD akış kontrolünü ok bağlantı', hem ethtool
ve cat /sys/class/net/eth…/speed
'üzerinde anlaşmaya 1000 Mb / s Tam dubleks'. Bu, USB 3.0 denetleyicisi, yani ASIX AX88179 (Linux için 'ax88179_178a' sürücüsü) içindir.
Burada harika cevaplar var, sadece birkaç seçenek daha eklemek istedim.
1. Bunun tam olarak sorduğunuz şey olmadığını biliyorum (başka yollarla da okuyun). Ancak , NIC'nizin gerçek dünya performansını bilmek istiyorsanız , bilgisayarınızın olması gerektiği gibi değil, iperf'i kullanabilirsiniz. Bunu genellikle yaparım - çünkü asla bilemezsiniz. Geçenlerde bir 1 Gb NIC aldım, sadece 672 Mb / s hızında aktarıldığını, ancak uplink'in 1 Gb olduğunu söyledi. İyi ki kontrol ettim.
İki bilgisayara ihtiyacınız olacak.
Birinci bilgisayarda, iperf'i sunucu modunda çalıştırın:
iperf -s
Diğer yandan, istemci modunda iperf'i çalıştırın:
iperf -c 192.168.0.10
Tam çift yönlü hızı görmek istiyorsanız, bunun yerine şunu deneyin:
iperf -d -c 192.168.0.10
Sunucular IP adresi için 192.168.0.10 yerine
2. Ubuntu sistemlerinde, /var/log/kern.log
çekirdek olaylarının günlüğü sınırlıdır. Değişken NIC'in bağlantı hızını ve durumunu kaydeder. Eminim diğer dağıtımlar da benzer bir şey yapar veya bunu yapmak için kurulum yapılabilir.
$ 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. Muhtemelen asla, asla bu kadar ileri gitmeniz gerekmeyecek, ancak hızı elde etmek için c kodu yazabilirsiniz . Test edilmiş çalışma ve kök gerekli değildir.
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);
}
Khaled'in dediği gibi, ethtool komutunu sadece arabirimde bağımsız değişken olarak çalıştırabilmelisiniz. Bu, desteklenen hızları, reklamı yapılan hızları, mevcut hızı ve bir sürü başka şeyi listeler:
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
Arayüzünüzü çalıştırabilir ve grep yapabilirsiniz , ancak sisteminiz uzun süredir çalışıyorsa ve mevcut arabellek artık bu bilgiye sahip değilse, bu durumda çalışmayabilir (eski / var /log/dmesg.* files):
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
Aşağıdaki komutu kullan
dmesg | grep -i duplex
Output: eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
bakın bu
Gelecekte başvurmak için ayrıca ethtool'deki hız alanının NIC tarafından desteklenen maksimum hızı sağladığını ve mii aracının NIC'nin çalıştığı gerçek hızı verdiğini fark ettim.
[ 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
GÜNCELLEME: Bir süre sonra, mii aracı eski olduğu ve kullanımdan kaldırıldığı için doğru hıza geri dönmüyordu ve ethtool anlaşılan hızı geri veriyordu.
ethtool eth0
benim için çalıştı. Örnek:
$ethtool eth0 |grep -i speed
Speed: 1000Mb/s
ethtool
.