PCEVA,PC绝对领域,探寻真正的电脑知识
开启左侧

手动Trim实现原理以及对SSD影响的探索

[复制链接]
糊了么 发表于 2016-9-12 16:22 | 显示全部楼层 |阅读模式
点击数:7287|回复数:10
论坛里关于ARC100的一个帖子里有人多次提到对手动Trim的疑惑,手动Trim会“伤”固态吗?手动Trim一次消耗一个PE?手动Trim一次会产生多大写入?好吧这些问题的答案虽然我心里有数,但无图无真相,服人也要靠道理。测一下看不就知道了?

测试环境:Windows 10 Pro 1607,默认storahci驱动,固态硬盘是影驰的铁甲战将240,固件版本SAFM12.2。影驰的SSD魔盘工具箱可以查到这块铁甲战将的平均擦除、最大擦除以及Flash写入量(实际应为主机写入量)三个参数。

使用Process Monitor监视铁甲战将240上的所有磁盘活动,先来试试Windows 10自带的“优化驱动器”功能,对于机械硬盘来说他执行的是碎片整理,对于固态硬盘则是手动Trim空白空间。所有被Trim的区间都将被认为是数据已经无效的,所以手动Trim的范围永远是固态硬盘内尚未使用(没有文件占用)的空间。我测试的影驰铁甲战将240当前是空盘状态,所以手动Trim的会是全盘空间。

点下优化按钮后,Process Monitor瞬间出现大量磁盘活动记录。一条一条来分析,Windows 10优化驱动器功能执行的第一步操作是先获得Volume Bitmap,了解文件系统中哪些位置没有文件记录,接下来的优化(手动Trim)就将针对这些位置进行。

第二步所需的临时文件,0数据内容,但预分配1GB空间。

第三步,移动文件,这样在从一个位置移走(删除)的时候就会发送Trim指令给SSD主控。Windows 10自带的手动Trim就是这样是以1GB为单位执行Trim的。


接下来再看另外一个手动Trim方式:ForceTrim工具软件

同样使用Process Monitor软件监控铁甲战将240上的磁盘活动。
第一步,ForceTrim先查了下盘内还有多少剩余空间


第二步,ForceTrim先创建一个2GB的文件,然后跳转到相对于文件头大约2GB偏移量的位置,写入一个字节,再关闭文件。由于不是微软自家软件,系统自带的Defender这时候会跳出来检查这个新生成的文件,其实除了写入的那1个字节之外,整个文件都是空的。ForceTrim会不停的创建2GB文件,写入1字节,直至满盘。

第三步,ForceTrim将这些几乎完全是空的文件全部删除,这样磁盘控制器驱动将会发送Trim指令给SSD。


最后再试试Intel SSD Toolbox(以下简称ITB),这个工具箱原本只能用于Intel家的SSD,不过浴大有过2.0版本的破解,我装了一个试试,结果能执行Trim,但是返回结果是Fail,具体还是先看Proces Monitor的记录吧:

第一步,ITB也是先查剩余空间


第二步,ITB的做法比较有意思,它生成了两种不同容量的文件来“占地盘”,一种是3GB大小,另外一种只有1MB大小。从完成速度来看,这些文件也是空文件,只圈地不建楼,几乎没写入。

第三步,ITB把这些占地盘的文件删除,触发Trim传递给SSD


总结:

手动Trim工具是通过生成不含数据的稀疏文件然后再删除,从而发送Trim指令给SSD主控,虽然文件占据了很大的体积,但实际产生的写入量很小。SSD主控收到Trim指令后第一件要做的事情不是直接擦除Block,而是要先根据FTL表情况了解哪些Block原本FTL里有数据记录的(然后在合适的时机下执行擦除),哪些Block里原本就没有数据(也就不必再擦除了)。

空白盘或是Trim正常工作中的固态硬盘,手动Trim后应该不会产生闪存磨损,主机写入量基本也不会增加(写入的是0数据的稀疏文件)。空盘状态下我以2分钟为间隔对影驰铁甲战将240执行了5次优化驱动器(手动Trim)操作,影驰SSD魔盘工具箱检测到的闪存平均擦除与最大擦除计数均为发生任何改变。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 4代金券 +50 绝对值 +3 收起 理由
贱狗在飞啊 + 1 很给力!
Y6-0785 + 1 很给力!
cyclonebaby + 1 很给力!
石头 + 50 1精

查看全部评分

showp1874 发表于 2016-9-12 17:23 | 显示全部楼层
想问下楼主电脑硬盘方案是SSD+HDD咩?

上周升级Q300安装WIN10 1607版本,会出现随机卡顿
开始以为是SSD的锅,但重装WIN7正常
WIN8.1和WIN10 1511没有测试过
fjzjk1 发表于 2016-9-12 17:38 | 显示全部楼层
showp1874 发表于 2016-9-12 17:23
想问下楼主电脑硬盘方案是SSD+HDD咩?

上周升级Q300安装WIN10 1607版本,会出现随机卡顿

win10出现卡顿是很经常有的,需要具体查找问题
中华田园犬 发表于 2016-9-12 17:49 | 显示全部楼层
支持这种探索精神,只要是合格的盘日常使用根本就不用担心寿命,有些人就是杞人忧天
nighttob 发表于 2016-9-12 18:42 | 显示全部楼层
本帖最后由 nighttob 于 2016-9-12 18:43 编辑

在ARC100那帖子里我确实说的不如LZ这样清楚
但我有我的考量

对于软硬都支持trim的情形来说,手动trim就是划定范围然后发删除指令即可,所以基本上不需要有实际数据填充
但对软或者硬不支持trim的情形来说,这就可能有分歧

系统和软件是可以通过系统参数和IDENTIFY_DEVICE获取trim支持度的,对待不支持trim可能就会采用planB甚至planC

比如Windows自带磁盘整理在X25-E上面就直接说不支持优化

ITB也表示不支持

第三方软件如果要强制执行的话,只能是用全0数据覆盖后删除,制造一个易于被SSD GC的条件,但效果肯定远不如原生trim的好
所以说在某些极端情况下,手动trim(这里应该做广义理解了,实际上这已经不是trim)是会产生大量写入,但这个情况只能说越来越极端
因此结论依然是支持LZ的研究结果的,对现今主流情况而言,手动trim对SSD的实际写入微乎其微


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
satan001 发表于 2016-9-12 19:52 | 显示全部楼层
原来如此,学习到了一些。
来自苹果客户端来自苹果客户端
909648183 发表于 2016-9-12 20:35 | 显示全部楼层
本帖最后由 909648183 于 2016-9-12 20:39 编辑
nighttob 发表于 2016-9-12 18:42
在ARC100那帖子里我确实说的不如LZ这样清楚
但我有我的考量

我知道你说的最后一种情况,之前那个帖子里说的“强制”GC就是指的你说的最后一种情况
全盘填充数据后,SSD 不得不进行GC,后来又想到不是所有的手动trim都是这样的,就又改了回复


如果你可以看到我修改回复的记录的话,也可以看到那个帖子的回复里我也提到在不支持正常trim的情况下手动trim会造成大量写入。但我了解的没有你这么清楚,就,怕又弄错了什么,又自己删掉了这些内容。



Mufasa 发表于 2016-9-12 20:50 | 显示全部楼层
上古时代我也做过类似的事情,这两年似乎没有再关心过Trim了。

当时我的办法更简单粗暴,直接拷一部蓝光高清到SSD里面,然后删除。
对于Marvel系列主控,这样可以触发强制GC,能够适当恢复性能。

SandForce无效,实际上SandForce用于无Trim环境性能下跌也缓慢。

后来因为SSD容量不断变大,我很少会把SSD装满,也就不再需要这些优化操作。
cyclonebaby 发表于 2016-9-12 22:44 | 显示全部楼层
这个科普真的好,非常感谢
SF2281 发表于 2016-9-13 08:57 | 显示全部楼层
从楼主的分析看手动trim对SSD的实际写入真不大。其实只看TRIM并不能恢复性能,而是TRIM后的执行的GC操作会恢复SSD性能。
haierccc 发表于 2016-9-20 06:54 | 显示全部楼层
好文!
有理有据!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部