6

I have a 2017 15" MacBook Pro with a built-in 1TB SSD.

As I understand, with SSDs, the best practice is to leave a portion of them free as an "over provision".

Do I need to do this with the built-in SSD in the MacBook Pro? or has Apple already accounted for this in giving me 1TB of space? e.g. There is actually something like 1.1TB of space, but the firmware keeps that additional 0.1TB free as an over provision.

2
  • 2
    +1 good question - something I want to know as well - that's why I started a bounty. 2 good answers below. Please choose one to accept, @sam. Jun 10, 2019 at 13:24
  • Also a further, third answer from @lx07 below that supplements/extends benwiggy's answer with some data examples and calculations: apple.stackexchange.com/a/362256/4018 But with all the answers here, I think there is sufficient information to answer the original question. Jun 13, 2019 at 11:11

3 Answers 3

2

If you're running Mojave or Catalina with an APFS partition, don't even worry about it.

It's always better to have an SSD with free space on it, but where you get into trouble is by writing constantly to a full drive.

Here's why: An SSD has a number of sectors that store data (generally 512 or 4096 bytes). Each sector can only be erased and written a certain number of times (typically 1,000-10,000). Depending on whether it's a NAND or a NOR-like technology, erasing a sector will clear it to all 0's or all 1's. "Writing" a sector of data means flipping some of the bits to the opposite value. You can't erase a sector, flip a bit, then flip it back to what it was...you have to erase the sector completely, then set the bits that should have the opposite value.

The OS tries to erase and write evenly across the device (wear-leveling). The more sectors it has to play with, the better.

macOS goes a step further with APFS by implementing static and dynamic wear leveling, coordinated with the hardware controller and T2 (see Wikipedia's article on wear leveling). The OS will actually move static data that hasn't changed around the disk so that you don't have a bunch of large, unchanged files sitting on nearly new (low write count) sectors while you churn the "free" area of the disk. This means that having a nearly full disk doesn't actually hurt longevity that much.

What you should NOT do is run a frequently changing database or a file that is constantly overwritten on your SSD. Those belong on HDD's (spinning rust drives).

The real reason why you shouldn't run your internal disk almost full is because many applications (and the OS) don't handle disk full situations well. It's okay to be close to full, but try to never hit "0 bytes available." macOS will warn you when the boot disk is getting close. Otherwise, don't worry about it too much!

For the full story, see Wikipedia's article on write amplificaton

Unfortunately this is one of those areas where, if you're on Windows, the story is completely different than if you're on macOS, so the general public's wisdom on the matter is sometimes quite harmful.

Example: Most anti-virus don't even have signatures for a single piece of Mac malware because Apple already includes XProtect Description of XProtect. It's free, built-in and, Apple updates it almost daily. Unless you're downloading binaries from Tor, pirated software or otherwise risky software, you are extremely unlikely to catch malware on your Mac. When Apple becomes aware of something, they update their signatures and it's generally stopped in its tracks. I only download apps from the App Store, SetApp or from source code I downloaded and built from major repositories. Running an anti-virus on your Mac just slows it down because 99.9% of the signatures are only for PC/Windows software...so, you're compromising performance and memory so that your neighbor running Windows won't catch anything from your Mac; it's highly unlikely that it'll catch malware that affects your Mac...most of them don't even try.

So, you did a good thing by posting this question. You should always ask "But is that advice good for Mac users too?" rather than paying attention to common wisdom that applies to PC's.

3
  • This doesn't seem to actually address the question.
    – lx07
    Jun 10, 2019 at 20:08
  • What about the case of BOOTCAMP - where Windows is also installed on the Mac, as in my case. At the moment, my conclusion would be to still continue to over provision, in that scenario, by about 10%. So For a 1Tb drive, 100Gb is unused space, not in any partition. Jun 12, 2019 at 9:58
  • If you’re using Boot Camp, yes, you should worry like an animal.i strongly suggest running Windows under Parallels, VMWare Fusion or VirtualBox (free) rather than Boot Camp, which by necessity disables many Mac features to allow complete access to the hardware. I’ve had several people say “My Mac crashed while in Windows and it corrupted my macOS partition too.” Keep Windows and Linux caged in a VM unless you’re gaming and need that last 1% of performance. Actually, gaming under ?Parallels is sometimes faster than Boot Camp. Jun 14, 2019 at 6:31
4

No.
Over-provisioning is transparent to the user, and done at the factory. SSDs normally have more size than can actually be used. Over-provisioning is not something that the user needs to do.

Having said that, SSDs still need to maintain spare space within the volume, in order to have some space to accommodate working files. Between 10 and 15% is usually recommended. Some say as much as 25%.

5
  • My personal recommendation, besides ensuring users having some sort of backup regime (e.g. Time Machine), is to regularly check that you have at least 15% free space on your boot volume. Once you hit that, time to delete and/or transfer files.
    – Monomeeth
    Jun 7, 2019 at 23:42
  • The Seagate article is a good explanation.Essentially they are saying that the difference in size between Gibi and Giga byte units of storage measurement is used to provide about 7% of extra space not available to the host, but only to the controller. Would this technique be industry-wide or specific to Seagate though? Especially given that Apple tend to use Samsung for flash and I'm not aware they use Seagate. Jun 12, 2019 at 9:56
  • Also, what about the case of BOOTCAMP - where Windows is also installed on the Mac, as in my case. At the moment, my conclusion would be to still continue to over provision, in that scenario, by about 10%. So For a 1Tb drive, 100Gb is unused space, not in any partition. Jun 12, 2019 at 9:58
  • 2
    @therobyouknow Users cannot over-provision. There is some space on the SSD reserved by the manufacturer. Just use all the space that is available to you! You're massively over-thinking this.
    – benwiggy
    Jun 12, 2019 at 13:09
  • +1 Thank you @benwiggy. I support your view and that I might be over-thinking about over-provisioning. I should add a link from Samsung that says that over-provisioning can be achieved by non-allocated space (outside of any partition): samsung.com/semiconductor/minisite/ssd/support/faqs-03/… Thanks for all your input! Jun 13, 2019 at 11:08
2
+100

As a slight addendum to the answer of @benwiggy it seems that Apple/Samsung reserve slightly more than 7.37% mentioned in their Seagate link - at least on my drive it is 9.5%.

I have a SM0256F SSD which is reported by Apple as 251GB (not 256GB which would give 7.37%)

System Information

GPT fdisk shows capacity is 233.8 GiB which is the same as 251 GB.

Command (? for help): p
Disk /dev/disk0: 490234752 sectors, 233.8 GiB
Sector size (logical): 512 bytes
Disk identifier (GUID): D44A6F10-F09B-4FC9-89D4-E8FDE41C24CF
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 490234718

If you multiply 490234752 sectors * 512 bytes per sector = 251,000,193,024 bytes which is identical to System Information.

Over-provisioned percentage is Physical capacity - User capacity) / User capacity and 256 GiB is 2^38 = 274,877,906,944 bytes so my over-provisioned percentage is :

(274,877,906,944 - 251,000,193,024) / 251,000,193,024 = 9.51%

For a 1TiB drive reported as 1000GB (I don't know if it is) it would be

(2^40 - 1,000,000,000,000) / 1,000,000,000,000 = 9.95%

Incidentally Kingston recommend 7% - 28% depending on workload. I couldn't find a link for Apple or Samsung.

1
  • 1
    +1 upvote and award of the bounty for a) the hard data and calculations that you provide and b) that this data is from an Apple machine (which uses Samsung SSD, as many of their models do, if not all). Thank you! Jun 13, 2019 at 11:04

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .