【问题标题】:/proc/net/dev unit conversion/proc/net/dev 单位转换
【发布时间】:2013-10-13 22:30:33
【问题描述】:

我正在查看文件 /proc/net/dev 并想知道接收字节值的单位转换。

这是我正在考虑的文件部分:

Inter-|   Receive
 face |bytes
  eth0: 7060880392

ifconfig 使用 /proc/net/dev 生成以下内容:

eth0      Link encap:Ethernet 
          ...
          RX bytes:7060880392 (7.0 GB)

那是我不明白的。鉴于值的单位是字节(而不是位),我本来希望通过 1024 的除法转换为 GB。7060880392/1024/1024/1024 = 6.6GB。但显然 ifconfig 使用了 1000 的除法来将 B 转换为 GB。

有人可以解释他们为什么这样做吗?我知道带宽通常以比特表示;也许 /proc/net/dev 中的标签将值的单位称为字节是不正确的?我检查了 proc 的手册页,但该文件没有太多详细信息。

【问题讨论】:

  • 有什么理由认为这个决定不是任意的吗?
  • 在计算中,前缀G不一致地用于10^9和2^30。但是,前者实际上是正确的,而对于网络流量,后者没有意义。另见:en.wikipedia.org/wiki/Binary_prefix
  • 我可以任意决定如何使用这些信息。鉴于它是一个体积带宽,通常以位为单位,并且 ifconfig 执行单位转换为 1000,我倾向于这样做。我想我应该澄清一下:在问为什么时,我想了解我应该如何准确而不是随意地执行这些转换。

标签: linux type-conversion


【解决方案1】:

GB 表示 10 个碱基,而GiB 表示 2 个碱基 (1024)。阅读更多维基百科:Binary prefix.

我会做出有根据的猜测,实施者选择使用 GB 而不是 GiB,因为相关信息是发送/接收的字节数,而不是它们的划分以适应“计算机化”计算。

【讨论】:

  • 人们在考虑比特与字节时经常不一致地使用 GB/Gb/gB/GiB。更重要的是,文件清楚地写着字节。我不想猜测;我想找到一份文档来解释我认为存在差异的地方。
  • 在讨论存储空间而不是数量时,需要计算 GiB。存储空间由扇区(大小为 2,例如 512B 硬盘扇区,4096B 用于 FS 集群/块)来衡量。将 HDD 空间量化为流是使用 GB(以 10 为基数)完成的,您可以为此计算驱动器上可用的总字节数。在计算网络字节时,您计算的是流大小(或数量),而不是将其存储为文件所需的空间。我找不到任何文章来支持我,但是我想不出任何地方使用与存储/文件无关的 GiB。
  • 这些数字会在某个时候重置吗?这些是终生数字吗?
猜你喜欢
  • 1970-01-01
  • 2012-02-15
  • 2011-04-01
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
  • 2011-06-20
  • 2012-10-21
  • 2011-02-26
相关资源
最近更新 更多