SSD寿命和写放大测试

一、简述

SSD寿命规格,业界标准为TBW,TBW指的是Terabyte Writteb写入的兆兆字节,也有定义为Total Bytes Written,SSD使用寿命结束之前指定工作量可以写入SSD的总数据量,用来表达固态硬盘的寿命指标。
因为 SSD 使用 NAND 做为存储介质,SSD 的寿命本质上受限于 NAND 的寿命。NAND 寿命的量化指标叫 P/E Cycles,也就是写入/擦除(program / erase)次数,因为 NAND 是以页(page)为单位写入数据,以块(block)为单位擦除,对于已经写入数据的 block,必须将原有数据进行搬移,SSD 是通过“垃圾回收”(Garbage Collection,GC)的机制来回收被无效数据占用的空闲空间,GC 额外搬移的数据需要用到 SSD 的 OP(Over-provisioning)预留空间。对整个 block 的数据擦除后才能允许新数据写入。一写一擦就会消耗 NAND 一个 P/E。
在 NAND 还是 2D 平面时代,TLC NAND PE 只有 500-1000,但在 NAND 进入 3D 堆叠时代后,用于企业级 SSD 的 3D eTLC 可以达到 5000~10,000 PE。

1.1 SSD寿命单位

SSD 寿命的单位有两种,PBW(或 TBW)和 DWPD。
 PBW/TBW:全称是 Petabytes/Terabytes Written,也就是在 SSD 的生命周期内允许的主机端数据写入量。1PBW = 1000TBW
TBW与业务模型强相关,因此,需要固定业务模型,并计算出在此种业务模型下,实际的TBW:
TBW=host_bytes_written差值321024*1024/1024/1000/1000/1000/1000/timed_workload_media_wear
 DWPD:全称是 Drive Writes Per Day。也就是在生命周期内(一般为 5 年),SSD 每天允许全盘写入的次数。DWPD 和 PBW/TBW 可以相互换算,公式如下:
在这里插入图片描述
DWDP意味着每天可以对SSD整体擦写几次,可以根据业务大小选定合适DWDP的SSD。

1.2 写放大

不同工作负载因为数据分布的不同触发“垃圾回收”(GC)的粒度不同。GC 在进行无效数据的搬移时会引入额外的系统数据写入,带来写放大 WA(Write Amplification),也就是实际用户写一笔数据,真正写入到 SSD 的可能需要 2-3 笔。写放大因子(Write Amplification Factor,简称 WAF)是 NAND 总写量除以用户预期的数据写入量的比率,通过 WAF 可以对 WA 引入的多余写入量进行量化。
在这里插入图片描述

二、查看数据

2.1 查看nvme寿命

smartctl -a /dev/nvme5n1(或者smartctl -x /dev/nvme5n1)
Data Units Written是指软件写入硬盘的数据量,单位是1000 * 512bytes,换算GB为6,081,467,848*1000*512bytes /1000/1000/1000/1000/1000 = 3.11PB
在这里插入图片描述

2.2 查看nvme精确磨损度

计算DWPD需要得到测试期间磁盘磨损度数据以计算TBW,可以通过Solidigm盘测试方法:
1.sst工具查询NVMe盘对应的ID:sst show -ssd;
2.测试之前用sst工具先reset硬盘sst reset -ssd 3 -enduranceanalyzer;
3.测试业务结束后nvme intel smart-log-add /dev/nvme2n1查看smart信息;
timed_workload_media_wear表示从sst命令重置后,写入的数据,增加的磨损度63.999%
在这里插入图片描述

2.3 查看由RAID卡管理的SSD

/opt/MegaRAID/storcli/storcli64 /call show

在这里插入图片描述

smartctl -a -d megaraid,8 /dev/sda(35是PD LIST里的DID)
DID和盘符的对应关系可以根据lsscsi中地址和/opt/MegaRAID/storcli/storcli64 /call show的JBOD LIST中的ID对应起来
在这里插入图片描述

观察参数:
Host_writes_32MB(软件写入硬盘数据量)
media_wearout_indicator(磨损率)
单位换算:host_bytes_written 321024*1024/1000/1000/1000/1000 T
nand_bytes_written =盘所有的写入(包含盘自身的gc搬移等写入)
host_bytes_written = 盘接受到的软件的写入

SSD寿命是否下降过快其实就是SSD写入数据量与用户数据写入量的比值是否过大,也就是写放大是否过大,由于分布式存储或者说软件定义的存储,影响最终写放大(WAF)的因素特别多(冗余策略、GC、压缩等),且目前行业内没有一个固定标准,按照目前测试经验来说全流程写放大超过10,基本上已经可以判定存在较大问题。

2.4 获取客户端写入数据量

可以根据下发io工具的回显计算
例如:vdbench可以通过平均IO带宽*写入时间计算

三、写放大测试

3.1 写放大的测定和业务模型关联

常用的测试模型有4k,8k,1M.
一般采用读写比例3:7,全随机覆盖写,需要事先1M顺序写预埋数据,预埋比例设计触发GC力度,也会影响写放大的大小。

影响写放大测定的因素有:
1、业务模型IO大小
2、业务模型读写比例
3、业务模型顺序随机
4、预埋数据占容量比例
5、测试时长
6、冗余策略

影响因素的原因为:
1、下发写入到硬盘的块大小通常是固定的,比如4MiB,如果写4k占用一个4MiB的块,写放大就与8K,1M不通,不过通常小IO会通过cache聚合一部分,但是还会有一定差异。
2、写放大和写的关系比较大,读存在搬移读可能也有一部分但是没有写影响大
3、通常随机产生的写放大要比顺序大,和1中的原因相似,随机更容易存在小的碎片的写占用很多大的块
4、预埋数据容量和GC力度有关,GC力度越大越可能产生写放大
5、测试时长,稍微复杂一点,和GC标记垃圾,回收,以及写放大的波动有关。
6、三副本或者EC4+2容量有效率不同,写放大也不同。

3.2 写放大计算

W A F 总 = Δ N a n d W r i t e 总 Δ H o s t W r i t e WAF_{总}=\frac{\Delta NandWrite_{总}}{\Delta HostWrite} WAF=ΔHostWriteΔNandWrite
其中WAF为总写放大, N a n d W r i t e 总 NandWrite_{总} NandWrite为所有盘写入数据量, Δ H o s t W r i t e \Delta HostWrite ΔHostWrite为软件总写入数据量。

T B W = Δ N a n d W r i t e 总 Δ W e a r TBW=\frac{\Delta NandWrite_{总}}{\Delta Wear} TBW=ΔWearΔNandWrite
其中TBW为盘总共可以擦写的数据量,Wear为磨损率。

D W P D = T B W S p a c e ∗ Y e a r ∗ 365 DWPD=\frac{TBW}{Space*Year*365} DWPD=SpaceYear365TBW
其中DWPD为盘寿命中每天可以擦写的次数,Space为盘容量,Year为寿命数。

W A F 盘 = Δ N a n d W r i t e 盘 Δ H o s t W r i t e / N u m 盘 / U a s g e WAF_{盘}=\frac{\Delta NandWrite_{盘}}{\Delta HostWrite/Num_{盘}/Uasge} WAF=ΔHostWrite/Num/UasgeΔNandWrite
其中 Δ N a n d W r i t e 盘 \Delta NandWrite_{盘} ΔNandWrite为盘写入数据量, N u m 盘 Num_{盘} Num为盘数目, U a s g e Uasge Uasge为存储利用率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/10413.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

同步、异步、阻塞、非阻塞

一、概念 同步与异步(线程间调用)的区别:关注的是调用方与被调用方之间的交互方式。同步调用会等待被调用方的结果返回,而异步调用则不会等待结果立即返回,可以通过回调或其他方式获取结果。 阻塞非阻塞(…

springboot集成

maven配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency><groupId>org.apache.commons</groupId><artifactId>…

wordpress我的个人网站搭建

WordPress介绍 WordPress是一个功能强大且易于使用的网站管理平台。它是基于PHP和MySQL构建的&#xff0c;可以在各种不同的主机上运行。 wordpress对服务器的要求 需求最低版本要求PHP7.4 或更高版本MySQL5.6 或更高版本Web服务器任意&#xff08;如&#xff1a;Apache、Ng…

一套流程6个步骤,教你如何正确采购询价

采购询价&#xff08;RFQ&#xff09;是一种竞争性投标文件&#xff0c;用于邀请供应商或承包商就标准化或重复生产的产品或服务提交报价。 询价通常用于大批量/低价值项目&#xff0c;买方必须提供技术规格和商业要求&#xff0c;该文件有时也称为招标书或投标邀请书。询价流…

git恢复删除的分支

1.查看被删除的分支 git remote prune --dry-run origin 被删除的分支是191 2.找到被删除分支的最后一次提交记录的commit SHA值 git reflog 最后一次提交的commit SHA值是3fa7532 3.恢复分支 git checkout -b xiaomeng 3fa7532 4.恢复成功后提交到远端&#xff0c;over&…

ubuntu20.04 安装 docker engine

打开docker官网 点击上图中间的Linux&#xff0c;会是这样&#xff1a; 点击上图的左边栏的 Docker Engine,点击install, 点击 Ubuntu&#xff0c;会是这样&#xff1a; 把页面翻下来&#xff0c;先按照 Insstallation methods 中的 set up thre repository&#xff0c;执行这些…

pytorch工具——认识pytorch

目录 pytorch的基本元素操作创建一个没有初始化的矩阵创建一个有初始化的矩阵创建一个全0矩阵并可指定数据元素类型为long直接通过数据创建张量通过已有的一个张量创建相同尺寸的新张量利用randn_like方法得到相同尺寸张量&#xff0c;并且采用随机初始化的方法为其赋值采用.si…

压力测试-商场项目

1.压力测试 压力测试是给软件不断加压&#xff0c;强制其在极限的情况下运行&#xff0c;观察它可以运行到何种程度&#xff0c;从而发现性能缺陷&#xff0c;是通过搭建与实际环境相似的测试环境&#xff0c;通过测试程序在同一时间内或某一段时间内&#xff0c;向系统发送预…

项目:点餐系统1

项目简介&#xff1a;实现一个http点餐系统服务器&#xff0c;能够支持用户在浏览器访问服务器获取餐馆首页&#xff0c;进行菜品以及订单管理。 具体模型如下&#xff1a; 用户分类&#xff1a; 管理员&#xff1a;进行订单以及菜品管理&#xff08;菜品&订单的增删改查&a…

STM32MP157驱动开发——按键驱动(异步通知)

文章目录 “异步通知 ”机制&#xff1a;信号的宏定义&#xff1a;信号注册 APP执行过程驱动编程做的事应用编程做的事异步通知方式的按键驱动程序(stm32mp157)button_test.cgpio_key_drv.cMakefile修改设备树文件编译测试 “异步通知 ”机制&#xff1a; 信号的宏定义&#x…

protobuf安装教程

protobuf安装 一&#xff0c;Windows下安装下载protobuf配置环境变量检查是否安装成功 二&#xff0c;Linux下安装下载protobuf安装protobuf检查是否安装成功 一&#xff0c;Windows下安装 下载protobuf 下载地址 本次下载以v21.11为例&#xff0c;根据自己需求下载即可。 配…

2023年深圳杯数学建模 D题 基于机理的致伤工具推断

致伤工具的推断一直是法医工作中的热点和难点。由于作用位置、作用方式的不同&#xff0c;相同的致伤工具在人体组织上会形成不同的损伤形态&#xff0c;不同的致伤工具也可能形成相同的损伤形态。致伤工具品种繁多、形态各异&#xff0c;但大致可分为两类&#xff1a;锐器&…

【12】STM32·HAL库开发-STM32时钟系统 | F1/F4/F7时钟树 | 配置系统时钟

目录 1.认识时钟树&#xff08;掌握&#xff09;1.1什么是时钟&#xff1f;1.2认识时钟树&#xff08;F1&#xff09;1.2.1STM32F103时钟树简图1.2.2STM32CubeMX时钟树&#xff08;F103&#xff09; 1.3认识时钟树&#xff08;F4&#xff09;1.3.1F407时钟树1.3.2F429时钟树1.3…

FFmpeg AVFilter的原理(三)- filter是如何被驱动的

首先上官方filter的链接&#xff1a;https://ffmpeg.org/ffmpeg-filters.html 关于filter命令行&#xff1a;FFmpeg-4.0 的filter机制的架构与实现.之一 Filter原理 1、下面是一个avfilter的graph 上图是ffmpeg中doc/examples中filtering_video.c案例的示意图。 特别注意上面蓝…

HPC集群调度系统和计算系统

什么是计算云&#xff1f; 所谓的计算云指的是为计算业务优化的类云基础架构&#xff0c;它强调用云的方式解决计算问题&#xff0c;而不是将“计算”搬到现有的公有云或者容器云上。 目前公有云或者容器云&#xff08;例如k8s&#xff09;上的HPC解决方案本质上都是将现有的H…

Linux CentOS监控系统的运行情况工具 - top/htop/glances/sar/nmon

在CentOS系统中&#xff0c;您可以使用以下工具来监控系统的运行情况&#xff1a; 1. top&#xff1a; top 是一个命令行工具&#xff0c;用于实时监控系统的进程、CPU、内存和负载情况。您可以使用以下命令来启动 top&#xff1a; top 输出 2. htop&#xff1a; htop 是一…

【MySQL】数据库基础

今天我们来讲一讲使用MySQL必备的基础知识 目录 一、MySQL的登录选项 二、什么是数据库 三、一些主流数据库 四、 服务器&#xff0c;数据库&#xff0c;表关系 五、mysql的架构 5.1 存储引擎 5.1.1 查看存储引擎 5.1.2 不同存储引擎的对比 六、SQL语言的分类 一、MyS…

IDEA live templates

surround 在SQL的xml里 可以修改变量 官方文档 CDATA not null <if test"$SELECTION$ ! null and $SELECTION$ ! "> and $VAR1$ #{$SELECTION$} </if>not null like mysql <if test"$SELECTION$ ! null and $SELECTION$ ! "> and…

spring-websocket在SpringBoot(包含SpringSecurity)项目中的导入

✅作者简介&#xff1a;大家好&#xff0c;我是 Meteors., 向往着更加简洁高效的代码写法与编程方式&#xff0c;持续分享Java技术内容。 &#x1f34e;个人主页&#xff1a;Meteors.的博客 &#x1f96d;本文内容&#xff1a;spring-websocket在SpringBoot(包含SpringSecurity…

MySQL的变量、流程控制与游标

目录 1.变量的分类 1.系统变量的分类 1.1.二者关系 2.查看系统变量 3.修改系统变量的值 4.用户变量 4.1会话用户变量 1.变量声明与赋值 2.变量使用 4.2.局部变量 1.使用declare 声明 2.局部变量声明格式 3.局部变量赋值 4.变量使用 5.定义条件与处…