有人知道如何在 AMD 5950x 上设置处理器亲和性吗?我想让它只使用 8 个核心,但日志里出现了这个错误。
2025-06-11T13:09:52 MCEBuddy.AppWrapper.Base → 设置 CPU 亲和性为 → -16711936
WARNING> 2025-06-11T13:09:52 MCEBuddy.AppWrapper.Base → 尝试设置进程优先级或 CPU 亲和性失败 → -16711936
System.ComponentModel.Win32Exception (0x80004005): 参数不正确
at System.Diagnostics.Process.set_ProcessorAffinity(IntPtr value)
at MCEBuddy.AppWrapper.Base.Run()
Goose
(Goose)
2025年六月11日 21:27
3
也请截取一张 MCEBuddy 中 CPU 亲和性设置页面的截图,以便我们查看你试图使用哪个核心。
Goose
(Goose)
2025年六月12日 00:41
5
尝试将其限制为仅使用前16种的组合(取消勾选17-32),看看错误是否消失。
看起來可以運作。
2025-06-12T06:31:14 MCEBuddy.AppWrapper.Base → 正在將 CPU 親和性設定為 → 255
Goose
(Goose)
2025年六月12日 18:38
7
我们正在试图搞清楚发生了什么,是代码的问题,还是新 AMD 处理器对逻辑核心的处理方式不同。
请你试试这个:在“处理器管理”页面里,选中 CPU 1 到 17(即第一行的全部 16 个,再加上第二行的第 1 个)。然后运行一次转码,并把日志里看到的内容告诉我。谢谢。
我透過每次增加一顆 CPU 來進行了幾次測試。這是我看到的結果:
17 CPU affinity to → 131071
18 CPU Affinity to → 262143
19 CPU affinity to → 524287
20 CPU affinity to → 1048575
21 CPU affinity to → 2097151
22 CPU affinity to → 4194303
23 CPU affinity to → 8388607
24 CPU affinity to → 16777215
25 CPU affinity to → 33554431
26 CPU affinity to → 67108863
27 CPU affinity to → 134217727
28 CPU affinity to → 268435455
29 CPU affinity to → 536870911
30 CPU affinity to → 1073741823
31 CPU affinity to → 2147483647
32 必須移除對 1 的檢查,否則無法全選,然後我得到:
Setting CPU affinity to → -2
WARNING> 2025-06-12T16:18:56 MCEBuddy.AppWrapper.Base → Error trying process priority or setting CPU affinity to → -2
Goose
(Goose)
2025年六月18日 16:18
10
我們這邊再次核對過,程式碼完全符合規格,但看起來 Windows 在處理您的第 32 個邏輯核心時出了問題。我們正在釐清這是 Windows 的錯誤,還是系統組態導致的問題。
請您協助確認以下幾點:
在 Windows 工作管理員中,是否顯示全部 32 個執行緒/邏輯處理器?
在 BIOS 設定中,是否已啟用全部 32 個?
Goose
(Goose)
2025年六月18日 18:06
11
我们有一个理论,但需要您的协助来测试。请您再试一次,这涉及手动编辑配置文件,因此步骤顺序很重要。
点击 MCEBuddy 中的“停止”按钮,确保引擎已停止(引擎停止后,只有“开始”按钮应可用)。
打开 mcebuddy.conf 文件,找到 CPUAffinity 这一行。
将其改为 CPUAffinity=-1
保存文件并关闭。
点击 MCEBuddy 中的“开始”按钮。
点击“添加”按钮并运行一次转换(无需完成,只需运行几步,大约 20–30 秒)。
如果方便,请重复上述步骤,但将值改为 CPUAffinity=-2147483648
检查日志文件,并将您看到的内容贴回来。
是的,它顯示 32,而且 BIOS 中所有項目都已啟用。
以下是结果:
将CPU亲和性设置为 → -1
2025-06-18T16:56:41 MCEBuddy.AppWrapper.Base → 将CPU亲和性设置为 → -2147483648
警告> 2025-06-18T16:56:41 MCEBuddy.AppWrapper.Base → 尝试设置进程优先级或CPU亲和性时出错 → -2147483648
System.ComponentModel.Win32Exception (0x80004005): 参数不正确
在 System.Diagnostics.Process.set_ProcessorAffinity(IntPtr value)
在 MCEBuddy.AppWrapper.Base.Run()
Goose
(Goose)
2025年六月18日 21:43
14
谢谢。看起来有两种可能的情况:
Windows(软件 API)存在 bug,导致 MCEBuddy 无法启用/禁用第 32 个核心线程
系统/主板/BIOS 配置存在问题,导致 Windows 无法识别或管理第 32 个核心线程
目前第 1–31 个核心线程似乎运行正常。
你能在任务管理器里看到第 32 个核心线程吗?你能在任务管理器里单独为某个进程勾选第 32 个核心线程吗?
不确定这是否有帮助,但我用 PowerShell 查看了亲和度,然后在任务管理器里关掉了第 32 个进程。结果如下:
全部 32 个:
PS E:\plex> .\get_proc.ps1
Processor Affinity for Notepad: 4294967295
前 31 个:
PS E:\plex> .\get_proc.ps1
Processor Affinity for Notepad: 2147483647
PS E:\plex>
Goose
(Goose)
2025年六月19日 17:31
17
這是個非常有用的腳本,不過我假設你執行的是 64 位元 Windows,所以測試的 notepad 是以 64 位元模式執行。問題在於 MCEBuddy 的某些元件為了相容性會以 32 位元(WOW64)執行,而問題似乎就是從這裡來的。
能否請你用自己的測試腳本,改以 WOW64 模式下的 32 位元程式再跑一次?
你可以從 %windir%\SysWOW64\notepad.exe 啟動 WOW64 的 32 位元 notepad。
若你在 32 位元 WOW64 環境下也能得到相同結果,就能確認問題的根本原因。
看起来那个版本的记事本在任务管理器中仍然显示为 x64。我确实使用了显示为 x86 的 MobaXterm,它显示的值相同:
PS E:\plex> .\get_proc.ps1
记事本的处理器亲和性:4294967295
PS E:\plex> .\get_proc.ps1
记事本的处理器亲和性:2147483647
Goose
(Goose)
2025年六月19日 22:05
19
完美,謝謝,這似乎是 Windows .NET API 的錯誤。讓我們看看能否找到解決方法。
Goose
(Goose)
2025年六月20日 05:08
20
好的,我們已經有了解決方案並修復了設定問題。請嘗試今天的 2.6.6 beta 版本。您需要回到設定中重新驗證您的處理器設定並重新儲存,變更才會生效。
在此版本中,您可以選擇最多 64 個邏輯核心/執行緒(64 位元系統為 64 個,32 位元系統為 32 個)。
請試著選擇第 32 個處理器(所有處理器或僅第 32 個),然後再試一次不選第 32 個,看看結果如何。
歡迎在此張貼日誌(成功或失敗的都可以),以便我們與預期結果進行比對。