WSL 2 is getting faster Windows file system access
86 points
8 hours ago
| 19 comments
| boxofcables.dev
| HN
avaer
3 hours ago
[-]
Proton, Copilot, and literally this single issue are what pushed people to Linux. If I were in charge there would be a team devoted to fixing this a decade ago.

WSL singlehandedly stemmed much of tide of developers moving away from Windows, but WSL native filesystem performance gave devs that magical experience when they boot into Linux the first time and see that the filesystem doesn't have to be ass. There's always been hacks around this, but for many devs the easiest hack was to ditch Windows.

They should have moved heaven to fix this on day one, there's really no engineering excuse. Linux is open source.

reply
keithnz
25 minutes ago
[-]
Just a comment on Proton... I've recently shifted to linux (garuda ) as a native OS for gaming (still dual booting, but linux is my main OS now, I used to run linux VMs in windows). My experience with Proton is that only ~30% of my games work out of the box. Some games like dota2, and factorio are native linux and work MUCH better (faster/higher fps) in linux. A bunch of windows games work fine, other's semi work, and I have to spend a bunch of time investigating why I'm getting the issues I'm getting. Others just aren't really supported (it seems anti cheat software is a big blocker) or I just can figure out what is going wrong quick enough that I just abandon it. Overall, everything seems better in linux world, everything is really snappy. I'm hoping more game companies treat linux as a first class citizen as more people switch. It is definitely a great platform for gaming but really just needs game creators to ensure their games work, ideally native, but even just using Proton would be good.
reply
jauntywundrkind
8 minutes ago
[-]
It's very very rare for me that games don't work. It's almost all competitive games, where the game specifically does not allow anti-cheat.

There's very little fiddling around or configuring. 30% sounds god awful terrible; my success rate definitely >85%. In the rare case something doesn't work right away, https://www.protondb.com/ usually has advice in the top or second comment that works great.

I don't really think the windows vs Linux native debate is worth pursuing. Windows games run better than they do on Windows 4 times out of 5, and that's more than good enough.

reply
skissane
46 minutes ago
[-]
> Proton, Copilot, and literally this single issue are what pushed people to Linux.

This isn't the only issue. I think another big issue is pushing more and more integration with Microsoft cloud services (e.g. Microsoft accounts), advertising, etc, which Microsoft has made increasingly difficult to opt-out of. They could fix every single technical limitation anyone has ever complained about, but if they don't change their corporate culture on forced cloud/advertising/etc, many won't care about those fixes.

reply
overgard
32 minutes ago
[-]
Yeah, my switch to Linux and Mac for most things is more about just finding Microsoft's policies so obnoxious and hostile that I just won't deal with them anymore, even if I have to deal with more technological hassles. The only reason I haven't completely nuked my Windows partition is because I can at least use Rufus to turn off the worst stuff. But frankly, the amount of software that keeps me on Windows is dwindling fast, and every time Windows update resets my browser to fucking Edge or signs me into a Microsoft account system wide without my consent I just get that much closer. It feels like malware at this point.
reply
evanjrowley
3 hours ago
[-]
Perhaps you meant Pluton and not Proton? https://news.ycombinator.com/item?id=25191319
reply
oofbaroomf
3 hours ago
[-]
Proton is a tool Valve made, based on Wine, to easily run Windows games, on Linux [0]. GP meant Proton.

[0]: https://github.com/valvesoftware/proton

reply
phowat
3 hours ago
[-]
Tangentially , I was a heavy used of wsl and moved to linux a few months ago and LLMs made most of the downsides of using linux as a desktop go away for me. I chatted with claude about the migration to find the best distro, decided on Fedora. After the install I asked everything I wanted to configured and got straight answers. In 3 or 4 hours I had an even more comfortable experience than I had on windows. AI made the annoying parts of trying to figure out how to edit all the config files to have linux behave the way you want very easy. I also had claude code write a bunch of scripts that I could have done but would probably never bring myself to actually do it . WHen you have a coding agent readily available , having an open source desktop environment makes a lot more sense. I encourage everyone to try it.
reply
markstock
1 hour ago
[-]
On the other side, I am a lifelong Linux user, and even with advanced LLMs, trying to get Microsoft Windows to behave sanely takes hours every month for years on end (thanks, day job). Things Linux figured out in 2003 are still magic or completely undoable on Windows.
reply
ragequittah
2 hours ago
[-]
I also did this as well as learned pfSense then OPNSense when pfSense went bad. Also made a pretty complicated XCP-ng setup. Learned all this with the ancient ChatGPT 3.5-4.0 models.

I can hear a subset of people cringe saying "but LLMs are BS machines and you aren't learning anything!" I heartily disagree on both fronts. The main thing holding users like me back from linux was always the snarky RTFM community and the fact that everything has 25 different answers (depending on distro, window manager, and many other factors). LLMs take care of all this friction for you very nicely.

reply
hgoel
3 hours ago
[-]
I did this too, made switching my desktop to Linux so much smoother. I have a Windows laptop for my Windows needs and most of my gaming is fine on the Steam Deck, so I realized I didn't need to always boot into Windows only to use WSL.
reply
CamperBob2
1 hour ago
[-]
This. It is hard to exaggerate how easy Claude Code (or, I'm sure, any number of other harnesses of choice) makes it to migrate to a new operating system.

It is truly a Star Trek-level experience. Nobody who doesn't want to run Windows (and who isn't forced to run it) needs to run Windows anymore.

reply
kenz0r
2 hours ago
[-]
What killed WSL for me was the incredibly janky way I had to share USB peripherals. usb-ipd works 80% of the time, all the time.
reply
anamax
1 hour ago
[-]
I switched from WSL (reconn'd to WSL1) to WSL2 because I thought that WSL1 would be abandoned.

However, the shell for WSL2 runs in a window that grabs things, such as ^V.

So, ssh from WSL2 (to AWS for example) is awkward. For exampl, Emacs on the AWS box is almost unusable.

reply
thot_experiment
41 minutes ago
[-]
Nice, FWIW this is currently pretty easy to solve by just keeping your stuff on a separate EXT4 volume and then mounting that under Windows. Windows accessing a mounted EXT4 volume through WSL is much faster than the other way around.
reply
thesis
3 hours ago
[-]
Moved to mac about 7 years ago because of horrible WSL file system speed was.
reply
nozzlegear
3 hours ago
[-]
Same here, though I went to Linux first for several years. WSL file speeds, especially when running npm install, were the impetus that ultimately got me to switch off of Windows.
reply
weird-eye-issue
3 hours ago
[-]
Sounds like you were just doing it wrong

Either you run npm install from Windows if you are operating on the Windows file system or you run it on WSL if you are operating on the WSL file system both cases will be very fast

reply
lelandbatey
2 hours ago
[-]
Or, as they said, they didn't want to have to think about it so they chose to switch.
reply
hparadiz
3 hours ago
[-]
The entire Windows operating system is doing it wrong. Seriously who daily drives windows these days. lol.
reply
weird-eye-issue
3 hours ago
[-]
Well before Windows I spent years with both Linux and Mac and I found Windows to be a good mix of stability and suitability for development now that WSL is a thing. Also for gaming it's the best by a long shot so just all around I've found it to be best and WSL made me never miss Linux.
reply
hparadiz
3 hours ago
[-]
Nah my frames on Linux beat yours easily.
reply
weird-eye-issue
3 hours ago
[-]
Unlikely due to the better and more stable NVIDIA drivers available to Windows and the greater compatibility with every game without having to mess around with configuration files or other hacks. But you do you.
reply
hparadiz
3 hours ago
[-]
Linux drivers are now first class and are faster and easier to install than any Windows drivers. There's no bullshit extras with them. They just work. Plus steam launches games in containers so there's zero configuration. If you don't know what you're talking about it is in fact better to say nothing than to just make shit up.
reply
weird-eye-issue
2 hours ago
[-]
It's great that gaming on Linux has gotten a lot better over the last several years but let's not pretend like Windows still isn't far ahead on this

Also how can drivers be easier to install than on Windows when updating my GPU driver is one click?

reply
thewebguyd
12 minutes ago
[-]
It's easier than windows (generally) because it'll just update with your OS. It's in the repo (sometimes) or a third party repo. It's automatic.
reply
hparadiz
2 hours ago
[-]
Here's a pre-configured Fedora based distro that is zero clicks. You sign into Steam and go. Drivers are preinstalled. You literally sign into steam and hit play.

https://nobaraproject.org/

reply
cyberax
40 minutes ago
[-]
What? You need to _download_ drivers? They come pre-installed in modern distros.
reply
weird-eye-issue
27 minutes ago
[-]
I'm obviously referring to upgrading drivers. Important especially when playing new games since they come with specific optimizations.
reply
lmm
2 hours ago
[-]
> better and more stable NVIDIA drivers available to Windows

Huh? It's the same driver. It works the same on every platform. There's no consistent difference in performance (at least not between FreeBSD and Windows, it's been a while since I ran Linux).

reply
flaunf221
3 hours ago
[-]
I do and I have no problems. Feel free to ask me anything.
reply
thewebguyd
1 hour ago
[-]
Oh, you know, about 70+% of the global desktop/laptop market. Nearly every F500 company.

But yeah sure, no one runs windows these days.

reply
markstock
1 hour ago
[-]
Because Windows is the operating system of Not Getting Fired. Fear is a stronger motivator than creativity or productivity.
reply
thewebguyd
19 minutes ago
[-]
Believe it or not, there's plenty of people that specifically choose windows, not just out of fear of getting fired or inertia. The idea that all devs use a mac and that windows is garbage for any kind of development is purely a silicon valley bubble thing.

And there's still a big niche that Windows is your only choice since the move to Apple silicon. If you need both a dGPU and access to commercial software, its literally your only choice. Game dev especially comes to mind if you're jumping between maya, after effects, etc. Windows is also huge in finance.

reply
weird-eye-issue
3 hours ago
[-]
You could just move your files to the WSL file system
reply
hparadiz
3 hours ago
[-]
That kind of defeats the entire purpose of them being accessible from the rest of the system.
reply
weird-eye-issue
3 hours ago
[-]
You can access them from the rest of the system. For normal usage the performance is completely acceptable but for development tasks it matters.
reply
markstock
1 hour ago
[-]
People who run WSL are not normal users. The filesystem problems make Windows+WSL feel like a Trabant when you're used to a Porsche.
reply
hparadiz
3 hours ago
[-]
> Just copy it into the WSL file system

Yea bro totally. Totally. I'm gonna copy 2TB of media into the WSL virtual disk just so ffmpeg can run a little faster but still way slower than simply running linux.

(I beta tested the shit out of WSL1 and 2) before I wised up and just installed Gentoo forever.

reply
weird-eye-issue
3 hours ago
[-]
You can run that directly on Windows.

But either way yeah most people aren't dealing with large media libraries that's obviously a little more difficult. But if you are primarily operating on them with WSL then you would just keep them in the WSL file system and you could access them from Windows whenever you need to...

reply
benatkin
1 hour ago
[-]
Indeed. I have my agent edited files in podman in Lima, under two layers, and it's fine, because I do most stuff within my podman VMs. (I have shared volumes so I can review things before pushing the changes to my forge in separate containers that the agent can't access. When I need stuff on my mac, which is the exception, not the rule, I just copy them, putting them in a tar or zip if it's a lot of files.
reply
chris_money202
4 hours ago
[-]
They are undoubtly doing this because so many users operate out of /mnt/c with zero clue of that implication.
reply
alberth
3 hours ago
[-]
Would you mind elaborating (for those of us uninformed)
reply
omcnoe
2 hours ago
[-]
/mnt/c is a mounted C: drive in WSL2, that allows WSL2 guests to read/write files on the Windows host.

The mount is fine and speedy enough, but the underlying reads/writes turn into native NTFS reads/writes through Windows. NTFS file API is incredibly slow - high fixed overhead for initial file access.

So patterns like node_modules with many small individual files (or compiling code in general) are much much slower on Windows or WSL2 /mnt/c due to the fixed overhead adding up over a large number of files.

It's a ridiculous problem that has plagued Windows for years.

reply
0x1d7
46 minutes ago
[-]
It's the file system filters that are an issue on Windows. It trades performance for extensibility.

NTFS itself is a fast file system.

reply
weird-eye-issue
3 hours ago
[-]
One example is that if you have a node modules folder on Windows and you try to delete it from WSL it can take 10 plus minutes whereas if you deleted it directly in Windows it would have just taken a few seconds

Also if you try running Next js from files on Windows from WSL it takes minutes for each page to compile to the point that any local development is impossible so you would have to either run the Next JS server on Windows or move the files to WSL

reply
yakz
3 hours ago
[-]
It's difficult to overstate how horrible the performance is.
reply
tonymet
3 hours ago
[-]
WSL2 is a VM based on a Windows virtual disk file (VHD). inside that VHD IO is quite fast , a couple degrees worse than native. /mnt/c is how you access your windows files, but it's slow like NFS (socket based). anything needing high IOPS will be dog slow e.g. compiles, file scanning, etc.

the rule of thumb without the newest features is to copy work to/from /mnt/c into $HOME as needed.

reply
avadodin
4 hours ago
[-]
If it is as good of an improvement as the first major update, it will be hard to tell from native.

Hopefully, they will just push it out to everyone asap. We make heavy use of symlinks into Windows drives.

reply
zaptheimpaler
3 hours ago
[-]
I was trying WSL years ago and this is one of the reasons I just moved to a full linux server instead. We still have way too many problems interfacing across filesystems. I hope with AI we will see an iteration on ExFAT that has all the journalling, versioning etc. magic of modern FS' and can be adopted across all 3 OSes. Probably a long shot but I can dream :)
reply
cmovq
2 hours ago
[-]
I had no idea they used the Plan 9 file server for accessing files in WSL. I wonder what the original reasoning for choosing 9P was.
reply
bitwize
1 hour ago
[-]
9P is in the kernel and provides a simple, fast networked VFS without many of the drawbacks of NFS. In particular, 9P-over-virtio is already used in Linux virtualization environments to expose parts of the host file systems to the guest. Since this solution was widely adopted and lying around, Microsoft's WSL2 solution also used 9P-over-virtio to expose the Windows file system to the guest Linux.
reply
themeiguoren
5 hours ago
[-]
I can’t find any benchmarks on this, anyone have a sense of the speedup that can be expected here?

And for what it’s worth, that version isn’t available yet when I try to update WSL.

reply
tonymet
2 hours ago
[-]
more or less this is what I ran to benchmark

https://gist.github.com/tonymet/ec7fc4af0eb11c9d5af22c76d056...

reply
tonymet
2 hours ago
[-]
wsl version 2.7.7 seemed to work with the listed config + reboot
reply
tonymet
2 hours ago
[-]
a test compile of hugo (moderate go app) on a AMD Ryzen 7 7735HS with SSD

WSL filesystem = 50s

virtiofs = 75s

it seems a lot faster. I don't use drvfs (windows files) usually. 50% performance gap is good.

And MS Defender kicked in beforehand losing about 10 seconds. with some config you could turn off defender and get this down to 60s

reply
cheema33
54 minutes ago
[-]
> WSL filesystem = 50s > virtiofs = 75s

> 50% performance gap is good.

I am somewhat confused by this. How much time did the default DrvFs take? Or did you mean DrvFs when wrote virtiofs?

reply
asveikau
1 hour ago
[-]
I was always disappointed with the design of wsl2. The wsl1 design of a syscall layer atop NT had greater architectural purity. They way I heard it, they introduced a virtual machine into the design specifically in order to bypass poor NT filesystem performance. I'm sure it's easier said than done, but it would have been nice if they instead fixed the issues on the NT side, rather than side step them with a VM.
reply
sanp
3 hours ago
[-]
Hasn’t this always been the case? I have always run builds under WSL2 in Windows because of this.
reply
tonymet
2 hours ago
[-]
when you mount "drvfs" (the automounting feature, or you can call mount -t drvfs) , it's usually plan9, which is like NFS.

with the new wsl version, kernel and config from that blog, it will mount virtiofs, or warn you

reply
psyclobe
1 hour ago
[-]
WSL1 was really really fast! It was quite unique system too totally customized for the Linux kernel and windows interfacing!

Was really disappointed when WSL2 came along and just virtualized everything; fs performance took a shit.

Anyway I don't care about windows these days, all Linux all the time.

reply
agentultra
2 hours ago
[-]
Do the audio buffers to the host device next!
reply
mattkevan
3 hours ago
[-]
Where are we on the embrace/extend/extinguish curve right about now?
reply
protocolture
3 hours ago
[-]
Microsoft is almost done extinguishing Windows.
reply
tonymet
3 hours ago
[-]
counterpoint: WSL is great. I like it. I enjoy & prefer Windows desktop & Linux terminal. very happy.
reply
phendrenad2
3 hours ago
[-]
Hopefully they're heading towards a "boot to Linux" mode.
reply
bitwize
1 hour ago
[-]
Are you sure you want to:

( ) Shut down the computer?

( ) Restart the computer?

(*) Restart the computer in Linux mode?

( ) Close all programs and log on as a different user?

reply
ernsheong
1 hour ago
[-]
why don't they just switch completely to Unix, lol
reply