<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linux on kenji.blog</title><link>http://kenji.blog/en/tags/linux/</link><description>Recent content in Linux on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>kenjinote</copyright><lastBuildDate>Sun, 13 Sep 2026 07:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/en/tags/linux/index.xml" rel="self" type="application/rss+xml"/><item><title>Hyper-V vs WSL2: Comparing Virtualization Technologies on Windows</title><link>http://kenji.blog/en/p/hyper-v-vs-wsl2-windows-virtualization/</link><pubDate>Sun, 13 Sep 2026 07:00:00 +0900</pubDate><guid>http://kenji.blog/en/p/hyper-v-vs-wsl2-windows-virtualization/</guid><description>&lt;img src="http://kenji.blog/p/hyper-v-vs-wsl2-windows-virtualization/img/eyecatch.jpg" alt="Featured image of post Hyper-V vs WSL2: Comparing Virtualization Technologies on Windows" />&lt;h2 id="1-introduction-the-evolution-of-virtualization-on-windows">1. Introduction: The Evolution of Virtualization on Windows
&lt;/h2>&lt;p>Virtualization technology on the Windows platform has evolved dramatically over the past few decades. In the past, third-party Type 2 hypervisors (such as VMware Workstation and VirtualBox) were the mainstream. However, since Microsoft introduced &amp;ldquo;Hyper-V&amp;rdquo; in Windows Server 2008, Type 1 hypervisors have also been integrated into desktop OSs like Windows 10/11.&lt;/p>
&lt;p>In recent years, the technology that has garnered the most attention among developers is &amp;ldquo;WSL2 (Windows Subsystem for Linux 2)&amp;rdquo;. While WSL1 relied on system call translation, WSL2 employs a &amp;ldquo;Lightweight Utility VM&amp;rdquo; based on Hyper-V technology, achieving full Linux compatibility and a dramatic leap in performance.&lt;/p>
&lt;p>In this article, we will thoroughly compare and explain the architecture, performance (CPU, memory, disk I/O), network configuration, and optimal use cases of these two powerful virtualization technologies—the full-featured &amp;ldquo;Hyper-V&amp;rdquo; and the developer-experience-focused &amp;ldquo;WSL2&amp;rdquo;—along with deep technical details.&lt;/p>
&lt;hr>
&lt;h2 id="2-basic-theory-of-hypervisors-and-architecture-comparison">2. Basic Theory of Hypervisors and Architecture Comparison
&lt;/h2>&lt;p>To understand virtualization technologies, classifying hypervisor (Virtual Machine Monitor: VMM) types is essential.&lt;/p>
&lt;h3 id="21-differences-between-type-1-and-type-2-hypervisors">2.1. Differences between Type 1 and Type 2 Hypervisors
&lt;/h3>&lt;p>A hypervisor is a software layer that abstracts hardware access, allowing multiple OSs (guest OSs) to run simultaneously on a single physical machine.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Type 1 (Bare-metal)&lt;/strong>: Runs directly on the hardware. There is no concept of a host OS (strictly speaking, a privileged management OS may exist), offering extremely low overhead, high performance, and high security. Examples: Hyper-V, VMware ESXi, Xen.&lt;/li>
&lt;li>&lt;strong>Type 2 (Hosted)&lt;/strong>: Runs as an application on a host OS (such as Windows or macOS). Since all hardware access goes through the host OS, the overhead is larger. Examples: VMware Workstation, Oracle VirtualBox.&lt;/li>
&lt;/ul>
&lt;p>Windows Hyper-V is a pure &lt;strong>Type 1 hypervisor&lt;/strong>. When Hyper-V is enabled, the Windows OS that the user normally operates actually starts running inside a special virtual machine called the &amp;ldquo;Root Partition&amp;rdquo;.&lt;/p>
&lt;h3 id="22-hyper-v-architecture-details">2.2. Hyper-V Architecture Details
&lt;/h3>&lt;p>The Hyper-V architecture adopts a microkernel design and is based on logical isolation units called Partitions.&lt;/p>
&lt;pre class="mermaid">
graph TD
A[&amp;#34;Hardware (CPU, RAM, Disk, NIC)&amp;#34;] --&amp;gt; B[&amp;#34;Windows Hypervisor (Ring -1)&amp;#34;]
B --&amp;gt; C[&amp;#34;Root Partition (Windows OS)&amp;#34;]
B --&amp;gt; D[&amp;#34;Child Partition 1 (Windows VM)&amp;#34;]
B --&amp;gt; E[&amp;#34;Child Partition 2 (Linux VM)&amp;#34;]
C --&amp;gt; F[&amp;#34;VMBus (Virtual Machine Bus)&amp;#34;]
D --&amp;gt; F
E --&amp;gt; F
C --&amp;gt; G[&amp;#34;VID (Virtualization Infrastructure Driver)&amp;#34;]
C --&amp;gt; H[&amp;#34;VMWP.exe (Worker Process)&amp;#34;]
&lt;/pre>
&lt;ul>
&lt;li>&lt;strong>Windows Hypervisor&lt;/strong>: Runs at the most privileged level of the CPU (Ring -1 or VMX Root Mode) and is responsible only for memory allocation and CPU scheduling. It does not contain device drivers.&lt;/li>
&lt;li>&lt;strong>Root Partition&lt;/strong>: The partition where the host Windows OS runs. It possesses all device drivers and controls the hardware directly. It also provides management functions for child partitions (such as WMI providers and VMWP.exe).&lt;/li>
&lt;li>&lt;strong>Child Partition&lt;/strong>: The partition where a guest OS runs. Direct access to hardware is not permitted, and it sends I/O requests (Synthetic I/O) to the root partition via a logical memory sharing bus called &amp;ldquo;VMBus&amp;rdquo;.&lt;/li>
&lt;/ul>
&lt;h3 id="23-mechanism-of-wsl2-and-lightweight-utility-vm">2.3. Mechanism of WSL2 and Lightweight Utility VM
&lt;/h3>&lt;p>Although WSL2 utilizes the same underlying Type 1 hypervisor technology as Hyper-V, it uses a subset of features called the &amp;ldquo;Virtual Machine Platform (VMP)&amp;rdquo; which differs from full-featured Hyper-V virtual machines.&lt;/p>
&lt;p>The &amp;ldquo;Lightweight Utility VM&amp;rdquo; adopted in WSL2 completely eliminates the emulation of legacy hardware (such as virtual BIOS or virtual motherboards) present in traditional VMs.&lt;/p>
&lt;pre class="mermaid">
graph TD
A[&amp;#34;Windows Host OS (User Space)&amp;#34;]
B[&amp;#34;NTFS File System&amp;#34;]
C[&amp;#34;9P Protocol Server (Plan 9)&amp;#34;]
D[&amp;#34;Lightweight Utility VM (Linux Kernel)&amp;#34;]
E[&amp;#34;ext4.vhdx (Virtual Disk)&amp;#34;]
F[&amp;#34;Linux User Space (WSL2 Distributions)&amp;#34;]
A --&amp;gt; C
C --&amp;gt;| &amp;#34;Cross-OS File Sharing&amp;#34; | D
D --&amp;gt; E
D --&amp;gt; F
&lt;/pre>
&lt;p>The greatest features of WSL2 are its &lt;strong>fast startup&lt;/strong> and &lt;strong>seamless integration with the host OS&lt;/strong>. The Linux kernel boots in less than a second, and it accesses the Windows file system (NTFS) via Plan 9&amp;rsquo;s &lt;code>9P&lt;/code> network file system protocol.&lt;/p>
&lt;hr>
&lt;h2 id="3-thorough-performance-analysis-computational-resources-and-io">3. Thorough Performance Analysis: Computational Resources and I/O
&lt;/h2>&lt;p>Virtual machine performance is expressed as the sum of overheads across CPU, memory, and disk I/O components.&lt;/p>
&lt;h3 id="31-cpu-and-context-switch-overhead">3.1. CPU and Context Switch Overhead
&lt;/h3>&lt;p>Both Hyper-V and WSL2 use hardware-assisted virtualization (Intel VT-x / AMD-V). CPU instructions are basically executed at native speed, but when privileged instructions are executed or I/O operations occur, an interrupt called &amp;ldquo;VM Exit&amp;rdquo; is triggered, resulting in a context switch to the hypervisor.&lt;/p>
&lt;p>The CPU overhead $T_{overhead}$ at this time can be expressed by the following mathematical model:&lt;/p>
$$ T_{overhead} = \sum_{i=1}^{N} (t_{vm\_exit} + t_{hypercall\_process} + t_{vm\_entry}) $$&lt;p>Where:&lt;/p>
&lt;ul>
&lt;li>$N$: Number of VM Exits occurring per unit time&lt;/li>
&lt;li>$t_{vm\_exit}$: Transition time from the guest to the hypervisor&lt;/li>
&lt;li>$t_{hypercall\_process}$: Processing time for I/O operations or interrupts via VMBus&lt;/li>
&lt;li>$t_{vm\_entry}$: Return time from the hypervisor to the guest&lt;/li>
&lt;/ul>
&lt;p>Because WSL2 lacks legacy emulation, $t_{hypercall\_process}$ is heavily optimized and extremely small. Therefore, for pure CPU operations (such as kernel compilation or machine learning model inference), the performance degradation remains within a few percent compared to a bare-metal environment.&lt;/p>
&lt;h3 id="32-memory-allocation-mechanisms">3.2. Memory Allocation Mechanisms
&lt;/h3>&lt;p>There are distinct differences in design philosophy between the two regarding memory management approaches.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Hyper-V (Dynamic Memory)&lt;/strong>: The root partition dynamically allocates and reclaims memory according to the memory demands of the guest VM. However, memory secured as page cache within the guest OS tends not to be released unless the system is under pressure.&lt;/li>
&lt;li>&lt;strong>WSL2 (Dynamic Memory Reclaim)&lt;/strong>: WSL2 has its own mechanism to periodically return (reclaim) memory—including caches—that is no longer needed inside the Linux VM back to the Windows host. While early WSL2 versions had an issue where Linux page caches exhausted Windows memory (bloat of the Vmmem process), this has now been improved by kernel patches.&lt;/li>
&lt;/ul>
&lt;h3 id="33-disk-io-characteristics-vhdx-vs-ext4vhdx">3.3. Disk I/O Characteristics (VHDX vs ext4.vhdx)
&lt;/h3>&lt;p>Disk I/O is the component most likely to become a bottleneck in virtual machine performance.&lt;/p>
&lt;p>The I/O latency $L_{total}$ is calculated as follows:&lt;/p>
$$ L_{total} = L_{guest\_fs} + L_{vmbus} + L_{host\_fs} + L_{physical\_disk} $$&lt;p>&lt;strong>In the case of Hyper-V&lt;/strong>:
A typical Hyper-V guest uses a virtual disk in the &lt;code>VHDX&lt;/code> format. I/O requests issued from the file system (ext4 or NTFS) within the guest OS pass through the VMBus block device storage driver (storvsc) and are processed as accesses to the VHDX file on NTFS on the Windows side.&lt;/p>
&lt;p>&lt;strong>In the case of WSL2&lt;/strong>:
WSL2&amp;rsquo;s Linux distributions run on a native ext4 file system built within a dedicated &lt;code>ext4.vhdx&lt;/code> file. File operations inside Linux (e.g., within the &lt;code>~&lt;/code> directory) demonstrate native performance equivalent to the aforementioned Hyper-V.
However, &lt;strong>when accessing files on the Windows side (such as &lt;code>/mnt/c/&lt;/code>) from WSL2&amp;rsquo;s Linux&lt;/strong>, or vice versa, the processing differs significantly. The &lt;code>9P (Plan 9 File System Protocol)&lt;/code> is used for this cross-OS access.&lt;/p>
$$ L_{cross\_os} = L_{9p\_client} + L_{socket\_transfer} + L_{9p\_server} + L_{ntfs} $$&lt;p>Access via this 9P protocol involves significant serialization processing overhead. In scenarios involving massive read/write operations of small files (e.g., &lt;code>npm install&lt;/code> or Git operations in a Node.js project located in a Windows directory), performance drops significantly (sometimes with more than 10 times the delay).
Therefore, &lt;strong>when using WSL2, the golden rule is to always place project files on the Linux native file system (under &lt;code>~/&lt;/code>)&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="4-network-structure-nat-default-switch-bridged">4. Network Structure: NAT, Default Switch, Bridged
&lt;/h2>&lt;p>Network flexibility is one of the major differences between Hyper-V and WSL2.&lt;/p>
&lt;h3 id="41-wsl2-network-nat-based">4.1. WSL2 Network (NAT-based)
&lt;/h3>&lt;p>By default, the WSL2 network is configured with &amp;ldquo;NAT (Network Address Translation)&amp;rdquo; using Hyper-V&amp;rsquo;s virtual switch technology.
The Linux VM is automatically assigned a private IP address (e.g., &lt;code>172.20.x.x&lt;/code>) different from the Windows host. A mechanism is built-in where access to &lt;code>localhost&lt;/code> from the Windows host is forwarded to services (ports) running inside WSL2, allowing developers to test web servers without having to be mindful of the network.&lt;/p>
&lt;p>Recently, a new network mode called &amp;ldquo;Mirrored mode&amp;rdquo; was introduced in preview versions of WSL2. This aims to improve IPv6 support and VPN connection compatibility (configurable via &lt;code>.wslconfig&lt;/code>).&lt;/p>
&lt;h3 id="42-hyper-v-virtual-switch">4.2. Hyper-V Virtual Switch
&lt;/h3>&lt;p>Hyper-V enables advanced, enterprise-level network construction. Through the &amp;ldquo;Virtual Switch Manager&amp;rdquo;, it mainly provides three modes:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>External&lt;/strong>: Binds the host machine&amp;rsquo;s physical NIC to the virtual switch, allowing the guest VM to directly join the physical network (bridge connection). The VM obtains an IP from the same subnet as the physical network via a DHCP server.&lt;/li>
&lt;li>&lt;strong>Internal&lt;/strong>: Only allows communication between the host OS and VMs, as well as between VMs. Direct access to external networks is not possible.&lt;/li>
&lt;li>&lt;strong>Private&lt;/strong>: Only allows communication between VMs, cutting off communication with the host OS. Used for building isolated testing environments.&lt;/li>
&lt;/ol>
&lt;h3 id="43-advanced-hyper-v-network-construction-using-powershell">4.3. Advanced Hyper-V Network Construction using PowerShell
&lt;/h3>&lt;p>In development or testing environments, when you want to build a customized NAT network for VMs, PowerShell allows for detailed control. Below is an example script to create an internal virtual switch, configure NAT on it, and provide internet access to a VM.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># 1. Create Internal Virtual Switch&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$SwitchName&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;HyperV-NatSwitch&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">New-VMSwitch&lt;/span> &lt;span class="n">-SwitchName&lt;/span> &lt;span class="nv">$SwitchName&lt;/span> &lt;span class="n">-SwitchType&lt;/span> &lt;span class="n">Internal&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># 2. Set IP address to the virtual NIC on the host side (IP that acts as a gateway)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$GatewayIP&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;192.168.100.1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$NetPrefix&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="mf">24&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$InterfaceAlias&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;vEthernet (&lt;/span>&lt;span class="nv">$SwitchName&lt;/span>&lt;span class="s2">)&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">New-NetIPAddress&lt;/span> &lt;span class="n">-IPAddress&lt;/span> &lt;span class="nv">$GatewayIP&lt;/span> &lt;span class="n">-PrefixLength&lt;/span> &lt;span class="nv">$NetPrefix&lt;/span> &lt;span class="n">-InterfaceAlias&lt;/span> &lt;span class="nv">$InterfaceAlias&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># 3. Configure NAT Network&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$NatName&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;HyperV-NatNetwork&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$NatSubnet&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;192.168.100.0/24&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">New-NetNat&lt;/span> &lt;span class="n">-Name&lt;/span> &lt;span class="nv">$NatName&lt;/span> &lt;span class="n">-InternalIPInterfaceAddressPrefix&lt;/span> &lt;span class="nv">$NatSubnet&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Verification command&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Get-NetNat&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>With this configuration, by manually setting an IP of &lt;code>192.168.100.x&lt;/code> and a gateway of &lt;code>192.168.100.1&lt;/code> on a designated Hyper-V guest, you can build a custom NAT segment that can communicate externally via the host.&lt;/p>
&lt;hr>
&lt;h2 id="5-use-cases-and-practical-selection-guide">5. Use Cases and Practical Selection Guide
&lt;/h2>&lt;p>Based on the differences in architecture and performance discussed so far, we define under what circumstances which technology should be adopted.&lt;/p>
&lt;h3 id="51-scenarios-for-choosing-wsl2">5.1. Scenarios for Choosing WSL2
&lt;/h3>&lt;p>WSL2 is specifically designed to &amp;ldquo;improve developer productivity.&amp;rdquo; It is optimal for the following uses:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Web Development and Cloud-Native Development&lt;/strong>: Container development using Docker Desktop (WSL2 backend) or Podman.&lt;/li>
&lt;li>&lt;strong>Using Linux-specific Tools&lt;/strong>: When routinely using bash, grep, awk, sed, or GCC/Clang compilers meant for Linux.&lt;/li>
&lt;li>&lt;strong>GUI Applications (WSLg)&lt;/strong>: When you want to run Linux X11/Wayland applications seamlessly on the Windows desktop.&lt;/li>
&lt;li>&lt;strong>Machine Learning and AI Development&lt;/strong>: High-speed training with TensorFlow or PyTorch using GPU passthrough capabilities (NVIDIA CUDA on WSL).&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Note&lt;/strong>: You may face restrictions if you wish to deeply customize the kernel, or build complex services heavily dependent on systemd (systemd is currently supported, but is disabled or restricted by default).&lt;/p>
&lt;h3 id="52-scenarios-for-choosing-hyper-v">5.2. Scenarios for Choosing Hyper-V
&lt;/h3>&lt;p>Hyper-V is intended for &amp;ldquo;infrastructure virtualization and complete isolation.&amp;rdquo; It is essential for the following uses:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Running Windows VMs&lt;/strong>: When running different versions of Windows (such as Windows Server or older Windows 10) as test environments.&lt;/li>
&lt;li>&lt;strong>Nested Virtualization&lt;/strong>: When you want to run a virtual machine (Hyper-V or KVM) inside another virtual machine. Indispensable for infrastructure engineers&amp;rsquo; validation environments.&lt;/li>
&lt;li>&lt;strong>Advanced Network Requirements&lt;/strong>: When network configurations must be strictly controlled, such as external bridge connections (joining the same LAN), VLAN tagging, or allocating multiple NICs.&lt;/li>
&lt;li>&lt;strong>Snapshots (Checkpoints)&lt;/strong>: The ability to save a VM&amp;rsquo;s state at a specific point in time and instantly roll back to it whenever needed. Extremely useful for destructive software testing or malware analysis.&lt;/li>
&lt;li>&lt;strong>Fixed Resource Allocation&lt;/strong>: When you want to strictly fix the number of CPU cores and memory amount to minimize the impact on the host OS.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="6-consideration-of-io-throughput-through-mathematical-models-appendix">6. Consideration of I/O Throughput through Mathematical Models (Appendix)
&lt;/h2>&lt;p>As a system engineer, when determining the I/O performance limits of both, it is crucial to theoretically understand the relationship between throughput $S$ and block size $B$.&lt;/p>
&lt;p>Data transfer throughput $S$ is the amount of data transferred per unit time, and is modeled as follows:&lt;/p>
$$ S(B) = \frac{B}{L_{setup} + \frac{B}{R_{max}}} $$&lt;ul>
&lt;li>$B$: Block size (Bytes)&lt;/li>
&lt;li>$L_{setup}$: Fixed latency associated with I/O request setup and context switching&lt;/li>
&lt;li>$R_{max}$: Hardware&amp;rsquo;s maximum bandwidth for copying and device transfers&lt;/li>
&lt;/ul>
&lt;p>In file accesses via WSL2&amp;rsquo;s 9P protocol, this $L_{setup}$ becomes extremely large (due to socket communication and protocol serialization/deserialization). Therefore, when the block size $B$ is small (massive read/write of fine files around a few KBs), the effect of $L_{setup}$ in the denominator becomes dominant, and the throughput $S$ degrades dramatically.
Conversely, in VHDX access via Hyper-V&amp;rsquo;s VMBus, $L_{setup}$ is optimized to a level close to hardware interrupts, allowing it to maintain high IOPS even with small blocks.&lt;/p>
&lt;p>This mathematical reality serves as the logical foundation for the best practice that &amp;ldquo;you must not place project files on the Windows side in WSL2&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="7-conclusion-two-coexisting-virtualization-technologies">7. Conclusion: Two Coexisting Virtualization Technologies
&lt;/h2>&lt;p>Hyper-V and WSL2 are not a matter of one being superior to the other; they are &lt;strong>&amp;ldquo;two solutions with different purposes&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>WSL2&lt;/strong> is the &amp;ldquo;best integration tool&amp;rdquo; that breaks the shell of the Windows OS to seamlessly and swiftly deliver the Linux ecosystem to Windows users. It is no exaggeration to call it the ultimate CLI environment for developers.&lt;/li>
&lt;li>&lt;strong>Hyper-V&lt;/strong> is a &amp;ldquo;full-fledged hypervisor&amp;rdquo; that brings the robust isolation and management capabilities cultivated in enterprise data centers to the desktop. It is second to none in network construction, Windows OS testing, and infrastructure environment simulation.&lt;/li>
&lt;/ul>
&lt;p>In modern Windows environments, these two technologies do not compete on equal terms; they beautifully coexist on the same VM platform. By using the right tool for the right job depending on the purpose, Windows can truly become the most powerful and flexible engineering workstation in the world.&lt;/p></description></item></channel></rss>