[馊评测] DriveMaster NVMe Power State测试

原创内容,转载请注明:  [http://www.ssdfans.com]  谢谢!

之前写过一篇介绍NVMePower State的文章,近期SSDFans从ULINK这边借了一套测试NVMe Power State的设备,正好可以实践一下。

首先先回顾一下什么是NVMe Power State的相关基本概念。

NVMe  Spec里给出的动态电源管理的框图:

Power objective和PerformanceObjective: 系统层面的应用有功耗和读写性能的目标,这个是输入。

Power Manager (Host Software): 这个我理解是NVMeController Device Driver

NVMe Express Power State: NVMe规定(IdentifyController Data Structure)最多支持32个Power State Descriptor,其中Power State Descriptor 0是必须support 的,其他都是可选。

每个Power State都有一个32 Byte的 Descriptor数据结构,里面包括了该Power State下各种属性, 比如:

Active Power Scale: 该Power state下Active模式功耗的粒度;

Active Power: 该Power state下Active模式的最大平均功耗, 这个值乘以上面的Scale,就是实际功耗值;

Relative Write Latency: 该Power state下的写延迟, 值越小代表延迟越低 (这个值的分级级数必须小于Controller支持的PowerState数量,Controller不能一边说只支持5个Power State,一边说可以支持10种写入延迟,这个是耍流氓);

Relative Write Throughput: 该Power state下的写入吞吐量:值越小代表吞吐量越高 (这个值的分级级数同样必须小于Controller支持的Power State数量)。

Host和Controller之间,就通过对这些Field的修改,实现下面的沟通。

Entry Latency: 进入该PowerState的时间(微妙级);

Exit Latency: 退出该PowerState的时间(微妙级);

这两个值给Host,Host根据这个来决策是否进入,何时进入某个Power State;

Non-Operation State:为’0’代表在这个PowerState Controller会处理IO,为‘1’代表在这个Power State Controller不会处理IO。

Host的具体操作是:

1.      Host给Controller发个IdentifyController Command, Controller会回复一个4K的数据包。

2.      Host解析数据包获知Controller支持的PowerState的数量以及Power State下Controller的具体属性

3.      Host根据实际情况,通过SetFeature Command命令控制Controller进入相应的Power State

4.      Host也可以通过GetFeature Command来获知当前Controller所处的Power State

NVMe Power State的介绍,收录在近期出版的 《深入浅出SSD》一书的电源管理章节中,扫描识别下方二维码即可购买。

ULINK用来测试NVMe Power State的这套设备包括:

  • ULINK的PCIe SSDPower Adapter

  • Intel的 NUC平台 (支持ASPM L1.2)

  • M.2 to PCIe转接卡(支持CLKREQ功能)

  • PCIe to M.2 转接卡(支持CLKREQ功能)

整个环境搭起来就是下面这样:

环境搭建完毕,打开DriveMaster2015 NVMe并加载专用脚本,就可以开始测试了。

我们首先使用Samsung 960 EVO进行了测试,(下面这张表格为脚本自动检测SSD支持的Power State数量与参数)。

1.      从日志开头的汇总表格来看,960EVO一共支持5个Power State

2.      从Power State 0开始,功耗逐渐降低

3.      从NOPS(Non-Operational State)这列可知,Power State 0~2 允许有IO,Power State 3,4 不允许IO

4.      Power State 3,4 分别给出了ENLAT (entrylatency)和EXLAT (exit latency)

5.      APW的全称是ActivePower Workload (000b=No Workload Specified; 001b=Workload #1; 010b=Workload #2),系统会去检查SSD有没有指定Workload进行测试,如果没有指定的话就用ULINK的workload,三星960EVO并没有指定workload,测试中就使用了ULINK自己定义的workload:

a)       ULINK workload:先idle 5分钟,然后下50,000个50KB的随机写命令,之后再idle5秒钟

b)       Workload 1:先idle 5分钟,然后下32个1MB的随机写命令,之后再idle30秒钟

c)        Workload 2: 80,000个128KB的顺序写命令

PowerState 1测试日志(本文只列出了部分Power State 的日志)

Power State 1Entry Time              : 8134 us (Not Specified by thedevice)// 进入Power State1耗时 8134 us

IDLE RMS Current        : 3.3V: 378.6 mA  12V: 0.0 mA (1.2493 w)

//在Power State 1下,Idle状态的功耗为1.2493w(3.3V*378.6mA)

Use Workload            : Workload #0/ULINK Workload

//使用ULINK自己定义的Workload

ACTP RMS Current        : 3.3V: 673.3 mA  12V: 0.0 mA (2.0872 w)

// 在Power State1下,Active状态的平均功耗为2.0872w

ACTP Max Current        : 3.3V: 681.9 mA  12V: 0.0 mA (2.2502 w)

// 在Power State1下,Active状态的最大功耗为2.2502w

ACTP Power              : 27.1067 Joules

Read Throughput (IOPS)  : 39318

// 在Power State 1下,read IOPS为39318

Read Latency            : 25 us

// 在Power State 1下,readlatency为25us

Write Throughput (IOPS) : 43021

// 在Power State 1下, write IOPS为43021

Write Latency           : 23 us

// 在Power State 1下, writelatency为23us

Exit Time               : 2840 us (Not Specified by thedevice)

// Power State 1的退出时间为2840 us

PowerState 3测试日志:

Power State 3Entry Time              : 8355 us +++++Fail (Entry TimeToo Long; Does not meet the default:210 us)// 进入Power State3耗时 8155 us,超过了SSD自己申明的时间(210us)

IDLE RMS Current        : 3.3V: 9.1 mA  12V: 0.0 mA (0.0300 w)

//在Power State 1下,Idle状态的功耗为0.0300w

Use Workload            : N/A

// 因为NOPS=1,所以不使用workload,而且下面三个ActiveState相关的功耗统计都是N/A

ACTP Average Current    : N/A (NOPS = 1)

ACTP Max Current        : N/A (NOPS = 1)

ACTP Power              : N/A

Read Throughput (IOPS)  : 11574

//因为NOPS=1,说明这个powerstate预期是没有IO的,DriveMaster为了让客户了解该Power State下的读写状况,强制发了IO

Read Latency            : 86 us

Write Throughput (IOPS) : 14357

Write Latency           : 69 us

Exit Time               : 4586 us +++++Fail (Exit Time Too Long; Doesnot meet the default:1200 us)

// 退出Power State3耗时 4586 us,超过了SSD自己申明的时间(1200us)

在Power State 3的部分,Entry Time和Exit Time都显示fail — 超过了规定的时间。这个时间并不是NVMe Spec规定的,而是固件在Identify过程中上报的,厂商可以自己定义这个时间。

PowerState 4测试日志:

Power State 4

Entry Time              : 7795 us +++++Fail (Entry TimeToo Long; Does not meet the default:2000 us)

IDLE RMS Current        : 3.3V: 0.2 mA  12V: 0.0 mA (0.0006 w)

// 可以看到,Power State 4是非常省电的,整个SSD的功耗是0.6毫瓦

Use Workload            : N/A

ACTP Average Current    : N/A (NOPS = 1)

ACTP Max Current        : N/A (NOPS = 1)

ACTP Power              : N/A

Read Throughput (IOPS)  : 11602

Read Latency            : 86 us

Write Throughput (IOPS) : 14330

Write Latency           : 69 us

Exit Time               : 8955 us +++++Fail (Exit TimeToo Long; Does not meet the default:6000 us)

最后,在整个测试过程中,DriveMaster会全程监控电流值并记录在csv格式的日志里,使用这些数据绘制出SSD在不同Power State下的功耗情况,如下图:

分类目录 SSD, 技术文章.
扫一扫二维码或者微信搜索公众号ssdfans关注(添加朋友->点最下面的公众号->搜索ssdfans),可以经常看到SSD技术和产业的文章(SSD Fans只推送干货)。
ssdfans微信群介绍
技术讨论群 覆盖2000多位中国和世界华人圈SSD以及存储技术精英
固件、软件、测试群 固件、软件和测试技术讨论
异构计算群 讨论人工智能和GPU、FPGA、CPU异构计算
ASIC-FPGA群 芯片和FPGA硬件技术讨论群
闪存器件群 NAND、3D XPoint等固态存储介质技术讨论
企业级 企业级SSD、企业级存储
销售群 全国SSD供应商都在这里,砍砍价,会比某东便宜20%
工作求职群 存储行业换工作,发招聘,要关注各大公司招聘信息,赶快来
高管群 各大SSD相关存储公司高管和创始人、投资人

想加入这些群,请微信扫描下面二维码,或搜索nanoarchplus,加阿呆为微信好友,介绍你的昵称-单位-职务,注明群名,拉你进群。SSD业界需要什么帮助,也可以找阿呆聊。