在ChinaUnix的论坛中,有一个帖子说了一个很奇怪的现象:千兆网卡能跑出16EB/s的流量,注意1EB=1MT/B哦,1000T是1P,1000P才是1E,也就是每秒16百万T字节,绝对天文数字啊!链接见:http://bbs.chinaunix.net/thread-4172838-1-1.html。
我又测试了一下,确实可以达到这个速度!
方法:
(1)选运行systat -if 1;
(2)下载一个大点的文件,让网卡峰值(Peak)跟得大一些就行了。我用的是fetch了一个本地文件,跑到60MB/s。
(3)修改系统时间,让时间提前几分钟
经过这三个步骤,恭喜您,您的网速爆表了,目前全宇宙第一!
root@pppoe:/home/hu # systat -if 1
/0 /1 /2 /3 /4 /5 /6 /7 /8 /9 /10
Load Average
Interface Traffic Peak Total
lo0 in 0.000 KB/s 8.016 KB/s 15.694 MB
out 0.000 KB/s 8.016 KB/s 15.698 MB
igb0 in 0.109 KB/s 16777216.000 TB/s 637.287 MB
out 0.403 KB/s 16777216.000 TB/s 25.528 MB
很显然,这是流量除以时间导致的问题。
但是再仔细想一下,发现还有点小问题:为什么最高就到16777216呢?试过几次都是这个数值,door1000(原作者)的结果也是这个数值,难道是巧合吗?
把16777216除以1024,你便看到熟悉的数字了:16384,再除以1024,便得到16,这下应该明白了吧!
注意虽然除了两次1024,但这时单位仍然是T,再往下大家都熟悉了,依次是G、M、K,每一级都是1024,也就是2^10。
再倒过来,1K=2^10,1M=2^20,1G=2^30,1T=2^40,1P=2^50,1E=2^60。
然后……16=2^4。
放到一起,16E=2^64! 这下明白了吧,这就是64位无符号整数的最大范围啊!再多了就又成最小了。
知道了原因,那么32位能表示多少呢?这个不用再算了吧,32位内存最大是多少来着?4G有印象吗?不会以为5G都出来了吧!!!
来验证一下:
/0 /1 /2 /3 /4 /5 /6 /7 /8 /9 /10
Load Average
Interface Traffic Peak Total
lo0 in 0.000 KB/s 0.280 KB/s 3.609 KB
out 0.000 KB/s 0.280 KB/s 3.609 KB
fxp0 in 0.057 KB/s 4.000 GB/s 687.071 MB
out 0.157 KB/s 4.000 GB/s 20.029 MB
32位4G封顶^_^