Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
E

ExHyperV

> 编程语言
Open source

The Excalibur of Hyper-V / Hyper-V 神器

4.5K stars0 likes0 views
WebsiteGitHub

About

The Excalibur of Hyper-V / Hyper-V 神器

---

ExHyperV

**English** | [中文](https://github.com/Justsenger/ExHyperV/blob/main/README_zh.md) --- ExHyperV aims to provide a graphical, easy-to-use configuration tool for advanced Hyper-V features by delving into technical details such as Hyper-V documentation, [WMI](https://github.com/Justsenger/HyperV-WMI-Documentation), and [HCS](https://learn.microsoft.com/en-us/virtualization/api/hcs/overview). Due to limited personal time and energy, the project may contain untested scenarios or bugs. If you encounter any hardware/software issues during use, please feel free to report them via [Issues](https://github.com/Justsenger/ExHyperV/issues)! Features will be gradually improved over time. If there is a specific feature you would like to see prioritized, or if you love this project, you can support it via the donation button at the bottom of the document and leave a message! ## Interface Overview ExHyperV uses the [WPF-UI](https://github.com/lepoco/wpfui) framework to provide a smooth, modern user interface experience with sci-fi visual effects. It supports both dark and light themes and automatically switches based on the system theme. Supported languages: Simplified Chinese & English. Click to see more screenshots ## Quick Start --- ### 1. Download and Run - **Download**: Go to the [Releases page](https://github.com/Justsenger/ExHyperV/releases/latest) to download the latest version. - **Run**: Extract the archive and run `ExHyperV.exe` directly. --- ### 2. Build (Optional) 1. Install [Visual Studio](https://visualstudio.microsoft.com/vs/) and ensure the .NET desktop development workload is selected. 2. Clone this repository using GitHub Desktop or Git. 3. Open the `/src/ExHyperV.sln` file with Visual Studio to compile. Alternatively, you can download the [.NET SDK](https://dotnet.microsoft.com/zh-cn/download), open the project directory, and run: ```pwsh cd src dotnet build ``` ## Technical Documentation This section will be maintained long-term. It is written based on Hyper-V related documentation and development practices, and may contain inaccuracies. --- ### Introduction to Hyper-V > [!NOTE] > Hyper-V is a high-performance virtual machine manager (Hypervisor) based on Type-1 architecture. When you enable the Hyper-V feature, the host system becomes a privileged virtual machine belonging to the Root Partition. The created virtual machines belong to Child Partitions; they are isolated from each other and cannot perceive each other's existence. Virtualization technologies belonging to the Type-1 architecture include: Hyper-V, Proxmox (KVM), VMware ESXi (VMkernel), Xen, etc., with performance utilization rates generally above 98%. Virtualization technologies belonging to the Type-2 architecture include: VMware Workstation, Oracle VirtualBox, Parallels Desktop, etc., with performance utilization rates around 90%~95%. Based on these facts, you can view virtual machines as isolated small rooms where you can run potentially threatening programs, test system functions, multi-box games, or other uses without worrying about messing up the host system (Except in cases where FLR is not supported in PCIe Passthrough, where a VM restart might restart the host, or viruses with lateral movement capabilities—please pay attention to network security). You can enable/disable Hyper-V via the Control Panel or a simple Powershell command (requires Pro or Server edition). After confirming with Y and rebooting, processes like vmms.exe, vmcompute.exe, and vmmem will run continuously in the background, and the Hyper-V Manager icon will appear in the Start menu. ``` Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All ``` --- ### Scheduler > [!NOTE] > The scheduler coordinates how physical processor CPU time is allocated to virtual machine processors. Hyper-V has three types of schedulers: Classic / Core / Root. They can be categorized into two types: Manual (Classic, Core) and Automatic (Root). Core can be seen as a variant of Classic that improves security but may reduce performance in some scenarios. The **Classic Scheduler** dates back to Windows Server 2008. It is based on the principle of fair allocation using traditional time slicing. It randomly allocates VM processor time to any available logical processor on the host. If host resources are idle, it is more likely to allocate logical processors from different physical cores rather than hyper-threads to achieve better performance. The **Core Scheduler** appeared later, introduced in Windows Server 2016 and Windows 10 Build 14393. Its purpose is to mitigate side-channel attacks. Even if host resources are idle, it tends to allocate two threads of the same physical core rather than more physical cores. This strategy helps improve security and VM isolation but significantly reduces the CPU performance allocated to VMs when host resources are idle. Starting from Windows Server 2019, Windows Server defaults to using the Core Scheduler. The **Root Scheduler** was released in Windows 10 Build 17134. It collects metrics on workload CPU usage and makes automatic scheduling decisions. It is very suitable for hybrid CPU architectures (Big/Little cores). Starting from Build 17134, Windows Hyper-V (Pro) defaults to using the Root Scheduler. The system type is independent of the scheduler type; you can switch arbitrarily, effective after rebooting the host. --- ### Processor (vCPU) > [!NOTE] > The ability of the virtual machine to request execution time on logical processors from the host. #### Compute Resources ##### Core Count Usually set to even numbers like 2, 4, 8, 16. Increasing vCPUs significantly improves the processing speed of parallel tasks, but too many unnecessary vCPUs may bring scheduling pressure to the Hypervisor. If the total number of VM cores exceeds the host's physical logical core count (Overselling), applications requiring immediate response will be greatly affected. ##### Reserve The lower limit percentage of execution time provided for this virtual machine. Reserve Value = Reserve * Core Count. ##### Limit The upper limit percentage of execution time provided for this virtual machine. Limit Value = Limit * Core Count. ##### Weight The priority of this virtual machine in competing for CPU execution time, ranging from 0 to 10000. #### Advanced Features ##### Host Resource Protection When enabled, it monitors I/O requests communicated through VMBus. If abnormal behavior such as interrupt storms occurs, it reduces CPU execution time allocation to prevent affecting the host system in the root partition. Ordinary users do not need to enable this. ##### Nested Virtualization When enabled, it passes through the CPU's VT-x/AMD-V instruction set extensions, allowing you to run a virtual machine inside a Hyper-V virtual machine. This slightly increases CPU virtualization overhead. After enabling Nested Virtualization and Hyper-V features in the VM, the VM's Task Manager will show L1/L2/L3 cache topology and will no longer be marked as "Virtual Machine: Yes," which helps with avoiding virtualization detection. ##### Migration Compatibility When enabled, it masks part of the CPU instruction set—exactly which part depends on [cpu-migration-compatibility.md](doc/cpu-migration-compatibility.md)—to facilitate live migration across hosts with different hardware. Ordinary users do not need to enable this. ##### Legacy System Compatibility When enabled, it significantly strips down the CPU instruction set. This is beneficial for running Windows 7 or earlier operating systems but detrimental to running modern operating systems. ##### Virtual Machine SMT When enabled, the virtual machine can perceive that its vCPUs appear as paired logical cores, helping the OS kernel inside the VM to better perform L1/L2 cache optimization and process scheduling. ##### Expose Architecture Performance Monitoring Unit When enabled, it passes through the CPU's hardware counters, allowing development tools inside the virtual machine to directly access physical CPU performance monitoring hardware. Requires host support. ##### Expose Frequency Monitoring Registers When enabled, allows the virtual machine operating system to read the actual frequency of the physical processor. Default is enabled. ##### Disable Side-Channel Attack Mitigations When enabled, disables the IBRS / IBRS_ALL / STIBP / IBPB / SSBD / MD_CLEAR / TSX_CTRL features. This slightly improves performance but reduces virtualization security. ##### Enable Socket Topology When enabled, the virtual machine's socket topology follows the host's physical sockets, so the VM can perform NUMA scheduling based on the real sockets. ##### APIC Mode - Auto (default, let Hyper-V choose) - xAPIC (legacy, MMIO access, 8-bit APIC ID → addresses up to 255) - x2APIC (newer, MSR access, 32-bit APIC ID → addresses a huge number of processors) - Apic (both xAPIC and x2APIC coexist; the VM boots in xAPIC and can switch to x2APIC at runtime) ##### Custom CPU Name Allows customizing the CPU name, a maximum 48-byte ASCII string. Requires at least Build 20348. ##### CPU Pinning CPU Pinning is implemented based on CPU Groups (Classic + Core schedulers) + Process Affinity (Root scheduler), allowing you to forcibly lock vCPUs to specified cores. The best practice is binding 4 vCPUs to 4 cores. Binding 2 vCPUs to 4 cores will cause random drift, and binding 4 vCPUs to 2 cores will cause queuing, and so on. If you find the scheduler performance poor, or have concerns about Intel's hybrid architecture or AMD's multi-chip architecture, please try using this feature. > [!CAUTION] > The following are experimental features. Use with caution. ##### L3 Cache Ways Manually specify the L3 cache ways the virtual machine sees. When hosts in a cluster have different L3 geometries, fixing the VM's L3 ways to a constant lets cache-topology-aware software inside the VM see consistent cache information before and after migration. ##### L3 Processor Distribution Policy Decides how vCPUs use the L3 domains. Four policies (Small to Large / Large to Small / Even·Small to Large / Even·Large to Small): - "Small to Large / Large to Small": prefer allocating the smaller / larger L3 domain. - "Even": spread vCPUs across the L3 domains as evenly as possible. ##### Page Shattering Decides the shattering policy of SLAT (Second-Level Address Translation). - Always shatter: SLAT always uses 4KB small pages. - Never shatter: use large pages whenever possible. - Default: decided by the platform and isolation mode. ##### Ignore Host Max Frequency Lifts the host's frequency cap on the virtual machine. Requires CPU support for frequency-scaling delegation. ##### Expose PMU / LBR / PEBS / IPT Passes the physical CPU's performance-monitoring hardware through to the virtual machine, for use by profiling and debugging tools inside the VM. Requires host support. - PMU: hardware performance counters (cycles, instructions, cache hits / misses, branch mispredicts, etc.). - LBR: Last Branch Record, reconstructs hot call paths. - PEBS: Precise Event-Based Sampling, pins events to the exact triggering instruction. - IPT: Processor Trace, low-overhead recording of the full execution control flow. ##### Frequency Cap / Floor / Target (MHz) Set the virtual machine's CPU running frequency. Requires CPU support for frequency-scaling delegation. - Cap: frequency will not exceed this value. - Floor: frequency will not fall below this value. - Target: run as close to this frequency as pos

GitHub Issues· 0 open

View all on GitHub

No open issues yet, or sync has not completed.

Highlights

  • •Download: Go to the Releases page to download the latest version.
  • •Run: Extract the archive and run ExHyperV.exe directly.
  • •Auto (default, let Hyper-V choose)
  • •xAPIC (legacy, MMIO access, 8-bit APIC ID → addresses up to 255)
  • •x2APIC (newer, MSR access, 32-bit APIC ID → addresses a huge number of processors)
  • •Apic (both xAPIC and x2APIC coexist; the VM boots in xAPIC and can switch to x2APIC at runtime)
  • •"Small to Large / Large to Small": prefer allocating the smaller / larger L3 domain.
  • •"Even": spread vCPUs across the L3 domains as evenly as possible.
  • •Always shatter: SLAT always uses 4KB small pages.
  • •Never shatter: use large pages whenever possible.

> Tags

C#

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言