没有人谈论非SSD上的市长问题,这是分散的。
每个64KiB块都在没有压缩的情况下写入,但可以压缩,因此至少为<= 60KiB,然后写入少于64KiB,位嵌套块将到达与上一个未压缩的位置相同的位置压缩,所以差距很大。
使用任何Windows系统的virtusl机器的千兆字节文件进行测试(它们通常会减少50%,但会有大于10000个巨大片段)。
对于固态硬盘,有些事情没有告诉,它到底是怎么写的?我的意思是,如果确实将其未压缩地写入,然后用压缩版本覆盖(对于每个64KiB mega块),则SSD的寿命将大大减少;但是如果它直接以压缩形式写入,则SSD live可能更大或更短..如果一次只写入64KiB,则更长,如果在4KiB中写入64KiB,则更短,可能要短得多,因为它将写入这样的64KiB(压缩形式)是64/4 = 16倍。
造成性能下降的原因是,压缩/解压缩所需的CPU时间大于不需要写入4KiB块获得的时间...因此,如果CPU速度非常快而磁盘压缩速度非常慢,则可以减少读写时间,但是如果SSD是速度非常快,CPU速度很慢,写入速度会慢很多。
当我说的时候,我指的是快或慢的CPU,CPU可以被“数学”或其他进程使用,因此总要考虑免费的CPU,而不是纸上的CPU规格,磁盘/ SSD都一样。被多个进程使用。
假设您有7Zip使用LZMA2从另一个磁盘写入一个巨大的文件,它将占用大量CPU,因此,如果同时复制NTFS压缩文件,则它没有CPU可用,因此它的运行速度将比没有NTFS的慢压缩,但是只要7Zip结束使用CPU,这样的CPU就可以更快地进行NTFS压缩,而那时NTFS压缩可以更快地完成任务。
我个人从不使用NTFS压缩,我更喜欢PISMO文件挂载的PFO容器(具有压缩功能,并且还可以即时进行加密,并且对应用程序透明),在读取的同时,压缩率更高,对CPU的影响更小。即时进行写入,无需在使用前进行解压缩,只需在读写模式下安装和使用它即可。
由于PISMO在写入磁盘之前先对RAM进行压缩,因此可以使SSD的使用寿命更长,我对NTFS压缩的测试使我认为它两次将数据发送到磁盘两次,首先是未压缩的,然后如果可以压缩,则以压缩形式被忽略了。 。
为什么我的SSD上的NTFS压缩写入速度接近未压缩文件的1/2,而不是其压缩大小的1/2左右或更小?在我的AMD Threadripper 2950(32核和64线程)中,使用128GiB的ram(快速CPU,非常快的CPU),使用率不到1%,因此有足够的CPU进行压缩,其速度超过SSD最大安全速度。将64KiB块发送到未压缩的磁盘后再开始使用NTFS压缩,然后用压缩的版本覆盖...哦,如果我是在运行Linux的虚拟机上进行此操作的,而该虚拟机在主机上运行Linux,在来宾上运行Windows,则Linux缓存会通知我该集群被写入两次,而且速度快得多(Linux正在缓存Windows guest发送的非压缩NTFS写入,并且由于它们被压缩数据覆盖后,Linux不会将未压缩的数据发送到磁盘,
我的建议是,不要使用NTFS压缩,除非在虚拟机内部,如果主机是Linux,则guest虚拟机运行Windows,并且如果CPU使用速度不够快,则决不要使用CPU过多。
现代SSD具有巨大的内部ram缓存,因此SSD内部缓存系统可以减轻NTFS压缩引起的写入和覆盖。
我的测试是在“漂亮的” SSD上完成的,没有内部RAM用于SSD内的缓存,当我在具有ram缓存的内存上重复这些测试时,写入速度是最快的,但是却没有人想到。
做您自己的测试,并使用巨大的文件大小(大于所安装的tam的总数,以避免缓存隐藏的结果)。
顺便说一下,有些人对NTFS压缩不了解……任何4KiB或更低版本的文件将永远不会得到NTFS压缩,因为没有办法减小其大小至少为4KiB。
NTFS压缩需要64KiB的容量,然后对其进行压缩,如果可以减少一个群集(4KiB),则将其写入压缩状态,64KiB是16个4KiB块(连续)。
如果压缩结束时文件8KiB的最终结果超过4KiB,则它不会保存任何群集,因此将其写入未压缩状态,依此类推...压缩必须至少获得4KiB。
嗯,对于NTFS压缩,NTFS必须具有4KiB的群集大小。
尝试进行测试:在SSD的NTFS上使用128KiB群集,您将看到写入读取速度方面的巨大性能提升。
具有4KiB群集的SSD上的文件系统的速度降低了很多,大多数情况下损失了50%以上...看到那里有任何基准可以测试不同的块大小,从512Bytes到2MiB,大多数SSD写入速度是两倍在64KiB(或128KiB)群集大小上的速度要比在4KiB上快。
想要对您的SSD产生真正的影响吗?不要在文件系统上使用4KiB群集,而应使用128KiB。
如果超过99%的文件小于128KiB,则仅使用4KiB群集。
等等,等等...测试,测试和测试您自己的案例。
注意:在安装带有128KiB群集的Windows或从另一个Windows时,在控制台模式下使用diskpart创建系统NTFS分区,但不要在安装程序图形部分上让Windows格式化(它将始终格式化为4KiB群集NTFS)。
我的所有Windows现在都安装在> 400GiB SSD(SLC)上的128KiB群集NTFS分区上。
希望事情会变得清楚起来,M $并不是在说我如何写压缩的NTFS,我的测试告诉我它写了两次(未压缩的是64KiB,然后是<= 60KiB),而不是一次(请注意在SSD上)。
当心:Windows会尝试NTFS压缩一些内部目录,无论您是否说不进行NTFS压缩,这都是避免NFTS群集大小不同于4KiB的唯一避免这种情况的唯一方法,因为NTFS压缩仅适用于4KiB群集大小的NTFS分区