Problema al configurar la afinidad del procesador

¿Alguien sabe cómo establecer la afinidad del procesador con AMD 5950x? Estoy intentando configurarlo para que use solo 8 núcleos, pero obtengo este error en los registros.

2025-06-11T13:09:52 MCEBuddy.AppWrapper.Base → Setting CPU affinity to → -16711936
WARNING> 2025-06-11T13:09:52 MCEBuddy.AppWrapper.Base → Error trying process priority or setting CPU affinity to → -16711936
System.ComponentModel.Win32Exception (0x80004005): The parameter is incorrect
at System.Diagnostics.Process.set_ProcessorAffinity(IntPtr value)
at MCEBuddy.AppWrapper.Base.Run()

¿Asumiendo que tienes 16 núcleos? ¿Puedes adjuntar el archivo de registro de conversión?

¿Podrías también tomar una captura de pantalla de la página de configuración de afinidad de CPU en MCEBuddy para que podamos ver qué núcleo estás intentando usar?

Tiene 16 núcleos y 32 hilos. He estado probando diferentes patrones y la mayoría muestra el error.
image

Criminal Minds - S17E05 - Conspiracy vs Theory.mkv-Process TV Shows-2025-06-11T17-39-34.log (1.1 MB)

Intenta limitarlo solo a una combinación de los primeros 16 (deja sin marcar del 17 al 32) y verifica si el error desaparece.

Eso parece funcionar.

2025-06-12T06:31:14 MCEBuddy.AppWrapper.Base → Estableciendo afinidad de CPU a → 255

Estamos intentando averiguar qué está pasando, si es un problema con el código o con cómo se tratan los procesadores lógicos con los nuevos procesadores AMD.

¿Podrías probar esto? En tu página de Administración de Procesador, selecciona las CPUs del 1 al 17 (las 16 de la primera fila y la primera de la segunda fila). Luego ejecuta una conversión y dime qué ves en los registros. Gracias.

Algo así hice varias pruebas añadiendo un CPU cada vez. Esto es lo que observé:

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 tuve que quitar la verificación de 1, ya que no me permitía marcar todos; entonces obtuve:
Setting CPU affinity to → -2
WARNING> 2025-06-12T16:18:56 MCEBuddy.AppWrapper.Base → Error trying process priority or setting CPU affinity to → -2

Increíble. Eso es muy útil.

Hemos revisado todo aquí y el código cumple con las especificaciones, pero parece que Windows está teniendo problemas con tu núcleo lógico número 32. Estamos intentando averiguar si se trata de un error de Windows o de algo en la configuración del sistema que está causando el problema.

¿Puedes comprobar algunas cosas?

  1. En el Administrador de tareas de Windows, ¿se muestran los 32 hilos/procesadores lógicos?
  2. En la configuración del BIOS, ¿están habilitados los 32?

Tenemos una teoría pero necesitamos tu ayuda para probar algo. ¿Podrías intentar una cosa más? Implica editar manualmente el archivo de configuración, así que el orden de los pasos es importante.

  1. Haz clic en el botón Detener en MCEBuddy y asegúrate de que esté detenido antes de continuar (solo el botón Iniciar debe estar disponible una vez que el motor se haya detenido).
  2. Abre el archivo mcebuddy.conf y busca la línea CPUAffinity
  3. Cámbiala a CPUAffinity=-1
  4. Guarda el archivo y ciérralo
  5. Haz clic en el botón Iniciar en MCEBuddy
  6. Ahora haz clic en el botón Agregar y ejecuta una conversión (no tiene que completarse, solo déjala correr unos pasos durante unos 20-30 segundos)

Si es posible, ¿podrías repetir los pasos anteriores pero con CPUAffinity=-2147483648?

Revisa los archivos de registro y publica lo que veas allí.

Sí, muestra 32 y el BIOS tiene todo habilitado.

Aquí están los resultados:

Setting CPU affinity to → -1

2025-06-18T16:56:41 MCEBuddy.AppWrapper.Base → Setting CPU affinity to → -2147483648
WARNING> 2025-06-18T16:56:41 MCEBuddy.AppWrapper.Base → Error trying process priority or setting CPU affinity to → -2147483648
System.ComponentModel.Win32Exception (0x80004005): El parámetro es incorrecto
at System.Diagnostics.Process.set_ProcessorAffinity(IntPtr value)
at MCEBuddy.AppWrapper.Base.Run()

Gracias. Entonces parece que están sucediendo una de 2 cosas:

  1. Windows (las API del software) tiene un error, no permite que MCEBuddy active/desactive el hilo del núcleo 32
  2. La configuración del sistema/placa/BIOS tiene un problema donde Windows no reconoce el hilo del núcleo 32 o no puede gestionarlo

Parece estar funcionando para los hilos del núcleo 1-31.

¿Puedes ver el hilo del núcleo 32 en el administrador de tareas? ¿Puedes seleccionar solo el hilo del núcleo 32 en el administrador de tareas para cualquier proceso a través del administrador de tareas?

Una prueba rápida para ver dónde puede estar el problema en unos pocos pasos:

  1. Inicia la interfaz gráfica de MCEBuddy (aplicación) y mantenla abierta
  2. Abre un símbolo del sistema yendo a Ejecutar e iniciando/escribiendo cmd.exe
  3. En la línea de comandos, escribe
    powershell.exe "Get-Process MCEBuddy.GUI | Select-Object ProcessorAffinity"
  4. Eso debería dar la máscara de procesador predeterminada asignada, dime cuál es
  5. Ahora escribe
    powershell.exe "$proc = Get-Process MCEBuddy.GUI; $proc.ProcessorAffinity = 0x80000000"
  6. Esto debería forzar que la interfaz gráfica de MCEBuddy se asigne al núcleo/hilo 32. Si tiene éxito no habrá error y ahora sabremos que el núcleo/hilo 32 puede de hecho usarse y no hay problema con la configuración del sistema/placa/BIOS. Si ves un error (dime cuál es), entonces probablemente sea un problema de la API de Windows.

No estoy seguro de si esto ayuda, pero usé PowerShell para mostrar la afinidad y luego eliminé el proceso 32 desde el administrador de tareas. Esto es lo que mostró:
todos los 32:
PS E:\plex> .\get_proc.ps1
Processor Affinity for Notepad: 4294967295
primeros 31:
PS E:\plex> .\get_proc.ps1
Processor Affinity for Notepad: 2147483647
PS E:\plex>

Ese es un script muy útil, sin embargo, asumo que estás ejecutando Windows de 64 bits, por lo que tu prueba de Notepad se ejecutó en modo de 64 bits. El problema aquí es que algunos de los componentes de MCEBuddy se ejecutan en 32 bits (WOW64) por razones de compatibilidad, y de ahí parece provenir el problema.

¿Podrías volver a hacer tu propio script de prueba, pero con un programa de 32 bits en modo WOW64?

Puedes iniciar un Notepad de 32 bits en WOW64 desde %windir%\\SysWOW64\\notepad.exe

Si puedes obtener los mismos resultados mientras se ejecuta en 32 bits WOW64, eso confirmaría la causa raíz probable del problema.

Parece que esa versión del notepad todavía aparece como x64 en el administrador de tareas. Usé mobaxterm que aparece como x86 y muestra los mismos valores:

PS E:\plex> .\get_proc.ps1
Processor Affinity for Notepad: 4294967295
PS E:\plex> .\get_proc.ps1
Processor Affinity for Notepad: 2147483647

Perfecto, gracias, parece ser un error con las API de .NET de Windows. Veamos si podemos encontrar una solución alternativa para ello.

Ok, tenemos una solución alternativa y una corrección para la configuración. Prueba la versión beta 2.6.6 de hoy. Necesitarás volver a la configuración, reverificar la configuración de tu procesador y volver a guardarla para que los cambios surtan efecto.

Con esta versión puedes seleccionar hasta 64 núcleos/hilos lógicos (para sistemas de 64 bits y 32 para sistemas de 32 bits).

¿Puedes intentar seleccionar el procesador número 32 (todos los procesadores o solo el número 32) y luego sin el número 32 y ver cómo funciona?

No dudes en publicar aquí los registros (éxitos y fallos) para que podamos compararlos con nuestros resultados esperados.