Question

Est-il possible de ralentir le temps dans la machine virtuelle Java selon l'utilisation du processeur par une modification du code source de OpenJDK? J'ai une simulation de réseau (Java ns-3) qui consomme en temps réel, synchronisé lâchement à l'horloge murale. Cependant, parce que je lance tant de clients dans la simulation, la frappe utilisation du processeur 100% et garanties dures ne sont pas entretenus sur la façon dont les événements longs dans le simulateur devraient prendre à traiter (à savoir, une grande quantité d'événements super-fin). Par conséquent, la simulation plafonne à environ 40 nœuds quand il y a beaucoup de trafic réseau, et même alors, il est un peu hasardeux. La solution idéale serait de ralentir le temps en fonction de CPU, mais je ne sais pas comment faire cela avec succès. Une solution est moindre à temps vers le bas juste lent par un multiple (temps lensing?).

Si quelqu'un pouvait donner est à http: // pastebin.com/RSQpCdbD . J'ai essayé de modifier certaines parties du dossier, mais mes résultats ne sont pas vraiment été très réussie.

Merci à l'avance,
Chris

Était-ce utile?

La solution

Vous pourriez regarder VirtualBox , qui permet à un accélérer ou ralentir l'horloge invité de la ligne de commande.

Autres conseils

Je ne suis pas tout à fait sûr que ce soit ce que vous voulez, mais, avec le Joda temps bibliothèque, vous pouvez arrêter le temps complètement. Ainsi, les appels à new Date () ou une nouvelle DateTime () dans Joda-temps se retourner continuellement en même temps.

Alors, vous pouvez, dans un thread "temps d'arrêt" avec cet appel:

DateTimeUtils.setCurrentMillisFixed(System.currentTimeMillis());

Ensuite, votre fil pourrait dormir, par exemple, 5000ms, puis appelez:

// advance time by one second
DateTimeUtils.setCurrentMillisFixed(System.currentTimeMillis() + 1000);

à condition que vous demande fait ce qu'il ne repose sur le temps dans le système ce sera le temps « lent » en réglant l'heure avant une seconde tous les 5 secondes.

Mais, comme je l'ai dit ... Je ne suis pas sûr que cela fonctionnera dans votre environnement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top