热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ddr老化测试_手把手教你评估和测试固态存储【深度】

决定写这篇文章已经很久了,虽然在日常工作中经常涉及到固态存储,但是很少从用户的角度去考虑如何评估以及测试SSD,这是一个问题。除此以外&#

dd13fd9081f2c255840df0d7544a0c2d.png

   决定写这篇文章已经很久了,虽然在日常工作中经常涉及到固态存储,但是很少从用户的角度去考虑如何评估以及测试SSD,这是一个问题。除此以外,消费级固态存储市场的暴利也让一些厂家以次充好,让本应该大幅提升电脑性能的SSD变成了大号U盘,在稳定性上也差一大截,使用一段时间后导致重要数据丢失,实在可恶,这也是想写这篇文章的原因,对于搞硬件和软件的同仁也希望这篇文章能给一点点在技术上的参考。

2b11bb24d631d2d4843019a091eb1e60.png

为了更好的帮助大家理解,这篇文章准备按照下面的几个模块去讲:

1、评估SSD前需要了解一些知识

2、测试工具

3、测试方法

一、评估SSD前需要了解的一些知识

1、CPU、ROM、RAM

     学过微机原理的同学们都知道在计算机中最主要的元件有CPU、ROM和RAM这三个,CPU自不用说,ROM我们可以把它理解为存储内存,是在RAM我们可以理解为运行内存,在计算机中三者之间的关系我们用下图来理解:

a03295394e0496c91fc11ee1c951a432.png

       计算机在工作时,实质上就是一个不断进行计算的过程,我们安装的软件在安装后会安装文件解压缩生成各种数据包,这些数据会保存在ROM中,CPU会通过预取指令对这些数据进行运算,但是CPU本身的预取指令速度是非常快的,而与之相反的是ROM的数据传输速率与CPU预取指令相比差距很大,为了解决这个问题,计算机中增加了RAM(使用的是DDR内存)作为一个缓冲,与ROM相比较,DDR的速率显然快很多。

        在计算机工作时,增加的RAM会先将ROM中需要的数据读取出来,再传输给CPU,这样解决速率匹配的问题,然而在市场上主流使用的ROM是HDD硬盘,即使增加了内存RAM,在计算机工作的绝大部分场景下,仍然处于DDR需要等待HDD(机械硬盘)传输数据完成,从而造成开机速度慢或者程序运行卡顿的问题。

        可以说,目前计算机对开机速度和软件运行影响最大的瓶颈之一就是ROM的速率问题,这个不是用户增加2G/4G的内存条就可以解决的,中间的缓存再快再大,源头速率慢仍然是徒劳的,而SSD的诞生就是解决这个问题的利器,无他,就是快

2、固态硬盘的硬件架构

a3398b0093ba94364ce8afce3dcc9717.png

在上图中大概的可以概括出SSD的架构,主要分为:

A、controller

B、RAM

C、flash pkg

D、接口

E、电源等其它组件

    controller即SSD的控制器是最核心的部件,控制器负责FTL层(闪存转换层)的地址映射、磨损均衡、ECC校正、坏块管理等重要功能的完成,通常controller都是由FPGA完成的,所以处理速度非常快;

     SSD的控制器主要集中在美国、韩国、日本和台湾等厂商手上,但是目前国产的控制器也在不断的发展,下表是目前各大主控供应商【数据来源知乎用户黎小白】:

b601072b0c14a584b8b0ef7b4b0a1525.png

      flash pkg不言而喻用于存储数据,目前主要SSD存储介质就是nand,NAND闪存市场由三星、东芝、美光、海力士和Intel瓜分,下表是当前市场主要的nand供应商。774244402d6fa839bc150136479e5245.png

    nand也分为SLC、MLC、TLC,读写速度依次从快至慢,使用寿命依次从长至短,成本依次从高至低,因此这也是区分SSD性能的一个重要因素

c011be3a8cec9f9f42aaaee4f998b689.png

   SLC、MLC、TLC的区分原理就是每个每个cell可以代表多少的逻辑bit,如下图所示在每个存储单元的电荷量划分为四等分,代表着11、10、01、00,这就是MLC的意义。TLC顾名思义即代表着3个比特。

333da59dbc8de328ff2f1445c69b69b8.png

    随着技术的发展,原先的2D平面工艺已经到了极限,因此工程师们想到了开发出3D工艺,从48层到94层,随着存储容量的变大,3D nand的层数也就越多,更详细的3D nand工艺可以参考下面英特尔关于3D nand的介绍视频(公众号无法插入外链,将链接复制到浏览器可观看)。

https://v.qq.com/x/cover/r0515yvnwf7/r0515yvnwf7.html?

fe2f64e7e594cc700d71007fc0aec04f.png

SSD另外一个重要的需要关注的是硬盘的接口,在SSD中接口类型有点多,如下面的图示意,不同规格的硬盘会使用不同的接口,简直让人眼花缭乱。

0a16f66cf7f5df01cb61907866c02437.png

下面我们把所有的固态硬盘接口列表如下,可以参考,需要进一步了解固态硬盘接口的可以参考以下文章(将链接复制到浏览器中可阅读)

https://zhuanlan.zhihu.com/p/107957006

86fd5600c1a2e2b115ba9cace1017da7.png

3、我们需要测试SSD的哪些性能?

    一般来说需要准确的去评估固态存储,需要测试的数据有如下几个方面:

eae5b846688e46cd4f930598600a8d21.png

     我们可以测试出来的数据只能是一些读写数据、坏块率以及存取或者访问时间,从这几个维度去进行测试。

      从存储工程师的角度来说,除了用户体验的性能数据,老化burn in测试、健壮性以及功耗更是需要工程师所关注的。

二、测试工具

     对SSD或者说固态存储的主要分为两种:读写速率测试(顺序、随机、单队列深度、多队列深度、混合读写)和老化、健壮性测试,老化测试、健壮性(如通过反复掉电测试固件稳定性)的条件对用户来说很难具备,而且往往厂家出货时才会进行测试,所以我们的重点是在读写速率测试上。

      目前进行读写速率以及其它SSD关键性能测试主要使用的工具有下面几种:

66733114006077209706f0d12e0ee3c0.png

1、HDtune pro

    HD Tune pro是一款常用的硬盘工具软件,其主要的功能有硬盘传输速率检测、健康状态检测、温度检测,此外还能检测出硬盘的固件版本、序列号、容量、缓存大小等信息。

11d54f8b998c85c8bee866c005584e8d.png

HD tune也能够对坏块率进行测试:

6f334555c19f40a3d4e1fd69c661df3c.png

2、H2TESTW工具进行数据校验

  • SSD的存储介质是flash,在消费级绝大部分都是MLC(TLC一般作为buffer使用),会存在一些存储数据错误,比如电荷阈值偏移、读写干扰等原因,各种各样的因素导致SSD的flash中存储一些ECC无法纠正的坏块;

  • 上述的坏块会导致读写错误,H2testw的测试目的就在于测试对这些坏块进行校验;

  • H2testw会向选择的目录内写入自行产生的单个最大的1G的文件然后再将这些数据读出,通过这种方式来确定坏块;

  • 该测试不会损坏原有数据,不过如果要测试的数据有代表性的话,建议将SSD全盘格式掉以后再进行测试;

下图为使用H2TESTw进行数据写入和读取校验的结果,其实该测试也是我们去评估存储设备数据传输稳定性的一个很好的工具。

66a3318046b9364e1cc695be85a49713.png

3、AS SSD Benchmark Test

主要的测试项目有如下:

  • 连续读写,AS SSD会以16M的尺寸为单位,持续向受测分区写入生成一个达到1GB大小的文件,然后再将这些数据以同样的方式读取出来,最后计算平均成绩而给出结果,测试完毕后,测试文件会立即删除;

  • 4K随机单队列深度测试,测试软件会生成1个1GB大小的测试文件,然后使用4KB的单位尺寸在这1GB文件的LBA范围内进行写入和读出操作,跑完所有测试范围后计算平均结果,测试文件会暂时保留;

  • 随机64队列深度测试,测试软件生成64个16M大小的测试文件,然后对这64个文件进行随机写入和读取操作,计算测试平均值;

  • 访问时间:记录的是测试软件在进行写入的平均时间

447ef3dcea4c68c9ea2deb54ff5a1f8c.png

4、ATTO磁盘基准测试

  • ATTO磁盘基准测试软件也是用来测试固态存储的一个读取速率的一个工具,但是与前面的相比较也是有差异的;

  • ATTO在测速的时候使用了不同的数据包,数据包按照0.5K、1.0K、2K直到8192K的大小分别进行读写测试,测试完成后数据会使用柱状图的形式表现出来;

  • 通过上述的测试方法,可以很好的说明了文件大小比例不同对存储设备速度的影响;

f4799bea25f0ef81519ff2a714ab3596.png

5、Crystal Disk Mark

f373b0adf273a52eda0d8a293a6764c3.png

Crystal disk mark也是一款常用的SSD测速工具,与上述的差异点在于增加了512KB的随机读写测试和32队列深度的4KB读写测试,不过这些读写性能测试的测试数据可以相会对照和参考。

总结:

上述大概讲解了固态存储设备需要了解的一些知识,SSD的硬件架构、在评估固态存储时需要考虑的一些因素、在原理上为什么SSD对用户体验的提升如此明显、以及使用哪些工具对SSD进行测试等问题。

为了方便各位小伙伴交流学习和继续研究我们整理了如下资料,相关问题可在交流群探讨。

在公众号后台发送消息:  SSD测试   即可获取相关资料。

  • SSD产品评测报告

    a61593e6ddb218e0e6b9245445373f2c.png

  • 所有的测试工具

    b976b0e1f33bf89ccf12d9a6d0661545.png

  • 测试教程和SSD相关的学习资料

e3ee140cd7c6986f4c0ef434e6ceadc6.png



推荐阅读
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 服务器上的操作系统有哪些,如何选择适合的操作系统?
    本文介绍了服务器上常见的操作系统,包括系统盘镜像、数据盘镜像和整机镜像的数量。同时,还介绍了共享镜像的限制和使用方法。此外,还提供了关于华为云服务的帮助中心,其中包括产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题和视频帮助等技术文档。对于裸金属服务器的远程登录,本文介绍了使用密钥对登录的方法,并提供了部分操作系统配置示例。最后,还提到了SUSE云耀云服务器的特点和快速搭建方法。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 嵌入式处理器的架构与内核发展历程
    本文主要介绍了嵌入式处理器的架构与内核发展历程,包括不同架构的指令集的变化,以及内核的流水线和结构。通过对ARM架构的分析,可以更好地理解嵌入式处理器的架构与内核的关系。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
author-avatar
Smile--麦芽
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有