Je suis en train de tester certains process. Mon application doitgénérer la charge du processeur en Java
- lecture de JMS
- Effectuer un traitement
- écrire à JMS
Mon but ici est de simuler # 2, «un certain traitement. C'est-à-dire, introduire un retard et occuper la CPU pendant un temps donné (par exemple 500 ms) avant de transmettre l'événement. L'approche naïve serait de Thread.sleep(500)
. Cela introduirait le bon retard dans l'exécution, mais n'exercerait pas le CPU.
Le calcul des nombres de Fibonacci est une option. Est-ce que quelqu'un a utilisé des techniques intéressantes pour maintenir le (s) processeur (s) occupé (s) pendant un certain temps?
caractéristiques idéales seraient:
- Réalise une variété d'instructions, plutôt que (par exemple) filer juste sur une boucle
- Pas quelque chose que la machine virtuelle HotSpot va optimiser l'écart à rien
- A un moyen facile d'ajuster la période de traitement vers le haut ou vers le bas (le temps de terminer variera clairement compte tenu du matériel)
Pouvez-vous expliquer davantage pourquoi l'utilisation de la CPU est nécessaire, mais simplement dormir avec filetage.dormir() ne convient pas? –
Je ne suis pas sûr de comprendre ce que vous entendez par "exercer le processeur" et pourquoi exactement vous devriez le faire. Pourriez-vous élaborer un peu plus? Que faites-vous exactement ici? D'après ce que je peux voir c'est soit le "certains traitement", lire/écrire JMS ou quelque chose qui envoie des données à cette chose. Merci. –
> sleep ne convient pas J'ai besoin que les opérations JMS se déroulent dans des conditions d'UC réalistes. Un processeur inactif peut me donner des performances JMS faussement élevées; J'ai besoin de l'UC pour être 'réaliste' donc ma mesure JMS est bonne. – Air