17

My SSD is running out of disk space, and I see that "Compress your OS drive" is suggested as a means to save some disk space.

disk cleanup

My questions:

  1. I'm not sure whether there are any performance penalty associating with compressing the OS drive.
  2. And I'm not even sure whether this option is the same with "Compress this drive to save disk space" at the C drive property as per below. This option does seem to come with performance penalty.

disk properties

Edit:

My PC information:

  1. Windows 10
  2. 12GB RAM
  3. 4 Cores with Intel i7
  • 1
    Is this on an 8-16 core monster desktop, or a single core atom netbook? I'm pretty sure there'll be some performance penalty, not sure if it'll be noticeable or not. This article from 2011 might be interesting & mentions "With information being compressed on the fly, you're consuming more of an SSD's available write cycles than if you were writing the files uncompressed. This could have negative implications on the drive's endurance" but it's not obvious why. And I thought I read SSD's might do their own compression? – Xen2050 Feb 16 '19 at 5:56
  • 1
    @Xen2050, it's a 4 core system – Graviton Feb 16 '19 at 6:50
  • 3
    @Xen2050 that's about NTFS compression for general purpose files that can be read and write constantly, not CompactOS which compresses read-only system files, so no write-amplification is involved and write cycle doesn't further change. And worrying about drive wear nowadays is pretty much nonsense, because wear-leveling algorithms are increasingly good, and the total data write is enough for at least 4-8 years even if you write hundreds of GBs a day, that's why modern SSDs have 5-year warranties. I have an old workstation from 2009 or 2012 and its SSD just passed half its life – phuclv Feb 16 '19 at 14:46
23

The two compress options aren't the same, but more on that later. The first thing to note is that compressing data is not the best solution when the drive is full. NTFS will suffer badly from lack of space, because there are no more good places to allocate new files or move old files around and fragmentation will increase. Especially when it begins to use the reserved space for the MFT then the MFT might become fragmented and worse things may happen

So at first some other things need to be done

Just doing the first 2 steps above saves you tons of space immediately. Then after doing everything if more space is still needed then just compact the OS. By deleting files first you also make it faster to compact the OS. The performance difference is often negligible

The CompactOS feature does indeed worth it on small SSDs compared to HDDs. My old laptop has a 1TB HDD with a 32GB SSD cache. I've tried installing Windows onto the 32GB SSD and it ran noticeably smoother than on the HDD+cache


Regarding your questions:

I'm not sure whether there are any performance penalty associating with compressing the OS drive.

Compressing files always have a CPU time penalty. That doesn't mean that it'll be slow though, since on slow storage devices like HDDs that penalty might be far less than the wasted time on accessing/reading the data from HDD. That's why sometimes compressing easily-compressed data will make it faster to access. One example is that hibernation in newer Windows compresses data before writing to disk, which makes shutdown much faster because the CPU can compress faster than the drive can write

The difference may be less obvious on SSDs, but there's no way to know that for sure except benchmarking for your specific situation. Each use case is different, and not all disks are created equal. For example old SSDs may run at only ~200MB/s which is just about as fast as an HDD nowadays (but their obvious advantage is the fast access time), whereas newer algorithms like LZ4 (which is used in Linux's zram) can sustain ~3.9GB/s which is even faster than modern SSDs. See

There's often no need to worry, because Windows will do a benchmark while installing to assess whether CompactOS should be enabled or not. Although after installing apps and things that benchmark result may not be correct anymore and you may want to do a reassessment yourself

And I'm not even sure whether this option is the same with "Compress this drive to save disk space" at the C drive property as per below

Basically both use the compression feature of NTFS and can be configured by compact.exe, but there are many major differences

  • The "Compress your OS drive" (i.e. CompactOS) feature uses the newly introduced compression algorithms XPRESS* and LZX in Windows 10's NTFS. They're designed for efficient storage for "static" files that don't change much (like executables)

    OTOH the "Compress this drive to save disk space" feature uses LZNT1 algorithm and is designed for compressing frequently changed data files for optimum performance. That means it'll be faster but the compression ratio will not be as high. It's like checking the "Compress contents to save disk space" option for all files and folders on the drive

    Compress contents to save disk space

  • Files compacted by CompactOS will not be marked as compressed (either shown in blue or with double arrows) if that feature is enabled

  • CompactOS compresses selected system files, while NTFS whole-disk-compression compresses every file on the disk

In fact you can use the new algorithms for CompactOS for any user files, but you can't do on-the-fly editing on them, as they're designed for static read-only files like mentioned above. Writing to those files will uncompress them. For more information about that as you can read NTFS compressed folders: is it possible to tweak compression ratio?

The random on-the-fly write ability also makes the "Compress this drive to save disk space" even worse for your use case, because it increases fragmentation significantly. CompactOS compresses the whole file (AFAIK) like a *.cab or *.wim file so you'll get a contiguous file. OTOH NTFS transparent compression works by splitting the file to 16-cluster chunks and compress them separately. Each chunk will be a fragment after that, which makes your contiguous file now has tons of holes between the chunks.

You may think "why worry about that" but SSD's complete immunity to fragmentation is a myth! For fast operations and small metadata size modern file systems store files as extents which is a file's contiguous section on disk, so each fragment will be stored as a separate extent. Hence a file with 1000 fragments will consume more space in the MFT for the metadata compared to a 2-fragment one, and the CPU also needs more time to parse them to get the next block of data. As a result Windows defragmenter still does some mild defragmentation for SSD drives to optimize metadata usage

Further reading:

The link given by Xen2050 is also good. It shows that even with the drive compression feature the difference is not that much, and in some cases it'll be faster, as I mentioned above

-1

Not on Windows. NTFS compression will cause more problems than it solves. Upgrade your RAM instead.

Other operating systems have file systems with helpful compression.

  • 5
    Why would NTFS cause more problems? – MikeP Jun 5 '19 at 1:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.