Bones,
he enviat aquest missatge a la llista de caliu però ha tingut poc
èxit... Us explico, probablement és un correu fora de tema, però m'agradaria preguntar aquí perquè potser alguns de vosaltres em podrien guiar.
Estic treballant amb alguns científics per avaluar alguns programes que calculen una solució per a un problema. Bàsicament fan una instància de ILOG CPLEX i obtenen el temps utilitzat per calcular la solució o fan
servir alguna heurística.
Utilitzem un servidor per fer els càlculs, i hem trobat (òbviament) variacions significatives que depenen de la càrrega de la màquina. El
què voler obtenir és un tipus de mesura independent de la càrrega del servidor.
Un enfocament ha estat utilitzar el temps de CPU. En el nostre cas, el
nombre total dels segons de CPU que el procés utilitza directament (en
mode d'usuari). No estem parlant del temps real transcorregut (wall
clock) que òbviament és directament està afectat per la càrrega de la màquina.
No obstant això, hem realitzat diverses proves i hem descobert que té
una variació al voltant del 10% (depenent de la càrrega). També hem avaluat el temps de CPU en mode kernel i també com hi ha un canvi de
context perquè l'aplicació no s'executa. Però, sincerament no hem
obtingut una idea clara del que està passant.
Una altra qüestió que hem trobat és com pot afectar el nombre de nuclis.
o CPUs físiques al servidor.
Algú de vosaltres ha trobat aquests problemes i els ha resolt?
Salutacions,
Leopold
Aquí hi ha diferents de codi per mesurar temps d'us de cpu (cpu time) i
el temps total (wall time). A tu t'interessa el cpu time:
https://levelup.gitconnected.com/8-ways-to-measure-execution-time-in-c-c-48634458d0f9
Bones,
he enviat aquest missatge a la llista de caliu però ha tingut poc
èxit... Us explico, probablement és un correu fora de tema, però m'agradaria preguntar aquí perquè potser alguns de vosaltres em podrien guiar.
Estic treballant amb alguns científics per avaluar alguns programes que calculen una solució per a un problema. Bàsicament fan una instància de ILOG CPLEX i obtenen el temps utilitzat per calcular la solució o fan
servir alguna heurística.
Utilitzem un servidor per fer els càlculs, i hem trobat (òbviament) variacions significatives que depenen de la càrrega de la màquina. El
què voler obtenir és un tipus de mesura independent de la càrrega del servidor.
Un enfocament ha estat utilitzar el temps de CPU. En el nostre cas, el
nombre total dels segons de CPU que el procés utilitza directament (en
mode d'usuari). No estem parlant del temps real transcorregut (wall
clock) que òbviament és directament està afectat per la càrrega de la màquina.
No obstant això, hem realitzat diverses proves i hem descobert que té
una variació al voltant del 10% (depenent de la càrrega). També hem avaluat el temps de CPU en mode kernel i també com hi ha un canvi de
context perquè l'aplicació no s'executa. Però, sincerament no hem
obtingut una idea clara del que està passant.
Una altra qüestió que hem trobat és com pot afectar el nombre de nuclis.
o CPUs físiques al servidor.
Algú de vosaltres ha trobat aquests problemes i els ha resolt?
Salutacions,
Leopold
Hola, Leo,
Has aportat una pregunta molt interessant. Si més no m'hi has fet rumiar
una bona estona.
Podria ser que la causa de les variacions sigui la temperatura?
Els nuclis dels processadors redueixen la freqüència dels nuclis quan la temperatura baixa.
https://www.pugetsystems.com/labs/articles/Impact-of-Temperature-on-Intel-CPU-Performance-606/
<https://www.pugetsystems.com/labs/articles/Impact-of-Temperature-on-Intel-CPU-Performance-606/>
El Wed, Jun 02, 2021 at 08:13:46AM +0200, Leopold Palomo-Avellaneda deia:
El 1/6/21 a les 23:00, Àlex ha escrit:
Aquí hi ha diferents de codi per mesurar temps d'us de cpu (cpu time) i >>> el temps total (wall time). A tu t'interessa el cpu time:Genial!!!
https://levelup.gitconnected.com/8-ways-to-measure-execution-time-in-c-c-48634458d0f9
Però és una passada perquè el CPU time hauria de ser més o menys constant i
no ho és. Nosaltres hem trobat variacions de fins al un 10%.
Leo
Jo no hi entenc però és que no veig perquè la CPU hauria de ser
constant. Si agafes un model de processador com el que feiem a primer
de carrera a Computadors potser sí. Però amb les complicacions que
tenen les CPUs actuals ja és molt si aconsegueixen que els resultats
siguin deterministes. Que el temps sigui determinista en condicions
diferents és demanar molt.
Algú ha parlat de temperatura, i sí, els processadors poden baixar la[...]
Quan l'ordinador té diferents processadors i cada processador
diferents nuclis, també pots tenir més rendiment si tots els
processos/fils de la teva aplicació acaben a nuclis del mateix
processador i comparteixen alguna cache o tenen rutes més curtes per comunicar-se. Si al sistema hi ha molts processos potser el linux no aconsegueix distribuir els teus tan òptimament. Fulleja per aquí per
una idea del merder que representa https://blog.acolyer.org/2016/04/26/the-linux-scheduler-a-decade-of-wasted-cores/
Has mirat perf ?
https://perf.wiki.kernel.org/index.php/Tutorial
El 2/6/21 a les 10:19, Narcis Garcia ha escrit:
Per a controlar tot allò que afecta a la CPU, crec que el millor és
virtualitzar. Fins i tot és possible separar la màquina virtual de l'ús >> directe del maquinari real.
no ho crec. Jo voldria poder fer servir tota la capacitat de la màquina,
no voldria una capa de virtualització.
Leo
__________
I'm using this dedicated address because personal addresses aren't
masked enough at this mail public archive. Public archive administrator should fix this against automated addresses collectors.
El 2/6/21 a les 20:21, Leopold Palomo-Avellaneda ha escrit:
El 2/6/21 a les 10:19, Narcis Garcia ha escrit:
Per a controlar tot allò que afecta a la CPU, crec que el millor és
virtualitzar. Fins i tot és possible separar la màquina virtual de l'ús >>> directe del maquinari real.
no ho crec. Jo voldria poder fer servir tota la capacitat de la màquina,
no voldria una capa de virtualització.
Leo
El teu objectiu és executar ràpid o bé mesurar el cost d'un procés per a planificar execucions futures?
És la única manera que veig de controlar una CPU.
Tota la resta és creuar dits i esperar que la primera, segona, tercera,
etc. execucions vagin igual en maquinari real.
És la diferència entre fer una mesura a l'aire lliure o en condicions de laboratori.
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 296 |
Nodes: | 16 (2 / 14) |
Uptime: | 60:41:54 |
Calls: | 6,654 |
Calls today: | 6 |
Files: | 12,200 |
Messages: | 5,331,394 |