el uso del hyper threading puede afectar el rendimiento en algunos casos ( emuladores) ?

buenas para los expertos les tengo una consulta

nunca ando haciendo tantas pruebas pero tengo un i3 12100 y usando el emu de ps2 pcsx2 en los juegos al usarlo con el ht activado osea 4 cores 8 hilos al uncap los fps me tiraba como unos 300fps

pero al desactivar el ht y dejarlo como 4 cores 4 hilos pues el uncap subia a 330fps

esto es un caso aislado probablemente ?

porque la logica es que 4 cores 8 hilos es mejor que 4 cores 4 hilos

alguna idea del porque este comportamiento con dicho emulador
Porque los emulaores aun suelen usar mas procesamiento monohilo para varias de sus funcionalidades en la emulacion. Asi que no es extraño que se comporte mejor cuando todos los recursos de un nculeo se enfocan en el emulador.

Luego tambien esta el tema de los E-CORE y los P-CORE en estas nuevas generaciones de Intel, los e-core son de bajo poder de computo, miuentras los p-core son para tareas exigentes como seria el emulador.


Como sea, el mismo resultado podfrias obtenerlo con la funcion AFINIDAD y PRIORIDAD, asi en el ADMINISTRADOR DE TAREAS de windows, eliges de la lista al emuolador, boton secundario del raton y en el menu contextual eliges la opcion de AFINIDAD y PRIORIDAD, te apareceran los hilos de los que es capaz de usar el procesador, p.e. un porcesador de 6hilo apareceria CPU0 hasta CPU5, pues bien marcas el CPU0 y CPU1 [estos dos hilos corresponden al mismo nucleo, asi como el cpu2ycpu3 son de otro nucleo] y en prioridad pues eliges el grado de 'atencion' y 'tiempo' que el nucleo debe darle al proceso del programa elegido.

Hilos de un procesadfor de 4 nuclkeos [8 hilos] y asignacion de AFINIDAD
Imagen

Existen programas de terceros que tambien pueden hacer esto de fijar la AFINIDAD [asignar que hilos usara en exclusiva el programa que elegimos] y la PRIORIDAD.
hilo_process-hacker-monitorea-y-administra-los-procesos_2459794
hilo_e-cores-funcionan-en-tareas-de-windows_2493793
hilo_duda-con-hyper-threading_2230095
No te puedo dar una respuesta al 100% cierta porque no se como esta programado por dentro el emulador pcsx2, pero si tuviese que sugerir algo diría que es porque al fin y al cabo los hilos tienen menor rendimiento que un núcleo físico.

Me explico mejor. El Hyper-Threading es una tecnología que permite que un núcleo físico del procesador se comporte como si en vez de uno solo, fuesen dos, pero dos núcleos lógicos, es decir que el sistema operativo cuando tienes Hyper-Threading interpreta que por cada núcleo del procesador, tienes otro mas disponible para asignarle carga. Piensa como si tuvieses una carretera de un único carril, pues el Hyper-Threading lo que hace es meter dos carriles en la misma carretera, por lo tanto pueden pasar mas coches. Si entendemos por coches como las tareas que envía el programa a hacer al procesador, entonces puedes ejecutar en esencia mas tareas en paralelo.

No voy a entrar a nivel técnico como logra esta división en dos núcleos lógicos, pero lo que si te puedo decir es que un núcleo lógico tiene menor rendimiento neto que un núcleo físico, como te he comentado con anterioridad. La ventaja que da Hyper-Threading esta pensada para la multitarea, y teniendo en cuenta que la PS2 tenia un solo núcleo de procesador, el emulador probablemente meta casi toda la carga en un único núcleo lógico, o a lo sumo dos, y el que se encarga de meter tareas en un núcleo lógico no es otro que el sistema operativo, por tanto esta asignación en parte es aleatoria (no lo es, se siguen algoritmos para asignar que tarea va a cada núcleo), al menos el programa no suele saber a que núcleo va a ir la tarea que esta pidiendo realizar.

Vamos a cambiar ahora un poco los nombres, a partir de ahora los núcleos lógicos vamos a llamarlos hilos, y los núcleos físicos, núcleos a secas. Veras que en el administrador de tareas de Windows, con Hyper-Threading puesto tienes 4 núcleos / 8 hilos. Es decir, 4 núcleos físicos y 8 lógicos por esta división en 2 de cada núcleo. Los programas trabajan siempre a nivel de hilo, y por tanto la razón por la que estas perdiendo rendimiento es porque en vez de ser un núcleo físico en su totalidad el que te esté ejecutando el juego, probablemente te esté metiendo la carga en uno o varios hilos diferentes, de ahí esa perdida de rendimiento. Cuando no le das la posibilidad al sistema de usar hilos, que tienen menos rendimiento, desactivando el Hyper-Threading, entonces todo se te ejecuta en un núcleo enteramente para esa carga.

Espero haberme explicado. Un saludo compi [beer]
2 respuestas