2009-09-19 16 views
5

avecComment obtenir l'horloge CPU max en Java

Runtime.getRuntime().availableProcessors(); 

je peux obtenir le nombre de CPU disponibles. Mais comment puis-je obtenir leur fréquence d'horloge?

Je cherchais une solution os-indipendent.

+0

Ceci est spécifique au système d'exploitation. Quel système d'exploitation utilisez-vous? –

+0

Il n'existe probablement que des solutions spécifiques aux plates-formes (lisez/proc/cpuinfo?). Mais en général - ce n'est plus facile de dire la fréquence ... voulez-vous dire la fréquence actuelle? ou la fréquence maximale? et qu'en est-il des machines virtuelles non limitées partageant un hôte avec un maximum de 4 GHz? (4 hôtes ont 4GHz, ou 1GHz chacun? ou peut-être la valeur d'inactivité actuelle de 80MHz) – viraptor

+0

Je ne sais pas ce que vous voulez utiliser cette information, mais notez que la fréquence d'horloge ne correspond pas à la vitesse du processeur peut faire des calculs. Un Pentium 4 3 GHz par exemple est plus lent qu'un Core 2 Duo 2,4 GHz. – Jesper

Répondre

6

Aucune fonctionnalité disponible dans le Java SE API ne retourne la fréquence de la CPU.

En outre, la méthode Runtime.availableProcessors renvoie le nombre de processeurs disponibles sur la machine virtuelle Java au moment de l'appel de la méthode. Elle ne renvoie donc pas nécessairement le nombre de processeurs réels dans un système.

de l'API Java Specification pour la méthode Runtime.availableProcessors:

Renvoie le nombre de processeurs disponibles à la machine virtuelle Java.

Cette valeur peut changer pendant une invocation particulière de la machine virtuelle. Les demandes qui sont sensibles au nombre de processeurs disponibles devraient donc interroger de temps en temps cette propriété et ajuster de manière appropriée leur utilisation des ressources .

Pour obtenir ces informations, très probablement, il faudrait faire des appels du système d'exploitation en utilisant des appels natifs via Java Native Interface (JNI).

+0

Merci. Très clair. Je cherchais la méthode native, mais si elle n'existe pas j'étudierai JNI. ;) –

+0

Ceci n'est pas destiné à modéliser le matériel sous-jacent mais à donner une idée approximative du nombre de threads concurrents que le matériel peut supporter. –