Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Performances mauvaises avec un BI-Xeon Core-duo

8 réponses
Avatar
octane
Bonjour,

j'ai une machine Bi-CPU, core duo:
vendor_id : GenuineIntel
cpu family : 15
model : 4
model name : Intel(R) Xeon(TM) CPU 2.80GHz
stepping : 8
cpu MHz : 2800.125
cache size : 2048 KB

Donc 4 CPU visibles du systeme.

J'ai des performances absolument decevantes des que je met en jeu le
multipro.

Je teste un calcul monoprocesseur, ca prend 20mn.
Je lance le meme calcul deux fois. Je vois bien 2 CPU sur les quatres
qui travaillent, mais le temps de calcul dure 35mn!! Les deux calculs
sont independants, ils travaillent chacun sur un CPU (sur deux core du
meme CPU ou sur deux CPU different, c'est pareil). Si je lance 4 fois
le calcul, chaque calcul dure 50mn!

Qu'est ce qui peut expliquer ca?

J'ai aussi des questions sur l'archi de ces Xeon core duo.
Le cache size est il partage entre chaque core, ou est il distinct?
L'acces a la RAM est il partage ou est il dedie?

Merci

8 réponses

Avatar
PC
a écrit dans le message de
news:
Bonjour,

j'ai une machine Bi-CPU, core duo:
vendor_id : GenuineIntel
cpu family : 15
model : 4
model name : Intel(R) Xeon(TM) CPU 2.80GHz
stepping : 8
cpu MHz : 2800.125
cache size : 2048 KB

Donc 4 CPU visibles du systeme.

J'ai des performances absolument decevantes des que je met en jeu le
multipro.

Je teste un calcul monoprocesseur, ca prend 20mn.
Je lance le meme calcul deux fois. Je vois bien 2 CPU sur les quatres
qui travaillent, mais le temps de calcul dure 35mn!! Les deux calculs
sont independants, ils travaillent chacun sur un CPU (sur deux core du
meme CPU ou sur deux CPU different, c'est pareil). Si je lance 4 fois
le calcul, chaque calcul dure 50mn!

Qu'est ce qui peut expliquer ca?

J'ai aussi des questions sur l'archi de ces Xeon core duo.
Le cache size est il partage entre chaque core, ou est il distinct?
L'acces a la RAM est il partage ou est il dedie?

Merci


Salut,

Je me rappelle quand je bossais dans une boite de développement que les
ingés avaient beaucoup de difficultés à adapter un logiciel écrit pour
monoprocesseur à du multi. Il leur fallait reécrire des bouts de softs,
utiliser des librairies différentes et recompiler le tout. Comme je n'étais
pas développeur mais électronicien, je n'en sais pas plus.
Toujours est-il qu'il arrivait fréquement qu'un soft tourne moins bien en
multi qu'en mono.
Tout cela me semblait être une mauvaise gestion du partage des calculs
entre les procs et bien d'autres raisons ( mise en commun des ressources)
qui m'échappent maintenant.
Il y des softs qui utilisent correctement le multi, c'est généralement
expliqué dans les docs.
Je me rappelle qu'avec des machines comme les silicon graphics par exemple,
quand le soft n'était pas adapté, on préférait lancer des bouts de calcul
sur chaque proc et reconstituer le tout à la fin, plutôt que de balancer
tout en multi.
Ce n'est pas une explication, mais cela confirme tes tests.

Philippe camus

Avatar
octane

Ce n'est pas une explication, mais cela confirme tes tests.

Bin oui, mais la je ne lance pas de calcul multipro, mais 4x un calcul

monopro.
Si j'ai 4 CPU, le temps de chaque calcul doit etre identique que je
lance un, deux, trois ou quatre calculs. Si j'en lance 5, la, ca doit
commencer a decroitre.
Mais comment expliquer que lancer deux calculs monopro sur une machine
multipro augmente a ce point le temps de chaque calcul?

Avatar
milsabords
wrote:

Ce n'est pas une explication, mais cela confirme tes tests.

Bin oui, mais la je ne lance pas de calcul multipro, mais 4x un calcul

monopro.
Si j'ai 4 CPU, le temps de chaque calcul doit etre identique que je
lance un, deux, trois ou quatre calculs. Si j'en lance 5, la, ca doit
commencer a decroitre.
Mais comment expliquer que lancer deux calculs monopro sur une machine
multipro augmente a ce point le temps de chaque calcul?


Le programme utilise-t-il des fichiers? Ca peut être une source de
contention si plusieurs instances du programme accèdent aux mêmes disques et
aux mêmes données.

La mémoire est elle suffisante? Y a-t-il du paging?

As tu observé ce qui se passe, avec un outil comme Process Explorer
(www.sysinternals.com)?


Avatar
Sylvain Collange
wrote:
j'ai une machine Bi-CPU, core duo:
vendor_id : GenuineIntel
cpu family : 15
model : 4
model name : Intel(R) Xeon(TM) CPU 2.80GHz
stepping : 8
cpu MHz : 2800.125
cache size : 2048 KB


Mmmh, 2,8GHz avec 2Mo de cache (par CPU?) en F-4-8, c'est plutôt un Xeon
DP, stepping A0. Microarchitecture NetBurst comme les Pentium 4 et rien
a voire avec le Core Duo.

(quelle idée d'avoir choisi un nom pareil pour un processeur aussi...)


Donc 4 CPU visibles du systeme.


L'hyperthreading n'est pas activé? Ça devrait faire 8 processeurs sinon...

J'ai des performances absolument decevantes des que je met en jeu le
multipro.

Je teste un calcul monoprocesseur, ca prend 20mn.
Je lance le meme calcul deux fois. Je vois bien 2 CPU sur les quatres
qui travaillent, mais le temps de calcul dure 35mn!!


Bah ça me parait déjà pas mal, ça met moins de 40mn en tout cas.

Les deux calculs
sont independants, ils travaillent chacun sur un CPU (sur deux core du
meme CPU ou sur deux CPU different, c'est pareil). Si je lance 4 fois
le calcul, chaque calcul dure 50mn!

Qu'est ce qui peut expliquer ca?


Si le calcul est déjà limité par le débit mémoire (ou disque ou
réseau...), rajouter plus de processeurs n'avancera pas à grand-chose.

Quelle sorte de calcul est-ce?

J'ai aussi des questions sur l'archi de ces Xeon core duo.
Le cache size est il partage entre chaque core, ou est il distinct?


Comme ce n'est pas un Xeon Core Duo, le cache est distinct à chaque
core. En fait c'est simplement deux processeurs juxtaposés dans la même
puce et reliés au même bus. Ça a des inconvénients par rapport à une
archi comme l'Opteron ou le Core 2 Duo, mais ça revient nettement moins
cher à fabriquer...

L'acces a la RAM est il partage ou est il dedie?


Partagé, c'est du SMP (symmetric multiprocessing).

Avec les Opteron c'est du NUMA (non-uniform memory access) où chaque
processeur possède une partie de la mémoire, qu'il peut partager avec
les autres processeurs. Les deux approches ont leurs avantages et leurs
inconvénients.


--
Sylvain

Avatar
PC
a écrit dans le message de
news:

Ce n'est pas une explication, mais cela confirme tes tests.

Bin oui, mais la je ne lance pas de calcul multipro, mais 4x un calcul

monopro.
Si j'ai 4 CPU, le temps de chaque calcul doit etre identique que je
lance un, deux, trois ou quatre calculs. Si j'en lance 5, la, ca doit
commencer a decroitre.
Mais comment expliquer que lancer deux calculs monopro sur une machine
multipro augmente a ce point le temps de chaque calcul?


------------------------
S'cuse, j'avais pas compris.

Philippe Camus

Avatar
Etienne SOBOLE
essaye povray.

Tu seras vite fixé...
c'est gratuit et ca fonctionne tres bien en multiproc

Moi j'ai un bi opteron dual core... et ca va 3.7 fois plus vite.

a+
Etienne

a écrit dans le message de news:


Ce n'est pas une explication, mais cela confirme tes tests.

Bin oui, mais la je ne lance pas de calcul multipro, mais 4x un calcul

monopro.
Si j'ai 4 CPU, le temps de chaque calcul doit etre identique que je
lance un, deux, trois ou quatre calculs. Si j'en lance 5, la, ca doit
commencer a decroitre.
Mais comment expliquer que lancer deux calculs monopro sur une machine
multipro augmente a ce point le temps de chaque calcul?

Avatar
octane
j'ai une machine Bi-CPU, core duo:
vendor_id : GenuineIntel
cpu family : 15
model : 4
model name : Intel(R) Xeon(TM) CPU 2.80GHz
stepping : 8
cpu MHz : 2800.125
cache size : 2048 KB


Mmmh, 2,8GHz avec 2Mo de cache (par CPU?) en F-4-8, c'est plutôt un Xeon
DP, stepping A0. Microarchitecture NetBurst comme les Pentium 4 et rien
a voire avec le Core Duo.

(quelle idée d'avoir choisi un nom pareil pour un processeur aussi...)


Donc 4 CPU visibles du systeme.


L'hyperthreading n'est pas activé?


non.

Ça devrait faire 8 processeurs sinon...

J'ai des performances absolument decevantes des que je met en jeu le
multipro.

Je teste un calcul monoprocesseur, ca prend 20mn.
Je lance le meme calcul deux fois. Je vois bien 2 CPU sur les quatres
qui travaillent, mais le temps de calcul dure 35mn!!


Bah ça me parait déjà pas mal, ça met moins de 40mn en tout cas.

Ca parait tout de meme enorme ?


Les deux calculs
sont independants, ils travaillent chacun sur un CPU (sur deux core du
meme CPU ou sur deux CPU different, c'est pareil). Si je lance 4 fois
le calcul, chaque calcul dure 50mn!

Qu'est ce qui peut expliquer ca?


Si le calcul est déjà limité par le débit mémoire (ou disque ou
réseau...),


disque: non. J'ai teste sur un disque local, sur un disque nfs plus
rapide, et dans un ramdisk: c'est identique.

rajouter plus de processeurs n'avancera pas à grand-chose.

Quelle sorte de calcul est-ce?

La je teste des inversions de matrice (3000x3000 par exemple)


L'acces a la RAM est il partage ou est il dedie?


Partagé, c'est du SMP (symmetric multiprocessing).

Avec les Opteron c'est du NUMA (non-uniform memory access) où chaque
processeur possède une partie de la mémoire, qu'il peut partager avec
les autres processeurs. Les deux approches ont leurs avantages et leurs
inconvénients.

L'approche numa ca m'interesse, qu'est ce donc? J'ai vu passer l'outil

numactl sous linux qui semble jouer la dessus. Quels sont les avantages
et le inconvenients?
Merci


Avatar
Sylvain Collange
wrote:
La je teste des inversions de matrice (3000x3000 par exemple)


Donc ce n'est quasiment que du transfert mémoire, vu que les matrices ne
tiennent pas en cache (en supposant que tu utilises un algo "bête" et
pas optimisé pour tenir compte des caches).
Pour ce type de calcul, les processeurs ne travaillent quasiment pas,
ils passent leur temps à attendre que les données arrivent de la
mémoire, en faisant juste une opération de temps en temps...

L'approche numa ca m'interesse, qu'est ce donc? J'ai vu passer l'outil
numactl sous linux qui semble jouer la dessus. Quels sont les avantages
et le inconvenients?


Avantage : quand chaque processeur travaille sur son propre jeu de
données dans sa mémoire locale, il ne se ralentissent pas mutuellement.

Inconvénient : quand un processeur à besoin d'accéder à la mémoire d'un
autre, ça ajoute une latence supplémentaire et éventuellement une baisse
de débit.

Aussi, le maintien de la cohérence des caches est (encore) plus coûteux
qu'en SMP, en particulier quand plusieurs CPU accèdent à la même donnée
alternativement.

Donc ça marche très bien pour les serveurs, mais pas forcément aussi
bien pour le calcul scientifique.

La grosse difficulté en NUMA, c'est pour le système d'exploitation qui
doit décider sur quel noeud il faut allouer la mémoire. S'il se trompe
et que les processeurs se retrouvent tous à taper dans la mémoire de
leur voisin, les performances ne seront pas au top...
D'où les outils comme numactl, qui permettent de l'aider un peu.


--
Sylvain