Wednesday, 7 August 2019

Why does my Windows 7 PC / SSD drive keep freezing?


I have a ~1 yr old PC with a primary SSD hard drive. I notice quite often that the PC will freeze for 30secs to several minutes, displaying the "Spinning blue wheel" mouse icon during this period. It then releases and returns to normal.


When I look at the Resource Monitor during this period, I notice that the disk activity is always at "100% Highest Active Time" solidly for this period. But the actual amount of disk activity doesn't look that high to me (<1Mb per second). Memory and CPU are never remotely stressed.


Usually the anti-virus software (Kaspersky anti-virus 11.0.0.232) is the most active user of disk activity, but that doesn't seem so unusual to me. I'm typically not stressing my PC too much during these periods, just a bit of light web surfing etc.


My guess is that it is a problem with the drive, but I'm not sure what to do next (other than buy a new one).


Any ideas?


thanks,



Answer



You are likely saddled with an SSD that uses the infamous JMicron JMF602 controller. The fact that it is both a SATA and a USB device is a hint, since the JMF602 is one of the few controllers with USB support build in.


The problem stems form the fact that a SSD controller can't over write data on flash memory and how your specific controller deals with it. Since the SSD controller can't over write data on flash it has to delete the old data first. But another limitation of flash is that the SSD controller can't delete a single page of data at a time, but has to delete a whole block (usually around a couple of megabytes) at a time. In order to avoid this the SSD controller rather writes the new data to a new block and marks the old data as invalid. It then does garbage collection, which is basically deleting blocks full of invalid data.


The specific issue you experience is when there are no new empty blocks to write data to when you want to write some data to the SSD. All blocks are filled with valid and invalid data. The SSD controller then has to go through garbage collection on a block in use. What it does is read all the data of a block into a cache. Delete invalid data in the cache. Delete the whole block of data in the flash. Then write the new data you are writing and the data from the cache to the now clean block. If a bunch of these happen at the same time the controller gets swamped and basically stops responding until it can clear up the backlog.


All this happens inside the SSD itself and is completely hidden from the OS. This is why non of the traditional troubleshooting techniques can find it. If all the blocks on the SSD have data on them it only takes a tiny write to force the SSD to go through the whole read/delete/write dance, so this is why you didn't see any big writes going on. Modern SSDs do not have the same problem. They have many techniques built in to avoid it, like fancy pro-active garbage collection, RAM caches and over-provisioning. They can suffer a drop in write speed, but not enough to cause the system to freeze.


The bad news is that there isn't anything you can do to fix it beyond upgrading to a good SSD. It is a design flaw in the SSD itself. You can try to minimize the amount of writes to the SSD. That would make the stuttering more rare, but not fix it entirely.


The surprising part is that in a PC only 1 year old you have one of these JMF602 based SSDs. They stopped making and selling them years ago.


No comments:

Post a Comment

How can I VLOOKUP in multiple Excel documents?

I am trying to VLOOKUP reference data with around 400 seperate Excel files. Is it possible to do this in a quick way rather than doing it m...