এখানে কিছু দুর্দান্ত উত্তর রয়েছে, আমি আরও কয়েকটি বিকল্প যুক্ত করতে চেয়েছিলাম।
1. আমি জানি এটি আপনি যা চেয়েছিলেন ঠিক তা নয় (অন্যান্য উপায়ে পড়ুন)। কিন্তু যদি আপনি আপনার এনআইসি এর বাস্তব জগতে কর্মক্ষমতা জানতে চাই বরং কি আপনার কম্পিউটারের বলছেন এটা করা উচিত চেয়ে, আপনি iperf ব্যবহার করতে পারেন। আমি সাধারণত এটি করি - কারণ আপনি কখনই জানেন না। আমি সম্প্রতি একটি 1 জিবি এনআইসি কিনেছি যা কেবল 672 এমবিপিএসে স্থানান্তরিত হয়েছিল তবে এটি আপলিংকটি 1 জিবি। ভাল জিনিস আমি পরীক্ষা করেছিলাম।
আপনার দুটি কম্পিউটারের দরকার হবে।
কম্পিউটার একটিতে, সার্ভার মোডে আইপিফার চালান:
iperf -s
অন্যদিকে ক্লায়েন্ট মোডে আইপিফার চালান:
iperf -c 192.168.0.10
আপনি যদি পুরো দ্বৈত গতি দেখতে চান তবে পরিবর্তে এটি ব্যবহার করে দেখুন:
iperf -d -c 192.168.0.10
সার্ভারের আইপি ঠিকানার জন্য 192.168.0.10 এর বিকল্প দিন
২. উবুন্টু সিস্টেমে /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
৩. আপনার সম্ভবত কখনও দরকার হবে না, তবে আপনাকে আরও বেশিদূর যেতে হবে না, তবে গতি পেতে আপনি সি কোড লিখতে পারেন । পরীক্ষিত কাজ এবং রুট প্রয়োজন হয় না।
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);
}