科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网存储频道测试探究SSD固态硬盘性能下降的谜题

测试探究SSD固态硬盘性能下降的谜题

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

众所周知,随使用时间的推移,SSD的性能会逐渐下降,特别是早期SSD产品更是如此,新的控制器通过各种技术有效缓解了这个问题。在这篇文章中,我们将执行一些企业级SSD基准测试,通过对比前后测试结果,加深对SSD性能下降的理解。

作者:李隽 来源:it168网站 2011年1月5日

关键字: IOzone IOPS X25-E ext4

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共10页)

IOzone测试介绍

IOzone是最流行的吞吐量基准测试工具,部分原因是因为它是开源的,是用很朴实的ANSI C编写的(我没有讽刺它的意思),也许更重要的是它能执行一些不常见的基准测试,它支持单线程,多线程和多客户端测试。IOzone的基本思想是将给定的文件分解成记录,记录以某种方式写入或读取,直到达到文件大小,因此IOzone可以执行许多种类的测试,本文将用到下面这些测试类型:

  写

  这是一个相当简单的测试,模拟写入新文件。由于需要为文件创建新的元数据,大多数时候,写入新文件的速度要比重写现有文件要慢。使用指定长度(可由用户指定,也可由IOzone自动指定)的记录写文件,直到达到文件总长度。

  重写

  这个测试和写测试类似,但测试的是已存在文件的写入性能。由于文件已经存在,元数据也就创建好了,因此重写性能普遍要比写入性能要好。它首先打开已存在的文件,将文件指针置于文件的开头,然后使用指定长度的记录写入到打开的文件描述符,直到达到文件的大小,最后关闭文件,更新元数据。

  读

  这个测试读取已存在的文件,它读取整个文件,一次一个记录。

  重读

  这个测试读取最近读取过的文件,它非常有用。因为操作系统和文件系统会在缓存中保留最近读取文件的内容,因此重读的性能也要好于读取的性能。但如果文件的大小远远大于缓存,则重读的效果并不佳,因为缓存装不下整个大文件,最终还是要从磁盘上寻找文件对应的存储块。

  随机读

  这个测试随机访问文件中的任意位置。它的性能受多种因素的影响,包括操作系统缓存,磁盘数量和它们的配置,磁盘寻道延迟,磁盘缓存等。

  随机写

  随机写测试是测试随机写入文件任意位置时的性能,文件始终处于打开状态,直到写满文件。

  反向读取

  这是一个特殊的文件系统测试,它反向读取一个文件,如MSC Nastran(著名的有限元分析软件)就会反向读取文件。部分文件系统和操作系统不能检测到这种访问模式,因此也无法提高访问性能。在这个测试中,打开一个文件,文件指针向前移动一个记录,读取文件时就需要向后读取一个记录,然后文件指针又向后移动两个记录,依此类推,完成文件的读取的操作。

  改写记录

  这个测试是测试写和重写文件中的一个特殊点时的性能。这个测试非常有趣,因为它可以突出文件系统和/或操作系统内的“热点”功能。如果热点足够小,可以适应各种缓存大小,如CPU数据缓存,TLB,操作系统缓存,文件系统缓存等,那么性能将会非常好。

  跨越式读取

  这个测试以一种跨越式方法读取一个文件。例如,你可以先零偏移读取长度为4KB的文件内容,然后向前搜索200KB再读取4KB的文件内容,再向前搜索200KB,依此类推。按照相同的跨度向前读取,两次读操作之间的距离(这里是200KB)叫做步幅,如果步幅和RAID条带配置不一致,就容易产生性能问题。

  fwrite

  这个测试是测量使用库函数fwrite()写入文件的性能。fwrite()是一个二进制流函数,一般情况下,它执行的是缓冲区写入操作,缓冲区位于用户空间(不属于系统缓存)。这个测试首先在用户空间缓冲区中创建记录长度大小的缓冲区,然后写入到磁盘,重复这个动作,直到整个文件创建好。这个测试和创建一个新文件的写入测试类似,关键还是看元数据的性能。

  frewrite

  这个测试和fwrite类似,但它测试的是库函数frewrite()。理想情况下,它的性能应该比fwrite要好,因为它使用的是现有文件,不用担心元数据性能。

  fread

  这个测试是测量库函数fread()读取文件的性能。它打开一个文件,以记录长度将文件内容读取到用户空间的缓冲区中,重复这个操作,直到整个文件全部读入。

  freread

  这个测试和reread测试类似,但它使用的是fread()库函数,它读取最近打开的文件,因此可以使用文件系统或操作系统的缓冲区提高读取性能。

虽然还有其它测试选项,但这里列举的已经够多了基本上覆盖了大部分应用程序的访问模式。

对IOzone来说,系统规格是相当重要的,因为它们会影响到命令行选项。特别是系统内存容量是很重要的,因为它对缓存效率的影响是很大的,如果测试集大小足够小到以匹配文件系统/操作系统缓存(或部分),结果可能会完全不一样。例如,在只有1GB内存的系统上和在有8GB内存的系统上运行相同大小的测试集,其结果会有很大的差异。

在这篇文章中,缓存的影响是有限的。如果运行非常大的测试集,并强制操作系统消除几乎所有缓存?缓存影响是不能完全消除的。减少缓存影响最好的办法是使文件比主内存更大,这里选择的文件大小是16GB,相当于主内存的两倍,我们是根据以往的经验和网上流传的一些说法选择的。

我们测试了四种记录大小:1MB、4MB、8MB和16MB,总文件大小为16GB,因此分别有16000、4000、2000和1000条记录,执行测试的命令如下:

  ./IOzone -Rb spreadsheet_output_1M.wks -s 16G -r 1M > output_1M.txt

  The command line for the second record size (4MB) is,
  ./IOzone -Rb spreadsheet_output_4M.wks -s 16G -r 4M > output_4M.txt

  The command line for the third record size (8MB) is,
  ./IOzone -Rb spreadsheet_output_8M.wks -s 16G -r 8M > output_8M.txt

  The command line for the fourth record size (16MB) is,
  ./IOzone -Rb spreadsheet_output_16M.wks -s 16G -r 16M > output_16M.txt

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章