Noktomezo

Device Affinity Policy Tweaks

Feb 2nd, 2025
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Winbatch 7.57 KB | Source Code | 0 0
  1. :: ─────────────────────────────────────────────────────────────────────────────
  2. :: 😶‍🌫️ DEVICE AFFINITY POLICY TWEAKS
  3. :: ─────────────────────────────────────────────────────────────────────────────
  4. :: 📖 Allocate separate CPU cores to the GPU and Internet Adapter so they don't have to compete with other devices for CPU time.
  5. :: ─────────────────────────────────────────────────────────────────────────────
  6. :: ⚠️ Your CPU must have at least 4 cores to set device affinity.
  7. :: ─────────────────────────────────────────────────────────────────────────────
  8. :: ©️ Copy & Paste it to your own .cmd/.bat file
  9. :: ─────────────────────────────────────────────────────────────────────────────
  10.  
  11.  
  12.  
  13. :: 📜 SCRIPT
  14. :: ─────────────────────────────────────────────────────────────────────────────
  15.  
  16. @echo off
  17. setlocal enabledelayedexpansion
  18.  
  19. :: The WMIC system component is required to obtain CPU and other device info
  20. DISM /Online /Add-Capability /CapabilityName:WMIC~~~~
  21.  
  22. for /f "tokens=*" %%f in ('wmic cpu get NumberOfCores /value ^| find "="') do (
  23.     set "%%f"
  24.     for /f "delims=" %%a in ("!NumberOfCores!") do set "NumberOfCores=%%a"
  25. )
  26.  
  27. for /f "tokens=*" %%f in ('wmic cpu get NumberOfLogicalProcessors /value ^| find "="') do (
  28.     set "%%f"
  29.     for /f "delims=" %%a in ("!NumberOfLogicalProcessors!") do set "NumberOfLogicalProcessors=%%a"
  30. )
  31.  
  32. if !NumberOfCores! lss 4 (
  33.     cls
  34.     echo "Your CPU has only !NumberOfCores! core(s). A minimum of 4 cores is required to set device affinity."
  35.     pause
  36.     exit 1
  37. )
  38.  
  39. if !NumberOfCores! gtr 4 (
  40.     for /f %%i in ('wmic path Win32_VideoController get PNPDeviceID^| findstr /l "PCI\VEN_"') do (
  41.         reg add "HKLM\System\CurrentControlSet\Enum\%%i\Device Parameters\Interrupt Management\Affinity Policy" /v "DevicePolicy" /t REG_DWORD /d "3" /f
  42.         reg delete "HKLM\System\CurrentControlSet\Enum\%%i\Device Parameters\Interrupt Management\Affinity Policy" /v "AssignmentSetOverride" /f
  43.     )
  44.     for /f %%i in ('wmic path Win32_NetworkAdapter get PNPDeviceID^| findstr /l "PCI\VEN_"') do (
  45.         reg add "HKLM\System\CurrentControlSet\Enum\%%i\Device Parameters\Interrupt Management\Affinity Policy" /v "DevicePolicy" /t REG_DWORD /d "5" /f
  46.         reg delete "HKLM\System\CurrentControlSet\Enum\%%i\Device Parameters\Interrupt Management\Affinity Policy" /v "AssignmentSetOverride" /f
  47.     )
  48. )
  49.  
  50. if !NumberOfLogicalProcessors! gtr !NumberOfCores! (
  51.     :: Enable HyperThreading
  52.     for /f %%i in ('wmic path Win32_USBController get PNPDeviceID^| findstr /l "PCI\VEN_"') do (
  53.         reg add "HKLM\System\CurrentControlSet\Enum\%%i\Device Parameters\Interrupt Management\Affinity Policy" /v "DevicePolicy" /t REG_DWORD /d "4" /f
  54.         reg add "HKLM\System\CurrentControlSet\Enum\%%i\Device Parameters\Interrupt Management\Affinity Policy" /v "AssignmentSetOverride" /t REG_BINARY /d "C0" /f
  55.     )
  56.     for /f %%i in ('wmic path Win32_VideoController get PNPDeviceID^| findstr /l "PCI\VEN_"') do (
  57.         reg add "HKLM\System\CurrentControlSet\Enum\%%i\Device Parameters\Interrupt Management\Affinity Policy" /v "DevicePolicy" /t REG_DWORD /d "4" /f
  58.         reg add "HKLM\System\CurrentControlSet\Enum\%%i\Device Parameters\Interrupt Management\Affinity Policy" /v "AssignmentSetOverride" /t REG_BINARY /d "C0" /f
  59.     )
  60.     for /f %%i in ('wmic path Win32_NetworkAdapter get PNPDeviceID^| findstr /l "PCI\VEN_"') do (
  61.         reg add "HKLM\System\CurrentControlSet\Enum\%%i\Device Parameters\Interrupt Management\Affinity Policy" /v "DevicePolicy" /t REG_DWORD /d "4" /f
  62.         reg add "HKLM\System\CurrentControlSet\Enum\%%i\Device Parameters\Interrupt Management\Affinity Policy" /v "AssignmentSetOverride" /t REG_BINARY /d "30" /f
  63.     )
  64. ) else (
  65.     :: Disable HyperThreading
  66.     for /f %%i in ('wmic path Win32_USBController get PNPDeviceID^| findstr /l "PCI\VEN_"') do (
  67.         reg add "HKLM\System\CurrentControlSet\Enum\%%i\Device Parameters\Interrupt Management\Affinity Policy" /v "DevicePolicy" /t REG_DWORD /d "4" /f
  68.         reg add "HKLM\System\CurrentControlSet\Enum\%%i\Device Parameters\Interrupt Management\Affinity Policy" /v "AssignmentSetOverride" /t REG_BINARY /d "08" /f
  69.     )
  70.     for /f %%i in ('wmic path Win32_VideoController get PNPDeviceID^| findstr /l "PCI\VEN_"') do (
  71.         reg add "HKLM\System\CurrentControlSet\Enum\%%i\Device Parameters\Interrupt Management\Affinity Policy" /v "DevicePolicy" /t REG_DWORD /d "4" /f
  72.         reg add "HKLM\System\CurrentControlSet\Enum\%%i\Device Parameters\Interrupt Management\Affinity Policy" /v "AssignmentSetOverride" /t REG_BINARY /d "02" /f
  73.     )
  74.     for /f %%i in ('wmic path Win32_NetworkAdapter get PNPDeviceID^| findstr /l "PCI\VEN_"') do (
  75.         reg add "HKLM\System\CurrentControlSet\Enum\%%i\Device Parameters\Interrupt Management\Affinity Policy" /v "DevicePolicy" /t REG_DWORD /d "4" /f
  76.         reg add "HKLM\System\CurrentControlSet\Enum\%%i\Device Parameters\Interrupt Management\Affinity Policy" /v "AssignmentSetOverride" /t REG_BINARY /d "04" /f
  77.     )
  78. )
  79.  
  80. :: ─────────────────────────────────────────────────────────────────────────────
  81.  
  82.  
  83.  
  84. :: 🔁 RESTORE DEFAULT VALUES
  85. :: ─────────────────────────────────────────────────────────────────────────────
  86.  
  87. @echo off
  88. setlocal enabledelayedexpansion
  89.  
  90. for /f %%i in ('wmic path Win32_USBController get PNPDeviceID^| findstr /l "PCI\VEN_"') do (
  91.     reg delete "HKLM\System\CurrentControlSet\Enum\%%i\Device Parameters\Interrupt Management\Affinity Policy" /v "DevicePolicy" /f
  92.     reg delete "HKLM\System\CurrentControlSet\Enum\%%i\Device Parameters\Interrupt Management\Affinity Policy" /v "AssignmentSetOverride" /f
  93. )
  94. for /f %%i in ('wmic path Win32_VideoController get PNPDeviceID^| findstr /l "PCI\VEN_"') do (
  95.     reg delete "HKLM\System\CurrentControlSet\Enum\%%i\Device Parameters\Interrupt Management\Affinity Policy" /v "DevicePolicy" /f
  96.     reg delete "HKLM\System\CurrentControlSet\Enum\%%i\Device Parameters\Interrupt Management\Affinity Policy" /v "AssignmentSetOverride" /f
  97. )
  98. for /f %%i in ('wmic path Win32_NetworkAdapter get PNPDeviceID^| findstr /l "PCI\VEN_"') do (
  99.     reg delete "HKLM\System\CurrentControlSet\Enum\%%i\Device Parameters\Interrupt Management\Affinity Policy" /v "DevicePolicy" /f
  100.     reg delete "HKLM\System\CurrentControlSet\Enum\%%i\Device Parameters\Interrupt Management\Affinity Policy" /v "AssignmentSetOverride" /f
  101. )
  102.  
  103. :: ─────────────────────────────────────────────────────────────────────────────
Advertisement
Add Comment
Please, Sign In to add comment