{"id":29996767,"url":"https://github.com/open-edge-platform/edge-desktop-virtualization","last_synced_at":"2025-08-05T02:55:35.011Z","repository":{"id":298571170,"uuid":"988861786","full_name":"open-edge-platform/edge-desktop-virtualization","owner":"open-edge-platform","description":"Edge-Desktop-Virtualization has essential components for the IDV use case, leveraging Intel's graphics and display virtualization technology (Graphics SR-IOV) on cloud/edge-native infrastructure (k3s/k8s/kubevirt)). ","archived":false,"fork":false,"pushed_at":"2025-07-31T10:07:13.000Z","size":60977,"stargazers_count":1,"open_issues_count":5,"forks_count":7,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-31T13:57:12.504Z","etag":null,"topics":["gfx-sriov","intelligent-desktop-virtualization","k3s","kubernetes","kubevirt","linux-vm","qemu-kvm","sriov","virtualization","vm","windows-vm"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/open-edge-platform.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSES/Apache-2.0.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-23T07:28:54.000Z","updated_at":"2025-07-29T16:14:57.000Z","dependencies_parsed_at":"2025-06-11T20:48:50.147Z","dependency_job_id":"8a2c1edb-861b-4aee-bf56-bcd85f7baf97","html_url":"https://github.com/open-edge-platform/edge-desktop-virtualization","commit_stats":null,"previous_names":["open-edge-platform/edge-desktop-virtualization"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/open-edge-platform/edge-desktop-virtualization","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-edge-platform%2Fedge-desktop-virtualization","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-edge-platform%2Fedge-desktop-virtualization/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-edge-platform%2Fedge-desktop-virtualization/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-edge-platform%2Fedge-desktop-virtualization/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/open-edge-platform","download_url":"https://codeload.github.com/open-edge-platform/edge-desktop-virtualization/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-edge-platform%2Fedge-desktop-virtualization/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268825946,"owners_count":24313268,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-05T02:00:12.334Z","response_time":2576,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gfx-sriov","intelligent-desktop-virtualization","k3s","kubernetes","kubevirt","linux-vm","qemu-kvm","sriov","virtualization","vm","windows-vm"],"created_at":"2025-08-05T02:55:33.115Z","updated_at":"2025-08-05T02:55:34.948Z","avatar_url":"https://github.com/open-edge-platform.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Desktop Virtualization with Graphics SR-IOV\n\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/open-edge-platform/edge-desktop-virtualization/badge)](https://scorecard.dev/viewer/?uri=github.com/open-edge-platform/edge-desktop-virtualization)\n[![CodeQL](https://github.com/open-edge-platform/edge-desktop-virtualization/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/open-edge-platform/edge-desktop-virtualization/actions/workflows/github-code-scanning/codeql)\n[![Device Plugin: Coverity Scan](https://github.com/open-edge-platform/edge-desktop-virtualization/actions/workflows/device_plugin_coverity.yaml/badge.svg)](https://github.com/open-edge-platform/edge-desktop-virtualization/actions/workflows/device_plugin_coverity.yaml)\n\n- [Desktop Virtualization with Graphics SR-IOV](#desktop-virtualization-with-graphics-sr-iov)\n  - [Overview](#overview)\n    - [How it works](#how-it-works)\n    - [Key Features](#key-features)\n    - [System requirements:](#system-requirements)\n      - [Recommended Hardware Configuration](#recommended-hardware-configuration)\n    - [Host OS Options](#host-os-options)\n    - [Generate Virtual Machine qcow2 with required drivers for SR-IOV](#generate-virtual-machine-qcow2-with-required-drivers-for-sr-iov)\n  - [K3s/Kubevirt Solution stack for Edge Desktop Virtualization](#k3skubevirt-solution-stack-for-edge-desktop-virtualization)\n    - [IDV Services](#idv-services)\n    - [Device Plugins for Kubernetes](#device-plugins-for-kubernetes)\n    - [Kubevirt Patch](#kubevirt-patch)\n    - [Sample Application : VM deployment Helm charts](#sample-application--vm-deployment-helm-charts)\n  - [References](#references)\n  - [Getting Help](#getting-help)\n  - [Contributions](#contributions)\n  - [License](#license)\n\n## Overview\n\nIntel's Single Root I/O Virtualization (SR-IOV) for graphics is a technology that allows a single physical Intel graphics processing unit (GPU) to be presented as multiple virtual devices to different virtual machines (VMs). This enables efficient GPU resource sharing and improves performance for graphics-intensive workloads within virtualized environments\n\n### How it works\n\n- The Physical Function (PF) is the full-featured physical function of the GPU, managed by the host OS. \n- Virtual functions (VFs) are created from the PF and assigned to individual VMs.\n- Each VF provides a dedicated and isolated path for data transfer to and from the VM, bypassing the host's hypervisor for improved performance and reducded latency.\n- PCIe Standard: SR-IOV is a PCI-SIG standard that defines how a single physical PCIe device can be presented as multiple virtual devices. \n\n\u003cp align=\"center\"\u003e\n\u003cimg align=\"center\" width=50% height=50% src=\"docs/images/sriov_overview.png\" \u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\u003cem\u003eGraphics SR-IOV Architecture\u003c/em\u003e\n\u003c/p\u003e\n\n### Key Features\n\n- **Improved performance:** Direct access to the GPU hardware for each VM reduces overhead and latency, particularly for tasks like video transcoding and media processing.\n- **Efficient resource utilization:** SR-IOV enables better sharing of GPU resources among multiple VMs, maximizing the utilization of a single physical GPU.\n- **Support for cloud-native environments:** SR-IOV is crucial for enabling GPU acceleration in Kubernetes and other cloud platforms.\n\n### System requirements:\n\nSR-IOV for Intel graphics typically requires hardware generation of Alder Lake (12th Gen Intel Core) or newer.\nOne can check if your Intel graphics controller supports SR-IOV by executing below command for the Single Root I/O Virtualization (SR-IOV) PCI capability\n ```sh\n sudo lspci -s 2.0 -v\n ```\n![Graphics SR-IOV Support](docs/images/gfx-sriov-support.png \"Graphics SR-IOV support\")\n\n#### Recommended Hardware Configuration\n\n| Component    | Edge Microvisor Toolkit + graphics SR-IOV|\n|--------------|------------------------------------------|\n| CPU          | Intel® Core (12th gen and higher)        |\n| RAM          | 64GB recommended                         |\n| Storage      | 500 GB SSD or NVMe minimum               |\n| Networking   | 1GbE Ethernet                            |\n\n### Host OS Options\n\nHost OS has to be enabled with graphics SR-IOV ingredients.\nBelow are various options (but not limited to) :\n- #### EMT - Intel EMT with [desktop-virtualization Image config](https://github.com/open-edge-platform/edge-microvisor-toolkit/blob/70d364596e88ad332637d7073a7a0a445960ca39/toolkit/imageconfigs/edge-image-desktop-virtualization.json)\n- #### Debian - [ThunderSoft SR-IOV](https://github.com/ThunderSoft-SRIOV)\n- #### Ubuntu\n  - [kvm multi-os](https://github.com/intel/kvm-multios/blob/main/documentation/setup_sriov.md)\n  - [12th Gen](https://www.intel.com/content/www/us/en/secure/content-details/680834/12th-gen-intel-core-mobile-processors-code-named-alder-lake-p-12th-gen-intel-core-desktop-processors-code-named-alder-lake-s-multi-os-with-graphics-sr-iov-virtualization-on-ubuntu-user-guide.html?wapkw=multi-os%20graphics%20SRIOV\u0026DocID=680834)\n  - [13th Gen](https://www.intel.com/content/www/us/en/secure/content-details/762237/13th-gen-intel-core-mobile-processors-for-iot-edge-code-named-raptor-lake-p-multi-os-with-graphics-sr-iov-virtualization-on-ubuntu-user-guide.html?wapkw=multi-os%20graphics%20SRIOV)\n  - [Core Ultra PS Series (Meteor Lake)](https://www.intel.com/content/www/us/en/secure/content-details/780205/reference-implementation-of-intel-core-ultra-processor-intel-core-ultra-processor-ps-series-formerly-known-as-meteor-lake-u-h-ps-multi-os-with-graphics-sr-iov-virtualization-on-ubuntu-user-guide.html?wapkw=multi-os%20graphics%20SRIOV)\n\n\n### Generate Virtual Machine qcow2 with required drivers for SR-IOV\n\n- #### [Windows](https://github.com/ThunderSoft-SRIOV/sriov/blob/main/docs/deploy-windows-vm.md#microsoft-windows-11-vm)\n- #### [Ubuntu](https://github.com/ThunderSoft-SRIOV/sriov/blob/main/docs/deploy-ubuntu-vm.md)\n\n## K3s/Kubevirt Solution stack for Edge Desktop Virtualization\n\nBelow are the ingredients to achieve Display and Graphics Virtualization pipeline using SR-IOV.\n\n\u003cp align=\"center\"\u003e\n\u003cimg width=30% height=30% src=\"docs/images/edge-desktop-virtualization.png\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\u003cem\u003eDesktop Virtualization on K3s/Kubevirt\u003c/em\u003e\n\u003c/p\u003e\n\nThe components marked in red are in scope of this solution. \nThe display and graphics virtualization pipeline on k3s/kubevirt can be realized by following build and installation of below components.\n\n### [IDV Services](idv-services/README.md)\n### [Device Plugins for Kubernetes](device-plugins-for-kubernetes/README.md)\n### [Kubevirt Patch](kubevirt-patch/README.md)\n### Sample Application : VM deployment Helm charts\n   - #### [Discrete Helm charts](sample-application/discrete/README.md)\n   - #### [Single Helm deployment](sample-application/single/README.md)\n\n## References\n- [Reference-1](https://cyberus-technology.de/en/articles/vbox-kvm-sriov)\n- [Reference-2](https://www.dfi.com/Uploads/DownloadCenter/5631e304-28b2-4256-975a-5689750b5636/Intel%20iGPU%20(Integrated%20Graphics)%20SR-IOV%20-%20The%20Catalyst%20for%20IoT%20Virtualization%20in%20Factory%20Automation.pdf?timestamp=1676441838.9072)\n- [Reference-3](https://www.intel.com/content/www/us/en/secure/content-details/782115/intelligent-desktop-virtualization-idv.html?wapkw=intelligent%20desktop%20virtualization\u0026DocID=782115)\n- [Reference-4](https://www.intel.com/content/www/us/en/secure/content-details/657261/sr-iov-based-graphics-virtualization.html?wapkw=intelligent%20desktop%20virtualization\u0026DocID=657261)\n- [References-5](https://github.com/intel/kubevirt-gfx-sriov)\n- [References-6](https://dgpu-docs.intel.com/devices/hardware-table.html)\n\n## Getting Help\n\nif you encounter bugs, have feature requests, or need assistance, [file a Github issue](https://github.com/open-edge-platform/edge-desktop-virtualization/issues)\n\nFor security-related concerns, please refer to [SECURITY.md](./SECURITY.md).\n\n## Contributions\n\nEdge Desktop Virtualization is open source and always welcomes an active community to support adding new features, optimizing, and improving security.\n\nTo learn how to contribute to the project, see the [Contributor's Guide](./CONTRIBUTING.md).\n\n## License\n\nFor license related information refer [LICENSES](./LICENSES/)\n\nLast Updated Date: June 02, 2025\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen-edge-platform%2Fedge-desktop-virtualization","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopen-edge-platform%2Fedge-desktop-virtualization","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen-edge-platform%2Fedge-desktop-virtualization/lists"}