Originally posted by Weasel
View Post
Announcement
Collapse
No announcement yet.
Microsoft Still Working To Squeeze More I/O Performance Out Of WSL / Bash For Windows
Collapse
X
-
- Likes 2
-
Originally posted by FishB8 View PostThey really need to find a fix for directory traversal as well. "/path/to/softlink-dir/../" goes to the parent of the directory that softlink-dir points to, rather than to the parent directory of the softlink-dir. Has to do with how underlying NTFS deals with directory junctions.
Comment
-
Originally posted by F.Ultra View Post
I doubt that context switching overhead would be so great that it could explain such a big performance penalty. I think that it's a combination of NTFS being just slow (I mean the internal structure of NTFS is way over engineered with multiple stream support and so forth) and that Windows kind of does something to keep the IO subsystem busy 24x7.
Now to be honest it was over 10 years since I saw a rack mounted Windows server, but back then when you walked into a server room at night when the servers where idling the activity leds for disk and network on the Linux and BSD servers where dark while the Windows machines light up like it was Christmas. If I'm not mistaken Windows have a tendency to prefer to put memory of running applications to swap as soon as possible which also would stress the IO subsystem more.
EDIT: Linux has an actual real scheduler, Windows does -not-. Linux prioritizes IO and guarantees that priority, Windows simply just allocates IO into time slices and then kinda like hands out those slices with a context switch in between ever single one of them. On top of them if the IO process isn't ready in time for the time slice then it issues wait cycles until it is, which is just a serial string of context switches, and that also means Windows can't guarantee IO priority... (It's why Linux has the concept of "niceness" which it guarantees and Windows doesn't, and also the reason why IO makes Windows feel unresponsive, and also the reason why you see these performance differences between native Linux and WSL)Last edited by duby229; 11 August 2018, 09:50 AM.
- Likes 2
Comment
-
Originally posted by ElectricPrism View Post
Yeah no shit, Windows is slow as fuck at I/O operations compared to Linux & their Download speeds are utter shit too vs Linux.
But since then Microsoft gave Windows TCP/IP window scaling and SACK support, and some pretty decent auto-tuning. I haven't seen any problems downloading. My Windows 10 machines get the full 180 Mbps off the cable modem and 980 Mbps off the LAN from my Linux file server.
And from friends of mine who work with Windows, I know that Windows supports some very slick high speed RDMA / SMB Direct file sharing interfaces. For Hyper-V machines that makes a network share perform close to local NVMe.
Comment
-
Originally posted by duby229 View Post
It's exactly context switching. Just profile an IO benchmark or any IO sensitive load you know of. There you will see the pipeline flushing and refilling repeatedly and meanwhile it'll be doing no real processing at all. I'm serious, you really should profile it.
EDIT: Linux has an actual real scheduler, Windows does -not-. Linux prioritizes IO and guarantees that priority, Windows simply just allocates IO into time slices and then kinda like hands out those slices with a context switch in between ever single one of them. On top of them if the IO process isn't ready in time for the time slice then it issues wait cycles until it is, which is just a serial string of context switches, and that also means Windows can't guarantee IO priority... (It's why Linux has the concept of "niceness" which it guarantees and Windows doesn't, and also the reason why IO makes Windows feel unresponsive, and also the reason why you see these performance differences between native Linux and WSL)
- Likes 1
Comment
Comment