固态硬盘是否足以令人担心磁盘IO瓶颈?

时间:2009-07-17 16:09:00

标签: performance hardware io hard-drive

我有一个概念验证程序,它只是通过写入和读取HD来进行一些进程间通信。是的,我知道这真的慢;但这是让事情顺利进行的最简单方法。我一直计划回来并使用在RAM中完成所有IPC(进程间通信)的机制来交换代码的这一部分。

随着固态硬盘的到来,您认为瓶颈可能会变得微不足道吗?

注意:这是用C#编写的服务器软件,调用一些用FORTRAN编写的裸机数字运算库。

11 个答案:

答案 0 :(得分:9)

简短的回答可能是否定的。一位名叫吉姆·格雷的着名研究员发表了关于存储和性能的讨论,其中包括this great analogy。假设你的大脑是处理器,访问寄存器需要1个时钟滴答(左边的数字),大致相当于你脑中的信息。访问内存需要100个时钟周期,因此大致相当于在您居住的城市中的某个位置获取数据。访问标准磁盘大约需要10 ^ 6个刻度,这相当于冥王星上的数据。固态在哪里适合它?目前的SSD技术介于10 ^ 4-10 ^ 5之间,具体取决于您的要求。虽然它们可以快一个数量级,但是从内存读取和从磁盘读取之间仍然存在巨大差距。这就是为什么你的问题的答案可能没有,因为与SSD一样快,它们仍将比磁盘慢得多(至少在可预见的未来)。

答案 1 :(得分:3)

我认为您会发现瓶颈刚刚移动。由于我们期望更高的吞吐量,我们编写具有更高要求的程序

这会将瓶颈推到除读/写机制之外的总线,缓存和部件(无论如何都是链中的最后一个)。

如果进程没有受磁盘I / O的约束,那么我认为您可能会发现它受限于读取/写入指令量的调度程序的约束(与所有进程指令一样)。

要充分利用无限的I / O速度,您需要实时响应和非常积极的缓存管理等。

磁盘变得更快时, RAM和处理器以及对设备的需求也是如此。瓶颈是一样的,工作量会变得更大。

答案 2 :(得分:2)

我不相信它会改变I / O绑定应用程序写入最微小的方式。拥有更快的处理器并没有让人们选择bubblesort作为排序算法。

外部存储器层次结构是计算的固有问题。

答案 3 :(得分:2)

Joel on Software有一个article关于他升级到固态的经历。你的问题并不完全相同,但我的意思是:

固态硬盘可以显着加快I / O绑定操作,但很多东西(比如编译)仍然是cpu绑定的。

答案 4 :(得分:2)

我有一个固态驱动器,不,这不会消除I / O作为瓶颈。 SSD很不错,它不是 很好。

实际上,掌握系统的IPC原语或在TCP之上构建一些东西并不困难。但是如果你想坚持使用你的磁盘并加快速度,那么ramdisktmpfs就可以做到这一点。

答案 5 :(得分:2)

没有。当前的SSD设计为磁盘替换。从SATA控制器到文件系统驱动程序的每一层都将它们视为存储。

这不是底层技术NAND闪存的问题。当NAND闪存直接映射到内存,并使用旋转日志存储系统而不是基于命名文件的文件系统时,它可以非常快。基本问题是NAND Flash仅在块更新中表现良好。文件元数据更新导致昂贵的读 - 修改 - 写操作。此外,NAND块比典型的磁盘块大得多,这对性能也没有帮助。

由于这些原因,SSD的未来将是更好的缓存SSD。 DRAM将隐藏不良映射的开销,而小型超级帽备份将允许SSD更快地提交写入。

答案 6 :(得分:1)

固态硬盘确实对IO吞吐量做了一个重要的改进,这就是在固态磁盘上,阻止局部性更少来自旋转媒体的问题。这意味着高性能IO绑定应用程序可以将重点从安排访问数据的结构转移到以其他方式优化IO的结构,例如通过压缩将数据保存在单个块中。也就是说,Eve​​n固态驱动器受益于线性访问模式,因为它们可以在应用程序请求之前将后续块预取到读缓存中。

固态磁盘的显着回归是写入比读取花费的时间更长,尽管两者仍然通常比旋转驱动器更快,并且差异在于更新的高端固态磁盘。

答案 7 :(得分:0)

不,可悲的是没有。但它们确实让它更有趣:SSD驱动器具有非常快的读取速度和无同步时间,但它们的写入速度几乎与普通硬盘驱动器一样慢。这意味着您将在大多数时间阅读。但是,当您写入驱动器时,应尽可能在同一位置写入,因为SSD驱动器一次只能写入整个块。

答案 8 :(得分:0)

如何使用ram驱动器而不是磁盘?你不必重写任何东西。只需将其指向不同的文件系统即可。 Windows和Linux都有它们。确保计算机上有大量内存并创建具有足够空间的虚拟磁盘以供处理。我这样做是为了一个在网络上听取多个协议的系统。我从来没有新过我将得到的数据包,并且有太多的数据要保存在内存中。我会将它写入RAM驱动器,当某些内容完成后,我会移动它并让另一个进程将其从RAM驱动器上移到物理磁盘上。我能够以这种方式跟上真正繁忙的服务器级网卡。祝你好运!

答案 9 :(得分:0)

这里要记住的一些事情:

如果通信涉及频繁的消息并且在同一系统上,您将获得非常好的性能,因为Windows实际上不会首先写出数据。

我不得不求助于它并发现了这一点 - 只要数据不断写入,驱动器灯就会 NOT 出现。

答案 10 :(得分:-2)

  

但这是最简单的方法来启动和运行。   我通常发现,用自己的头脑思考一次比用自己的头脑好得多便宜得多,而不是让cpu认为数百万次徒劳无功。