刚买了新固态硬盘,想测测它到底有多快,于是拖一个巨大的压缩包从一块盘拷到另一块盘,盯着进度条上的实时速度看——这大概是很多人上手新SSD后的第一个动作。看起来再直接不过,但屏幕上跳出来的那个数字,可能和这块盘的真实水平关系不大。
拷文件确实能测出点东西,只是测的未必是你以为的那件事。整个传输链路上,任何一个环节都可能成为瓶颈,速度读数因此很容易失真。
拷文件测的是整条链路,不是SSD本身
直觉上,拷文件是最贴近真实使用的测试方式,但它离可靠的基准测试差得很远。即便在理想条件下,传输速度也受制于整条链路里最弱的那一环。
如果是在同一块SSD内部从一个文件夹拷到另一个文件夹,这并不能反映盘的峰值性能——盘要在读和写之间分配内部带宽。文件特别大,或者盘已经装得比较满,还可能强制触发垃圾回收,速度进一步被拖低。
这些因素叠加起来,让测试变成了一种读写混合负载。它适合验证这个特定任务的表现,但你不会看到盘跑到峰值顺序读取或顺序写入速度。
换成从另一块SSD往被测盘拷大文件,对衡量顺序写入性能会好不少,但同时又引入了新的潜在瓶颈:两块盘的可用空间、源盘的速度、主板和接口能提供的带宽、USB硬盘盒和线材、内存缓存、后台活动,以及操作系统处理传输的方式,都会影响结果。
说到底,这个测试测的是那个特定场景下的表现。测出来的速度对那项任务是有意义的——比如你经常从内置SSD往外置盘拷文件——但它说明不了这块盘的整体性能。
快着快着就慢了,不是盘坏了
拷一个大文件并非一无是处。假设你已经排除了前面说的主要瓶颈:目标盘是空的、文件大到能填满它的大部分空间、源盘速度跟得上、主板或USB硬盘盒带宽足够不拖后腿。
刚开始拷贝时,你看到的写入速度可能相当接近厂商标称的顺序写入速度。但随着传输进行,速度可能突然大幅下跌。从高达4GB/s掉到只有80MB/s甚至更低,这种情况并不罕见。
你可能会怀疑这块号称飞快的NVMe盘有问题,或者线材、系统出了毛病,但对现代TLC和QLC颗粒的盘来说,这完全可能是正常现象。
原因在于这类盘常用一种叫伪SLC缓存(pseudo-SLC cache)的机制。SLC闪存每个单元存1个比特,TLC和QLC分别存3个和4个比特。每个单元存的比特越少,写入越快,于是主控可以把一部分TLC或QLC闪存临时当作SLC来用,每个单元只存1个比特,先把数据快速写进去,之后再折叠回正常的TLC或QLC格式。这样盘就能在不额外配备专用SLC闪存的前提下实现高速写入。
问题在于,这个伪SLC缓存容量有限。一旦缓存被填满的速度快过盘腾出空间的速度,写入速度就会掉到盘本身的TLC或QLC原生写入速度,具体取决于设计。
这些并不是"假"速度。伪SLC缓存让SSD在保持相对便宜的同时跑出很高的传输速率,代价是:只要传输量足够大、把可用缓存耗尽,你终究会撞上盘的持续写入速度。
不同型号、不同容量的SSD,可用的SLC缓存大小差别可能很大,缓存耗尽后的写入速度同样差别很大。这两者共同决定了盘能维持初始传输速率多久,以及缓存填满后写得多快。
小文件才照出日常使用的真相
用单个大文件测SSD,真正的问题在于顺序速度说明不了随机读写性能。随机读写在原始吞吐量上可能慢得多,却往往和日常使用更相关。
举例来说,游戏和程序可能需要从不同位置加载许多小文件或数据块,而不是从头到尾读一个文件。拷贝装满小文件的文件夹也是类似的情况,和拷一个大文件完全不同。
有意思的是,随着PCIe代际更新,随机读写性能的提升幅度并不总像顺序速度那么大。所以不能因为一块盘标称的最大带宽更高,就假定它实际表现更好。
想判断同价位里哪块盘更值,需要去看独立的SSD测试,尤其是当你买盘并不是冲着顺序速度去的时候。
测大文件传输快慢,可以作为判断缓存写入和持续写入速度的有用指标,但要拼出完整图景,还得结合合成基准测试和真实工作负载。
甚至在跑测试之前,一块盘的很多性能信息就能从规格表里推出来:TLC成本更高,但在各方面都优于QLC;有没有DRAM缓存,对性能的影响也相当明显,尤其是当你习惯让盘长期处于接近装满的状态时。
热门跟贴