题 网络现在比磁盘快吗?


这是一个软件设计问题

我过去常常使用以下速度规则

cache memory > memory > disk > network

每个步骤是前一步骤的5-10倍(例如,高速缓冲存储器比主存储器快10倍)。

现在,似乎千兆以太网的延迟小于本地磁盘。因此,读取大型远程内存数据库的操作可能比本地磁盘读取更快。这对于像我这样的旧计时器来说就像是异端邪说。 (我只是花了一些时间在磁盘上构建一个本地缓存,以避免不得不进行网络往返 - 因此我的问题)

有没有人在这方面有经验/数字/建议?

是的,我知道找到的唯一真正的方法是建立和衡量,但我想知道一般规则。

编辑

这是来自最佳答案的有趣数据:

  • 在同一数据中心内往返500,000 ns

  • 磁盘寻求10,000,000 ns

这让我很震惊;我的心理模型是网络往返本身就很慢。它不是 - 它比磁盘'往返'快10倍。

Jeff attwood在这个主题上发布了这个很好的博客 http://blog.codinghorror.com/the-infinite-space-between-words/


118
2018-02-21 23:46




有时是,有时没有。什么网络?什么盘? - John Gardeniers
来自最佳答案的其他有趣数据:从网络到磁盘的1 MB顺序读取。我怀疑“往返”时间省略了任何重要的数据传输。 - Paul
保罗:我确定,取决于你的MTU。 (1MB MTU?太棒了!) - Matt Simmons
我希望看到根据10Gbps网络设备广泛可用的情况重新考虑其中一些答案。 - chicks
千兆网络与raid 5? - SoilSciGuy


答案:


以下是谷歌研究员杰夫迪恩所引用的一些你可能正在寻找的数字:

每个人都应该知道的数字

L1 cache reference                             0.5 ns
Branch mispredict                              5 ns
L2 cache reference                             7 ns
Mutex lock/unlock                            100 ns (25)
Main memory reference                        100 ns
Compress 1K bytes with Zippy              10,000 ns (3,000)
Send 2K bytes over 1 Gbps network         20,000 ns
Read 1 MB sequentially from memory       250,000 ns
Round trip within same datacenter        500,000 ns
Disk seek                             10,000,000 ns
Read 1 MB sequentially from network   10,000,000 ns
Read 1 MB sequentially from disk      30,000,000 ns (20,000,000)
Send packet CA->Netherlands->CA      150,000,000 ns

这是他的演讲题目 构建大型分布式系统的设计,教训和建议 你可以在这里得到它:

谈话是在 大规模分布式系统和中间件(LADIS)2009

其他信息


据说 gcc -O4将您的代码通过电子邮件发送给Jeff Dean进行重写。



127
2018-02-22 07:38



+1非常有趣! - 9dan
一些演示文稿在括号中指示了不同的值。我假设括号中的那个是不正确的,他更新了值。 - David d C e Freitas
这是所有SSD之前的时代吗?看到 这里 进一步的最新数字。 - matt
我实际上用这些数字来构建一个 演示显示为什么SSD驱动器为自己付费,说服我们的办公室经理,是的,我们需要更快的机器来工作。包括技术信息的数字,但尽可能地将其用于非技术管理。 - brichins


在网络与磁盘方面存在很多变数,但通常情况下,磁盘速度更快。

SATA 3.0和SAS总线为6 Gbps,而网络1Gbps减去协议开销。使用RAID-10 15k SAS,网络看起来似乎很慢。此外,您还拥有磁盘缓存以及固态硬盘的可能性,这取决于场景,也可以提高速度。随机数据访问与顺序数据访问是一个因素,也是数据传输的块大小。这一切都取决于用于访问磁盘的应用程序。

现在,我甚至没有触及这样一个事实:无论你通过网络传输什么,无论如何都要从磁盘传输......所以.......再次,磁盘更快。


19
2018-02-22 01:41



提及RAID的点,它可以为您提供并行读取,这是您不太可能很快在网络上获得的。当然,如果我们谈论本地笔记本电脑硬盘,那么快速SAN和快速网络的组合可能会更快。特别是那个SAN中的SSD。 - Michael Dillon
网络本质上是可并行化的 - 你在说什么?从网络上的多个系统中读取数据是非常微不足道的;这是Hadoop和MPI等系统背后的全部观点,更不用说明显的BitTorrent了。 - jgoldschrafe
使用SONET / SDH,您可以比SAS快38Gbps。网络聚合可以通过类似的方式完成 en.wikipedia.org/wiki/Link_aggregation - Mircea Vutcovici
@Jake在谈到6 Gbps时,您可能希望明确区分接口带宽和磁盘实际提供数据的速率。 - NPE
我在我的问题中说过,我在谈论远程内存数据库与本地磁盘缓存相比 - pm100


那么,这取决于网络资源是否具有您要求的数据(内存中或类似内容),或者它是否只是从磁盘读取它。

无论如何,在某些情况下吞吐量可能会更高,但我相信延迟会更高。


10
2018-02-21 23:51



你的意思是磁盘上的寻道时间大于10Gbit / s的请求? - Mircea Vutcovici
@Mircea,他的意思是10Gbit网络必须从某个地方获取数据,因此它将受限于该源的延迟以及网络的延迟。 - Chris S
存储可以是RAM磁盘。看到: en.wikipedia.org/wiki/Solid-state_drive#DRAM-based - Mircea Vutcovici


IMX磁盘仍然更快。网络的理论传输率很高,但实际上你并没有接近这一点。

大约两年前,我的笔记本电脑出现了硬盘驱动器问题,DMA终止了。这使得硬盘驱动器显着变慢,特别是比网络慢。但是,当我切换到另一台计算机时,我比互联网更快地恢复到原来的HDD状态。


2
2018-02-21 23:50





在给定正确的服务器的情况下,我对千兆网络的体验是,您可以在吞吐量和延迟方面击败本地性能。看到 网络测试:我们是否获得千兆性能?

出于所有实际目的,我建议将网络和本地存储视为等效,并仅使用内存缓存。

你提到的标准警告是正确的,因为没有一般规则;实际上,大部分时间都应该使用配置良好的服务器,并使用指标来评估最佳的数据传输方法。

如果您使用的是具有慢速硬盘驱动器的低端机器,那么使用千兆网络连接到具有快速存储阵列的服务器几乎肯定会更快。

同样,如果您使用两台几乎相同硬件的机器,那么延迟和网络开销将使本地存储更快;这真的是常识。


2
2018-02-22 00:18





这取决于。如果您的I / O主要是随机访问,那么与可用的网络带宽相比,它的平坦吞吐量可能不是那么大。但是,大多数网络流量最终都是由涉及I / O的进程生成的。如果任何进程的工作集正在生成网络流量适合缓存,那么它将不受磁盘带宽的限制。如果它使缓存崩溃,那么磁盘将成为瓶颈。

我在数据仓库系统上工作,规范的DW查询是表扫描。如果您的查询占据事实表(或分区)中超过百分之几的行,则使用顺序I / O的表或分区扫描将比使用索引查找和搜索的随机访问查询计划更有效。

网络存储(即SAN)往往不能在流式工作负载上表现良好,除非它被适当调整。如果将SAN用于通用整合环境,那么对于像数据仓库这样的流式尖端负载来说几乎可以肯定地调整它。我已经看到供应商白皮书建议您需要大约3倍的磁盘数量才能在没有针对流式I / O进行调整的SAN上获得相同的吞吐量。

我的经验与此相符。实际上,我从未将数据仓库部署到整合环境中,我无法更快地运行相同的ETL过程 在我的台式电脑上。  我还有来自SAN设备主要供应商的销售代表说他们的许多客户都使用DW系统的直接连接存储,因为SAN不够快。

对于随机访问工作负载而言,网络存储每IOPS至少比直接连接存储更昂贵,并且对于流更接近两个数量级更昂贵。


2
2018-02-27 21:11





我对此的体验是,当您使用1Gbit连接并尝试下载文件时,您的硬盘通常是瓶颈。您必须记住的一点是,您必须先建立连接,这也需要时间。因此,为了发送大块数据,网络实际上可能比磁盘更快。


1
2018-02-21 23:49



除非磁盘也是网络连接另一端的瓶颈......
@Argote:是的,但如果服务器软件写得正确,它会在写入磁盘之前缓冲到内存中。 - amphetamachine


是的,一般来说,网络现在比硬盘驱动器更快,但这可能会随着时间的推移而变化。

我思故我在

当应用程序运行时,它意味着主机正在工作,而在网络上工作需要一个通用协议,检查对等可用性,通道安全性...... 如果同伴使用不同的平台,那么在单台机器上实现你所能做的就更难了。

我更倾向于在权衡方面看待这个,而不是谁是最强者......


1
2018-02-22 00:00



我怀疑,因此我可能会。 - John Gardeniers


您必须描述此比较的确切用例。硬盘驱动器具有寻道时间+传输速率和缓存。网络具有延迟,传输速率和协议开销......

我认为你的原始缓存>内存>磁盘>网络仍然是正常的


1
2018-02-22 00:02