multithreading et multicoeurs

Le
Wykaaa
J'ai un Mac 8-core.
Ai-je un moyen d'assigner, en Java, des threads à des processeurs ?
La JVM Sun gère-t-elle "au mieux" ces architecture ?
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Adrien Grand
Le #19567631
Salut,

Wykaaa a écrit :
Ai-je un moyen d'assigner, en Java, des threads à des processeurs ?



Java n'offre pas directement cette possibilité. Il est nécessaire
d'utiliser du code natif (via JNI) si l'on souhaite régler plus finement
l'attribution des threads aux processeurs, il y a un exemple ici (pour
Windows) :
http://1-800-magic.blogspot.com/2008/03/jni-made-simple.html
(Voir la méthode fixThread.)

Pourquoi as tu besoin d'assigner des threads à des processeurs précis
(simple curiosité) ?

La JVM Sun gère-t-elle "au mieux" ces architecture ?



Les versions récentes des JVMs de Sun utilisent des threads natifs (par
opposition aux green threads,
http://en.wikipedia.org/wiki/Green_threads) donc la responsabilité de la
gestion des threads est laissée à l'OS. Concernant la garbage collector,
il peut être intéressant de modifier certains paramètres, notamment
augmenter la taille allouée à la jeune génération car les collections
majeures ne sont pas parallélisées (cf.
http://java.sun.com/docs/hotspot/gc/, en particulier « Be sure to
increase the young generation as you increase the number of processors,
since allocation can be parallelized, but GC is not parallel. »).

--
jpountz
Wykaaa
Le #19568561
Adrien Grand a écrit :
Salut,

Wykaaa a écrit :
Ai-je un moyen d'assigner, en Java, des threads à des processeurs ?



Java n'offre pas directement cette possibilité. Il est nécessaire
d'utiliser du code natif (via JNI) si l'on souhaite régler plus finement
l'attribution des threads aux processeurs, il y a un exemple ici (pour
Windows) :
http://1-800-magic.blogspot.com/2008/03/jni-made-simple.html
(Voir la méthode fixThread.)

Pourquoi as tu besoin d'assigner des threads à des processeurs précis
(simple curiosité) ?

La JVM Sun gère-t-elle "au mieux" ces architecture ?



Les versions récentes des JVMs de Sun utilisent des threads natifs (par
opposition aux green threads,
http://en.wikipedia.org/wiki/Green_threads) donc la responsabilité de la
gestion des threads est laissée à l'OS. Concernant la garbage collector,
il peut être intéressant de modifier certains paramètres, notamment
augmenter la taille allouée à la jeune génération car les collections
majeures ne sont pas parallélisées (cf.
http://java.sun.com/docs/hotspot/gc/, en particulier « Be sure to
increase the young generation as you increase the number of processors,
since allocation can be parallelized, but GC is not parallel. »).



Merci pour ta réponse.

Je fais de la synthèse granulaire (audio) et, dans mon approche, à
partir du moment où j'ai déterminé le "macro processus", je sais
paralléliser beaucoup de choses. Je veux être sûr que les processeurs
sont employés au mieux car les calculs sont très longs (synthèse
additive de "grains de Gabor" de 0,025 seconde chacun).
J'ai un Mac Pro 8-cores et 10 Go de RAM.
Publicité
Poster une réponse
Anonyme