Skip to main content

我想大部分读者已经明白最大的问题是什么了

  1. LoopDNS资讯播报
    闪存存储数据的过程就像在收纳箱里放衣服,往一个空箱子里放的时候你是可以按顺序叠放的。 但是当你想把里面的衣服更换的时候,你只能把盖在上面的衣服拿起来,把旧的衣服拿走,然后在换上新的,新的你可以选择夹在原有的衣服中,也可以放在最上层。 这是由于闪存的基础单元是一个page,多个page组成一个block。比如一个崭新的SSD,可以直接往未存放电子的page上写数据,而如果在文件系统中进行了删除或更改操作,这一块在映射表中就会被标记不可用。 那新的数据怎么办呢,就像上面说的,夹在旧的数据里面或者往未使用…
    我想大部分读者已经明白最大的问题是什么了。

    如果按照小米官方的说法,256g预留真的只剩了2g,那么在装满的时候,由于整个队列会非常拥塞,性能会严重下降。

    当然这个可以靠算法在闲时解决,类似于磁盘的“碎片整理”,主控在闲时可以尽量自行完成回收,把现有热数据,比如说经常更新的数据的block放一起,这样就可以避免空间接近放满的时候的拥塞问题。现有的pc上的ssd是有这个解决方案的,我相信小米也是有的。

    但是这样的算法操作也会有额外的擦除/写入。而且由于额外op的降低,这种操作反而要更频繁。算法只是软件上的优化,并不能解决硬件上的问题

    PS:如果你认为装满之前8g就是摆设,所以这个没有问题的话,你需要再看一下上面那条。如果不能手动关闭,那么软件设计上肯定要预备你装满的情况,接近/装满之后再优化什么都迟了