v2.10.0
Major features
- Remove DRA components from the HAMi main Helm chart; Ascend DRA support has moved to the dedicated ascend-dra-driver repository by (@archlitchi) in #2038
- Add init container support with correct GPU resource accounting by (@maishivamhoo123) in #1773
- Add PodGroup (gang scheduling) support, including NodeLock retries in Bind and compatibility with the gangScheduling feature gates on Kubernetes v1.36+ by (@lin121291) and (@archlitchi) in #2066 and #2206
- Add flexible MIG with dynamic MIG instance allocation and deallocation by (@FouoF) in #2378
- Add a new mutex GPU scheduling policy and support comma-separated policy combinations by (@mesutoezdil) in #2011 and #2621
- Add opt-in NUMA topology alignment (CPU and GPU) for vGPU replicas by (@saiyam1814) in #2065
- Add support for Biren devices by (@DSFans2014) in #1711
- Add AMD MI300x series vGPU support by (@FouoF) in #2290
- Allow mode-agnostic Ascend pods to schedule across both vNPU-template and HAMi-core nodes by (@ouyangluwei163) in #2035
- Add Ascend 910C vNPU templates vir05_1c_16g and vir10_3c_32g by (@ouyangluwei163) in #2005
- Stop trimming device memory to template alignment when using HAMi-core mode for vNPU by (@archlitchi) in #2696
- Switch the HAMi-core compile image to ubi8 to support all GLIBC versions by (@spencercjh) in #1958
Major bug fixes
- Fix MIG failures, allow multiple MIG instances on one GPU, and skip nvidia-mig-parted when MIG is disabled by (@DSFans2014), (@saiyam1814) and (@maishivamhoo123) in #1819, #2724 and #1930
- Stop MIG usage corruption and file descriptor leaks by (@adity1raut) in #2245
- Bound-check MIG template and instance indexes parsed from UUID annotations by (@mesutoezdil) in #2088
- Detect NVLink through NVSwitch for topology scoring by (@peachest) in #2103
- Harden HTTP servers and migconfig file permissions by (@mesutoezdil) in #2100
- Fix node lock handling: preserve concurrent node locks, roll back partial device locks, and prevent Cambricon node lock leaks by (@ShiroKSH), (@AyushSrivastava1818) and (@jianzhangbjz) in #2197, #2626 and #2329
- Clean up podManager on Bind failures to prevent resource leaks by (@peachest) in #1927
- Fix data races by returning copies instead of shared pointers from node usage inspection, the node manager, and the pod manager by (@DSFans2014), (@mesutoezdil) and (@AyushSrivastava1818) in #1967, #2055 and #2333
- Fix ResourceQuota accounting: clamp negative usage, enforce quotas for every device backend, and honor an explicit zero limit by (@mesutoezdil), (@Lakshya77089) and (@veyron-kairo) in #1880, #2347 and #2313
- Recover scheduling on nodes with stale
Deleted_handshake annotations and parse handshake timestamps in local timezone by (@saiyam1814) and (@mesutoezdil) in #1843 and #1816 - Validate
gpumem-percentageranges and treat a value of 0 as unset to prevent silent unschedulability by (@saiyam1814) and (@Wangmin362) in #1997 and #2156 - Fix panic paths in vGPUmonitor and the scheduler, including nil request bodies, zero-value division, and out-of-range device indexes by (@devGPP23), (@lin121291) and (@Nakshatra480) in #2384, #1820 and #2400
- Resolve stale annotations in multi-container Allocate by (@peachest) in #2380
- Resolve the high-cardinality leak in
memory_allocated_bytesmetrics by (@Aryanbhargava18) in #2142 - Fix chart issues: derive
ld.so.preloadfromdevicePlugin.libPathand stop the global image tag from overriding per-component tags by (@ilia-medvedev) and (@FouoF) in #1714 and #1774
What's changed
Other changes
- Support RTX PRO 6000 Blackwell dynamic MIG by (@shkatara) in #2135
- Support Enflame DRS by (@FouoF) in #1872
- Deny privileged containers in the admission webhook by (@Jay2006sawant) in #2139
- Sign release images, publish provenance, pin CI actions by hash, and run CodeQL on pull requests by (@mesutoezdil) in #2110, #2147 and #2193
- Support template node simulation filtering in the scheduler by (@spencercjh) in #2046
- Add device type labels and node labels to metrics by (@princexpoddar) and (@SK8-infi) in #2554 and #2580
- Bump the Go builder to 1.26 and update dependencies by (@mesutoezdil) in #2710 and #2747
New contributors
- maverick-woo (@maverick-woo)
- rootsongjc (@rootsongjc)
- pmady (@pmady)
- bolin-dai (@bolin-dai)
- ccoVeille (@ccoVeille)
- spencercjh (@spencercjh)
- lvkaili (@lvkaili)
- zzzkl (@zzzkl)
- usernameisnull (@usernameisnull)
- kenji-mido (@kenji-mido)
- fishman (@fishman)
- LynPtl (@LynPtl)
- shkatara (@shkatara)
- imantaba (@imantaba)
- Jay2006sawant (@Jay2006sawant)
- Aryanbhargava18 (@Aryanbhargava18)
- adity1raut (@adity1raut)
- chidwipak (@chidwipak)
- ShiroKSH (@ShiroKSH)
- princexpoddar (@princexpoddar)
- iemAnshuman (@iemAnshuman)
- Eshiv-Pandey (@Eshiv-Pandey)
- SK8-infi (@SK8-infi)
- cotishq (@cotishq)
- veyron-kairo (@veyron-kairo)
- AyushSrivastava1818 (@AyushSrivastava1818)
- hemantrajputt (@hemantrajputt)
- Lakshya77089 (@Lakshya77089)
- devGPP23 (@devGPP23)
- Nakshatra480 (@Nakshatra480)
- Brijesh-Thakkar (@Brijesh-Thakkar)
- aaka24 (@aaka24)
- asadjan4611 (@asadjan4611)
- shinigami-777 (@shinigami-777)
- aniket866 (@aniket866)
- KunwarSidhu47 (@KunwarSidhu47)
- keshav9926 (@keshav9926)
- Rickydama3 (@Rickydama3)
- hyy321 (@hyy321)
- Ferryx349 (@Ferryx349)
- Kanika0306 (@Kanika0306)
- jianzhangbjz (@jianzhangbjz)
- manoj-1407 (@manoj-1407)
- om7057 (@om7057)
- AdityaShome (@AdityaShome)
- mohityadav8 (@mohityadav8)
Committers: Contributors
- archlitchi (@archlitchi)
- Shouren (@Shouren)
- maishivamhoo123 (@maishivamhoo123)
- lin121291 (@lin121291)
- FouoF (@FouoF)
- mesutoezdil (@mesutoezdil)
- saiyam1814 (@saiyam1814)
- spencercjh (@spencercjh)
- DSFans2014 (@DSFans2014)
- kenji-mido (@kenji-mido)
- ouyangluwei163 (@ouyangluwei163)
- dongjiang1989 (@dongjiang1989)
- ashergaga (@ashergaga)
- haitwang-cloud (@haitwang-cloud)
- MyoungHaSong (@MyoungHaSong)
- anandj91 (@anandj91)
- ilia-medvedev (@ilia-medvedev)
- yxxhero (@yxxhero)
- peachest (@peachest)
- shkatara (@shkatara)
- blackdragoon26 (@blackdragoon26)
- iemAnshuman (@iemAnshuman)
- adity1raut (@adity1raut)
- imantaba (@imantaba)
- aaka24 (@aaka24)
- veyron-kairo (@veyron-kairo)
- AyushSrivastava1818 (@AyushSrivastava1818)
- Ferryx349 (@Ferryx349)
- jianzhangbjz (@jianzhangbjz)
- manoj-1407 (@manoj-1407)
- asadjan4611 (@asadjan4611)
- SK8-infi (@SK8-infi)
- mohityadav8 (@mohityadav8)
- hoteye (@hoteye)
- qiangwei1983 (@qiangwei1983)
- jsl9208 (@jsl9208)
- CoderTH (@CoderTH)
- Atroxgod (@Atroxgod)
- Yonsun-w (@Yonsun-w)
- CFH2436 (@CFH2436)
- xrwang8 (@xrwang8)
- almazkhalikov (@almazkhalikov)
- bolin-dai (@bolin-dai)
- lvkaili (@lvkaili)
- ntheanh201 (@ntheanh201)
- LynPtl (@LynPtl)
- Wangmin362 (@Wangmin362)
- Jay2006sawant (@Jay2006sawant)
- Aryanbhargava18 (@Aryanbhargava18)
- ShiroKSH (@ShiroKSH)
- princexpoddar (@princexpoddar)
- Eshiv-Pandey (@Eshiv-Pandey)
- cotishq (@cotishq)
- hemantrajputt (@hemantrajputt)
- Lakshya77089 (@Lakshya77089)
- devGPP23 (@devGPP23)
- Nakshatra480 (@Nakshatra480)
- Brijesh-Thakkar (@Brijesh-Thakkar)
- KunwarSidhu47 (@KunwarSidhu47)
- keshav9926 (@keshav9926)
- Rickydama3 (@Rickydama3)
- hyy321 (@hyy321)
- shinigami-777 (@shinigami-777)
- om7057 (@om7057)
- AdityaShome (@AdityaShome)
- ManishSharma1609 (@ManishSharma1609)
- rootsongjc (@rootsongjc)
- fishman (@fishman)
- chidwipak (@chidwipak)
- Kanika0306 (@Kanika0306)
- xiyichan (@xiyichan)
- wawa0210 (@wawa0210)
- charford (@charford)
- jcustenborder (@jcustenborder)
- Nov11 (@Nov11)
- kenwoodjw (@kenwoodjw)
- luohua13 (@luohua13)
- maverick-woo (@maverick-woo)
- pmady (@pmady)
- ccoVeille (@ccoVeille)
- zzzkl (@zzzkl)
- usernameisnull (@usernameisnull)
- aniket866 (@aniket866)
Full Changelog: https://github.com/Project-HAMi/HAMi/compare/v2.9.0...v2.10.0









