蛋蛋是个有技术,有理想,有节操的科技工作者。
前段时间他结合自己业余时间看小电影的经验讲解什么是SSD的OP ,还画了下面一系列图片详细解释什么在下载,观看,删除,再下载过程中,OP是如何在SSD上发挥作用的。
简单放两张图,放多了蛋蛋要说我骗稿费了。
- 新买的SSD
-
蛋蛋看了一礼拜小电影以后的SSD
我当时真诚的跟蛋蛋商量,把他这篇”FTL之垃圾回收、写放大和OP”命名为戏说FTL (2)。
他不,他端着,他说他这个不是”戏”说。
任我苦苦劝说,晓之以理,动之以情,蛋蛋还是不从。
那我自己写呗,后续系列中如有和蛋蛋雷同的部分 – 纯属故意。
有次我们腐败,等位的时候蛋蛋掏出手机开始玩游戏 。
下面那个预留出来的空间,作用正好跟SSD的OP差不多
出来混总是要还的,刘邦的汉朝一统天下四百多年,即将走到尽头。
东汉末年曹委员长一统北方,执了大半只牛耳,为了凑齐整只牛耳,他发大兵南下准备Neng死孙刘两位书记,最后自己差点被Neng死 – 这就是著名的赤壁之战。
先说曹操的兵力:
演义中的版本:曹操本身兵力50万,荆州降军28万,合计约80万
正史中的版本:曹操本身兵力30万,荆州降军不足10万,合计最多40万
演义有夸大的成分,正史的部分,这个30+10,其实也有待商榷:
- 曹操夸大军力震慑对手 – 反正没人能数清楚
- 将领夸大军力多获取军饷 –将领的俸禄不高,打仗的时候克扣军粮影响士气,变通的方法就是弄假编制多领军饷。
这部分多出来的编制在三国演义英文版中,就被翻译为OP (Over Provision) ,计算公式如下:
OP=(上报的编制-实际人数)/实际人数
当时不同级别的武将OP的规则是这样的:
官阶 |
兵力 |
OP |
骠骑将军 |
10万 |
20% |
车骑将军 |
5万 |
15% |
卫将军 |
2万 |
10% |
中郎将 |
1万 |
5% |
校尉 |
1千 |
3% |
这个概念后来被攻城狮们应用到了SSD的设计里面,还叫OP,计算公式如下:
OP=(实际容量-用户容量)/用户容量
消费级和企业级通常使用不同的OP
Physical capacity |
User capacity |
% Over-Provisioning |
Application class |
64 GB |
60 GB |
7% |
Client |
96 GB |
90 GB |
7% |
Client |
128 GB |
120 GB |
7% |
Client |
128 GB |
100 GB |
28% |
Enterprise |
256 GB |
240 GB |
7% |
Client |
256 GB |
200 GB |
28% |
Enterprise |
512 GB |
480 GB |
7% |
Client |
512 GB |
400GB |
28% |
Enterprise |
面对来势汹汹的敌军,周瑜、诸葛两位政委临危不乱,采用远距离兵种出战并开发了一种全新的战术 — 微操车轮战。
- 且战且退,保持对方在本方远程攻击范围内
- 生力军顶在前线跟敌军短兵相接
- 不断把受伤的士兵调配到队伍最后方
- 没有生力军的情况下,选择受伤最轻的士兵顶在前线
该战术图解如下:
所有人一边挑衅:”你来砍我呀”,一边使劲突突
年轻力壮的殿后突突,其他人一边后撤一边突突
换另一拨年轻力壮的殿后突突,刚才受伤的到队伍最后方,所有人继续突突
搞定收工
战术的关键就是有足够的空间,如果被敌人围住,后果你懂的…
微操车轮战后来被翻译为Wearleveling,不出所料又被攻城狮们放到了SSD设计中。
- 士兵的生命值=PE Cycle
- 上海=Erase
- 火力=Read/Write Performance
这个战术的核心思想就是将敌方造成的伤害均衡的分布到所有士兵身上,以空间换取单体的战斗时间,从而延长整个建制的战斗时间(宁伤十指,不断一指),保证整个建制火力输出。
同理,在SSD的实际使用中,OP作为备用交换空间,提高使用寿命的同时,也提高了读写性能。
正所谓伤敌一千,自损八百,一场战斗下来,一个作战单位就变成了右边这个样子。
这个时候就需要强大的支持系统(Background Operation),包括:
队伍整编(Garbage Collection):
- 确定队伍里的伤兵 (Trim the page which data is invalid)
- 没有受伤的士兵重新编队继续出战 ( merge the pages has valid data into a new block)
- 伤兵集中由军医进行治疗 ( Erase the block)
番号重建 (Bad Block Management):
- 建制完全打残的队伍(Bad Block),需要重建(Bad Block management).
- 保留其番号(Logical page),从预备队(OP)找一支队伍(another block)代替(modify map table)
预备队直接上战场 (use OP space to write data)
- 不用等待整编(GC)完成
- 第一时间保证前线的战斗力(Write Throughput)
可以看到OP在不同的地方都能发挥非常重要的作用。
最后,我们用一份Kingston官方数据愉快的结束 — 不同OP对4K RW Performance的影响。