Join the discussion
Write your take first — we'll ask for email only when you're ready to publish.
- Hacker News
- I had a job going to various store locations and running defragment on point of sale computers. It was incredibly zen.by Jemm
- Before enlightenment
Chop wood, defragment
After enlightenment
Chop wood, defragment
by andai - Pointless and harmful to flash storage. SSD sector numbers are virtual anyway. Its like defragging emails in your inbox.by rasz
- check my other comments with numbers, while small for a human being, I could see the variations benchmarking copper-rs.by gbin
- To visually inspect fragmentation of a partition on Linux, a tool exists since 15 years: https://github.com/i-rinat/fragview. Just in case.by kvemkon
- > I needed a reproducible storage layout while testing a high-throughput logger.
Of course just having a compressed filesystem image to restore for each test, or a collection of images to cover various cases instead of only optimising for ideal, would be more efficient…
But I love that this now exists instead!
by dspillett - Neat! I have several questions here. First of all, why does Linux not need defragmentation?
Second, is it actually true that it doesn't need it? The readme implies that this defragmenter (for Linux) produces actual benefits.
Third, it says the benefits exist even on NVMe, i.e. on SSDs? I thought defragging was relevant for spinny disks only?
Thanks
by andai - Mostly, they try to avoid it by allocating extents instead of blocks (so, they look for a contiguous space to store most files) and by delaying allocation to accommodate for a growing files.by vbernat
- Would be really cool to see two things.
First some kind of before and after benchmark, so you can actually see if defragging made a difference. Second is a recommendation for defragging based on things like the fragmentation, free space, and whether it’s an HDD or SSD.
Especially the second one feels useful since defragging doesn’t necessarily mean improvement to the system as you said yourself.
by dsemakin - This made me think of https://e4rat.sourceforge.net/, which moves boot files into sequential runs, which was helpful on spinning disks where seeks were slow but sequential reads were fast.
Just as an idea for a feature your defragmenter could have.
(Also this is a side thought; but I wonder if AWS AMIs and EBS volumes will boot faster if also organized sequentially.)
by jewel - > Also this is a side thought; but I wonder if AWS AMIs and EBS volumes will boot faster if also organized sequentially.
Probably a measurable, but small, difference. I would expect it's not worth the effort unless you're spending a lot of time booting, and even then, there's probably better things to work on in the boot process, such as reducing the amount of things that run or reducing the size of them.
by toast0 - This cool, but can we get an option to emulate HDD noises please? I really miss the whirrs, clicks and creaks. And the little LED that indicated disk activity... but that'd be a separate project.by d3Xt3r
- Be in a very quiet room and I can still hear my SSD.
I suspect the noise is caused by the power supply emitting a tiny bit of 'coil whine' when put under more load
- This is the most useless thing I've seen on here lately. It's not necessary on hard drives, as the page cache did a decent job of improving disk access even in the 90s, let alone with today's fast HDDs. And if you're on an SSD... it'll just burn that out faster.
I love it!
by bitwize - yeah, this will definitely shorten the lifetime of an nvme.
but check my other comments, it makes a difference, even on a slow nvme. Probably the overhead of the wasted small extent, and maybe prefetching?
by gbin - Page caches are nice, but you would see meaningful reduction in load times for the OS and applications by getting data in order on spinning disks. Especially games that used most of your ram and loaded reasonably large level files.
fat seemed particularly prone to spreading files into very small chunks across the disk surface; it's not so big of a deal when fragmented files are made up of large contiguous chunks.
by toast0 - Not to make everything about AI, but..
The current analogy I am using when vibe coding is it's like defragging a hard drive in terms of time wasted.
Years of sitting there as the bar crept closer to 99 in the vain hope I could turn the computer off and go to bed, just to have to sit there for another hour or so until finished.
So many late nights wasted doing, I'm not sure what.
And now I'm sat there waiting for the agent to come back..
Running for 17m.. "dealing with a complex response"..
Codex (GPT5.6) has me hooked on that loop moreso as it is, in practice, so much quicker than Claude (Opus or Fable), so I don't quite ever walk away.
Nostalgia.
by _puk - poetic :)by newtwentysix
- What actually triggered me to do that was to be able to test repeatably my other open source project in rust were the compile target directory can go to hundreds of gigabytes of files and at the same time I need to benchmark it on large linear slabs we do create for memory mapped files and I definitely noted the impact. I can only guess but non-optimal extent length create a repeated round trip to the metadata in main memory instead of "linear reads" (as consecutive logical numbers) + maybe the fact that those SSD are probably super smart and prefetch the next sectors? (see the jitter numbers I get even on a slow device in other comments)by gbin
- I like the graphical interface and the movement of the blocks. Brings back memories of defragmenting hard drives once a month and seeing noticeable performance improvements sometimes.
> Fragmentation and extent allocation were adding measurable variance, even on NVMe,
Why exactly would there be a measurable variance on NVMe? I understand there could be some impact on magnetic hard drives. This sounds like some sort of coincidence due to other factors and that this defragmentation won’t achieve much (except for wearing out your SSD even faster in certain cases).
by AnonHP - >defragmentation won’t achieve much
Indeed, most Linux setups supporting trim, already defer these operations to a weekly schedule to reduce wear, and most fs will optimize in 10MB or 25MB chunks given unlike HDD... the SSD seeks are nearly constant time. Logging fs like f2fs, are content aware so will auto re-locate hot and cold (rarely modified) file types, and despite the log-structure... on an SSD performance losses are often surprisingly negligible.
Most modern NVMe with dram cache and SLC buffer areas also defer committing pages to low-endurance flash areas. And most kernel tweakers will set swapiness to 1 on SSD/NVMe machines to try to keep stuff buffered in dram as long as reasonably possible. It is a space-time tradeoff that can boost a desktop machine performance especially with preload daemon active.
If people want ludicrous speed... than just run ext4 with a separate 128GB journal NVMe drive on a split PCIe x4 bus.
Defrag on most modern drives usually just fills these buffer areas full, and things grind to the slowest i/o choke point. =3
by Joel_Mckay - SSD still have slower reads when the data isn't sequential. Not slow enough to matter, especially with extents meaning the data is probably in a handful of locations, not 10000, but it's absolutely measurable if your blocks are small enough (<1MB typically, though disk benchmarks usually use 64KB random reads and sometimes 4KB).by gertop
- Yes: I discovered that tested performance on copper-rs a high performance OS for robotics when I run it on ext4 and what is annoying in robotics is the max latency & jitter. Especially that we allocate large slabs so this is not helping at all.
(fragmented relative to baseline) bandwidth: 100.65 -> 94.74 MiB/s (-5.86%) elapsed time: 339.550 -> 360.699 s (+6.23%) mean latency: 9935.7 -> 10554.6 us (+6.23%) p50 latency: 6715.2 -> 6838.9 us (+1.84%) p95 latency: 19394.4 -> 20599.9 us (+6.22%) p99 latency: 131498.2 -> 131988.3 us (+0.37%) max latency: 183713.2 -> 624392.9 us (+239.87%) jitter stddev: 17823.1 -> 19806.0 us (+11.13%) jitter CV: 179.38 -> 187.65% (+4.61%)
Also check your nvme granularity with fstrim -D if you are on 4KB your nvme is so fine grain that it doesn't matter much but if it is 64KB like my main one. Ouch, those small files in the middle of the 64KB won't magically go away.
by gbin - Beautiful.
Defragmenting my drives manually is one of those things like closing apps on my phone I am not using. Everyone says there is no need to do it. It might even be slightly worse overall. I even have enough self control to avoid doing it and have for years...
But deep down in my heart, I truly FEEL like if I did it would improve things... somehow.
by blobdole - Except for some backups, all of my machines use solid state storage so I don't think there is a point for most people, is there?by socalgal2
- If it makes it feel faster, it makes it feel faster.
It's like those copper bangles with magnets that people swear makes their joints less creaky.
My example is a daith piercing, that's when you pierce a ring through a fold of cartilage in a certain spot inside your ear. It's supposed to stop you getting migraines, but there's no sensible mechanism for this to work. It's all woo and bunkum, apparently.
But I've had four migraines in eight years as opposed to four every month.
So, if it feels faster, it might well be.
- only HDD drives I use are in a ZFS pool which has a very usable fragmentation value from zpool.by doublepg23
- I discovered that tested performance on copper-rs a high performance OS for robotics when I run it on ext4 and what is annoying in robotics is the max latency & jitter. Especially that we allocate large slabs in copper so this is not helping at all.
This is on a slow device but it might be worse on a fast one as the extra allocation of small extents start to hit harder on the host side:
(fragmented relative to baseline) bandwidth: 100.65 -> 94.74 MiB/s (-5.86%) elapsed time: 339.550 -> 360.699 s (+6.23%) mean latency: 9935.7 -> 10554.6 us (+6.23%) p50 latency: 6715.2 -> 6838.9 us (+1.84%) p95 latency: 19394.4 -> 20599.9 us (+6.22%) p99 latency: 131498.2 -> 131988.3 us (+0.37%) max latency: 183713.2 -> 624392.9 us (+239.87%) jitter stddev: 17823.1 -> 19806.0 us (+11.13%) jitter CV: 179.38 -> 187.65% (+4.61%)
Also check your nvme granularity with fstrim -D if you are on 4KB your nvme is so fine grain that it doesn't matter much but if it is 64KB like my main one. Ouch, those small files in the middle of the 64KB won't magically go away.
by gbin - I feel so seen right now. My partner complains about me closing apps on my phone consistently. I also have to hold myself back from defragging and continually cleaning up my storage drives.
I too am nearly certain that the positive benefits are approaching nil, but I still feel it should be helpful.