How does Windows calculate the fragmentation percentage?
Solution 1:
It seems that:
Percent file fragmentation = Percent free space (after defragmentation) - Percent free space (before defragmentation)
In other words, the percent free space added by performing full defragmentation.
As you can see, 7 % = 31 % - 24 %:
C:\Windows\system32>defrag c: -w -v
Windows Disk Defragmenter
Copyright (c) 2006 Microsoft Corp.`
Defragmentation report for volume C:
Volume size = 74.53 GB
Cluster size = 4 KB
Used space = 55.96 GB
Free space = 18.57 GB
Percent free space = 24 %
File fragmentation
Percent file fragmentation = 7 %
Total movable files = 203,178
Average file size = 342 KB
Total fragmented files = 3,641
Total excess fragments = 32,280
Average fragments per file = 1.19
Total unmovable files = 26
Free space fragmentation
Free space = 18.57 GB
Total free space extent = 22,689
Average free space per extent = 858 KB
Largest free space extent = 4.09 GB
Folder fragmentation
Total folders = 40,150
Fragmented folders = 155
Excess folder fragments = 567
Master File Table (MFT) fragmentation
Total MFT size = 203 MB
MFT record count = 205,234
Percent MFT in use = 98
Total MFT fragments = 3
Note: On NTFS volumes, file fragments larger than 64MB are not included in the fragmentation statistics
Defragmentation report for volume C:
Volume size = 74.53 GB
Cluster size = 4 KB
Used space = 50.90 GB
Free space = 23.62 GB
Percent free space = 31 %
File fragmentation
Percent file fragmentation = 0 %
Total movable files = 203,178
Average file size = 342 KB
Total fragmented files = 3
Total excess fragments = 1,152
Average fragments per file = 1.00
Total unmovable files = 26
Free space fragmentation
Free space = 23.62 GB
Total free space extent = 10,109
Average free space per extent = 2 MB
Largest free space extent = 6.99 GB
Folder fragmentation
Total folders = 40,150
Fragmented folders = 1
Excess folder fragments = 0
Master File Table (MFT) fragmentation
Total MFT size = 203 MB
MFT record count = 205,234
Percent MFT in use = 98
Total MFT fragments = 3
Note: On NTFS volumes, file fragments larger than 64MB are not included in the fragmentation statistics
C:\Windows\system32>
On the other hand, when, after defragmenting a drive, the Percent free space does not change, nor the Percent file fragmentation does not change, even if the Total fragmented files number does change:
C:\Windows\system32>defrag d: -w -v -f
Windows Disk Defragmenter
Copyright (c) 2006 Microsoft Corp.
Defragmentation report for volume D:
Volume size = 932 GB
Cluster size = 4 KB
Used space = 841 GB
Free space = 90.89 GB
Percent free space = 9 %
File fragmentation
Percent file fragmentation = 2 %
Total movable files = 400,108
Average file size = 2 MB
Total fragmented files = 7,671
Total excess fragments = 1,420,753
Average fragments per file = 4.70
Total unmovable files = 7
Free space fragmentation
Free space = 90.89 GB
Total free space extent = 213,633
Average free space per extent = 446 KB
Largest free space extent = 27.46 GB
Folder fragmentation
Total folders = 16,189
Fragmented folders = 526
Excess folder fragments = 2,304
Master File Table (MFT) fragmentation
Total MFT size = 421 MB
MFT record count = 405,678
Percent MFT in use = 94
Total MFT fragments = 3
Note: On NTFS volumes, file fragments larger than 64MB are not included in the fragmentation statistics
Defragmentation report for volume D:
Volume size = 932 GB
Cluster size = 4 KB
Used space = 841 GB
Free space = 90.89 GB
Percent free space = 9 %
File fragmentation
Percent file fragmentation = 2 %
Total movable files = 400,108
Average file size = 2 MB
Total fragmented files = 353
Total excess fragments = 1,226,342
Average fragments per file = 4.19
Total unmovable files = 7
Free space fragmentation
Free space = 90.89 GB
Total free space extent = 260,094
Average free space per extent = 366 KB
Largest free space extent = 27.46 GB
Folder fragmentation
Total folders = 16,189
Fragmented folders = 1
Excess folder fragments = 0
Master File Table (MFT) fragmentation
Total MFT size = 421 MB
MFT record count = 405,678
Percent MFT in use = 94
Total MFT fragments = 3
Note: On NTFS volumes, file fragments larger than 64MB are not included in the fragmentation statistics
C:\Windows\system32>
Solution 2:
This calculation is hidden, the information is delivered by Win32_DefragAnalysis class:
The Win32_DefragAnalysis class represents fragmentation values on a volume. An instance of the Win32_DefragAnalysis class is passed as an out parameter from the Win32_Volume methods DefragAnalysis and Defrag.
class Win32_DefragAnalysis
{
uint64 AverageFileSize;
real64 AverageFragmentsPerFile;
real64 AverageFreeSpacePerExtent;
uint64 ClusterSize;
uint64 ExcessFolderFragments;
uint32 FilePercentFragmentation;
uint64 FragmentedFolders;
uint64 FreeSpace;
uint32 FreeSpacePercent;
uint32 FreeSpacePercentFragmentation;
uint64 LargestFreeSpaceExtent;
uint32 MFTPercentInUse;
uint64 MFTRecordCount;
uint64 PageFileSize;
uint64 TotalExcessFragments;
uint64 TotalFiles;
uint64 TotalFolders;
uint64 TotalFragmentedFiles;
uint64 TotalFreeSpaceExtents;
uint64 TotalMFTFragments;
uint64 TotalPageFileFragments;
uint32 TotalPercentFragmentation;
uint64 TotalUnmoveableFiles;
uint64 UsedSpace;
string VolumeName;
uint64 VolumeSize;
};