Jump to content

urgent: Significant wipe speed improvement required


thoste

Recommended Posts

Due to my observations I  performed the following experiment (on 64bit Win7 with 16GB memory):

I have a huge dir tree with approx 100000 files between 10kb and 1MB each with a total size of approx 20GB

I added/included this dir  tree as additional folder to wipe.

When I perform a CCleaner run it takes around 7 hours (!) to clean all these files (remaining clean stuff is negligible)

Before cleaning it with CCleaner I made a copy of it.

As comparison benchmark I performed a wiping of this duplicate dirtree with other tools like WipeFile.

Surprisingly the WipeFIle requires only ~30 minutes for the same task.

That means CCleaner is significantly slower than other tools.

- CCLeaner uses "Secure file deletion Simple Overwrite (1 pass)

- WipeFile uses Random overwrite (1 time)

This  is disappointing

I suggest urgently to improve wipe speed in the next CCleaner release.

Thank you

Thomas

 

 

Link to comment
Share on other sites

  • Moderators
I’ve removed your link to a competitor product as this is an official Piriform forum: if anyone is interested they will be able to find it easily enough.
 
And whilst we’re talking about the competition, that product is only 291 kb. Oh for the days when CC was well under 1 mb, long gone now. CC has always done more than file deletion, but it is a bit of a porker now (es ist ein bisschen fett).
 
It all depends on the mechanics of the deletion. A folder with 100,000 entries is huge, with hundreds, if not thousands, of MFT records and many index clusters. For secure deletion CC must:
 
Open each file
Overwrite the data
Save the file
Rename the file
Delete the file
 
Every time a file is renamed its position in the huge list of files in the folder is altered. Files are stored in the folder in alphabetic sequence, and when the file is renamed (to a variant of ZZZ.ZZZ) the sequence must be shuffled up or down to accommodate this. If CC overwrites, renames and deletes the files in reverse alphabetic order (last file first) then only a few MFT records have to be rewritten every time a single file is deleted. If it processes the files in a different order, or a different manner, then there’s a huge amount of work to be done.
 
On the other hand finding the last file in a huge folder is onerous. Every entry for each file has to be read until the EOF is found. And if the last file is edited, renamed and deleted, is position lost so that the last file has to be sought from the start again? It would be easier to delete the first file first, but the renaming would be a nightmare for performance. Is this what is happening?
 
We can add to all this writing entries to the log journal, updating the MFT index clusters, altering the cluster and MFT bitmaps for every file deleted, and syncing the disk every few seconds. And things I haven’t thought of.
 
It’s a wonder really that the process ever finishes.
 
I don’t know what the opposing software does, but this list (apart from the editing and renaming) is what NTFS has to do to delete files from a folder, whatever software is used. Perhaps CC doesn’t use the most efficient way of securely deleting the files, and it is only exposed on folders with a very, very large number of files.
 
You could be better off if you normal deleted the folder and then ran a wipe free space.
 
The overwriting pattern doesn’t matter by the way, it’s all randomised before being written to the disk.
Link to comment
Share on other sites

  • Moderators

If the files are small it's been my experience that it will be extremely slow to secure delete them especially if attempting to remove allot of them. It could even take a long time to delete them normally for instance from the Recycle Bin without using any secure delete. That's possibly due to how slow random read+write speeds are on a spinning hard disk drive and then the accompanied MFT changes/updating as Augeas mentioned -- use CrystalDiskMark and look at 4Kib Q1T1 to see just how slow an HDD is in that regard with small files.

A faster solution depending upon the capacity of the hard disk is to delete the files normally (still going to take a good amount of time), and then run CCleaner's Wipe Free Space.

Link to comment
Share on other sites

  • 3 weeks later...

Ok, you are explaining why CCleaner is CURRENTLY so slow.

But that doesn't mean that CCleaner will be slow forever.

Other washer/eraser tools show that the task could perform MUCH faster.

Maybe CCleaner should implement:

- direct MFT/Cluster/NTFS access instead of using windows file opening DLLs

- use concurrent, bundled threads

- other possible tricks like grouping of  cluster wiping

So there is much room for CCleaner improvements.

Could you put this on your feature request/todo list?

I prefer to use only ONE tool instead of multiple.

Since CCleaner is good for many other tasks I am willing to elect it as my one-and-only utiltity.

But erasing performance is really a problem.

Thank you

Thomas

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.