9
votes

Exécutez mon application dans une mémoire basse simulée, environnement de la CPU lente

Je veux faire du mal à tester mon application de cette façon, car elle semble échouer dans de très anciennes machines clientes.

Au début, j'ai lu un peu de QEMU et pensé à l'émulation du matériel, mais cela semble un long coup. J'ai demandé à superutilisateur , mais n'a pas encore eu beaucoup de commentaires (encore).

Alors je me tourne vers vous des gars ... Comment faites-vous ce genre de test?


3 commentaires

Quelques conseils dans Stackoverflow.com/questions/1928534/...


Cela parle de réduire la vitesse de la CPU, qu'en est-il de la RAM? Je pense que mon meilleur choix serait de mettre en place une machine vraiment merdique moi-même


La grande question UNIX: Unix.stackexchange.com/questions/99334/...


9 Réponses :


7
votes

Je ne suis pas sûr de ralentir une CPU, mais si vous utilisez une machine virtuelle, comme VMware, vous pouvez contrôler la quantité de RAM réellement utilisée. Je l'exécute sur un MBP à la maison avec 8 Go et mon VM WinXP est plafonné à 1,5 Go de RAM.

Modifier : Je viens de vérifier ma version de VMware et je peux contrôler le nombre de noyaux qu'il peut utiliser. Ce n'est certainement pas la même chose qu'un processeur plus lent, mais cela pourrait mettre en évidence des problèmes pour vous.

Étant donné que ce n'est pas tout à fait évident que votre application échoue à cause de l'ancien matériel ou de l'ancien système d'exploitation, un client VM devrait vous permettre de tester diverses versions d'OSES plutôt rapidement. Il est arrivé utile pour moi quelques années de retour quand j'essayais d'obtenir une application .NET 2.0 pour fonctionner sur Win98 (il peut être fait si je ne me souviens pas de la façon dont je l'ai eu pour le faire. .).


0 commentaires

2
votes

Si vous souhaitez réduire la vitesse de votre CPU, vous pouvez le faire facilement en modifiant un programme de bombe de fourche xxx

}

Ceci ralentira tout à votre ordinateur Rapidement, vous voudrez peut-être modifier la variable de limite à un nombre plus élevé. Je dois vous avertir si cela peut être dangereux, car si vous avez mal mis en œuvre, vous pourriez faire la bombe à la fourchette, votre système leur laissant inutile, à moins que vous ne le redémarrez. Lisez Ce d'abord si vous ne comprenez pas ce que ce code fera.


0 commentaires

2
votes

sur les systèmes POSIX (UNIX) Vous pouvez appliquer des limites d'exécution aux processus (c'est-à-dire aux exécutions d'un programme). L'appel du système pour le faire s'appelle setrlimit () < / a>, et la plupart des coquilles vous permettent d'utiliser le ulimit intégré pour les définir à partir de la ligne de commande (POSIX uni POSIX ULIMIT n'est pas très utile). En utilisant ceux-ci, vous pouvez exécuter un programme avec des limites faibles pour simuler un ordinateur plus petit.

Posix Systems fournit également un Nice Commande pour exécuter un programme à la priorité de la CPU inférieure, qui peut simuler une CPU plus lente si vous vous assurez également qu'il existe un autre programme intensif de la CPU en cours d'exécution en même temps.



3
votes

La boîte virtuelle est une machine virtuelle gratuite similaire à VMware. Il a également la capacité de réduire la mémoire disponible. Il peut restreindre le nombre de processeurs disponibles, mais pas à quel point ces processeurs sont rapides.


0 commentaires

1
votes

Je pense qu'il est peu probable que la CPU la vitesse va exercer de très nombreux bugs; D'autre part, il est beaucoup plus probable que des caractéristiques de CPU sont beaucoup plus susceptibles. De nombreuses implémentations VM fournissent des moyens de basculer sur certaines fonctionnalités de la CPU; QEMU en particulier permet un niveau de contrôle élevé sur ce qui est disponible pour la CPU.


1 commentaires

Ummm ... pas sûr de la quantité de programmation simultanée que vous effectuez, mais de nombreuses conditions de course dépendent entièrement de la vitesse du matériel que vous les exécutez.



0
votes

sur Linux, vous pouvez utiliser ulimit comme dit Raedwald. Sous Windows, vous pouvez utiliser l'appel système SETProcessSetSetSetSetSetSetSetSetSetSetSetSetSetSetSetSetSetSetSets. Mais celles-ci ne définissent qu'une limite sur une base de processus. En réalité, des parties du système commenceront à échouer dans un environnement stressé. Je suggérerais d'utiliser l'outil Sysinternernals ' TestLimit pour insuffler la machine entière.


1 commentaires

Si vous êtes à Linux, il y a un programme appelé CPULIMIT limite de vitesse par processus - je ne connais pas avec Ulimit, mais cela pourrait peut-être rendre la vie plus facile



1
votes

pense en dehors de la boîte. Quelle application de ceux que vous utilisez régulièrement cela? Un débogueur bien sûr! Mais comment pouvez-vous réaliser un tel comportement, émuler un processeur faible?

Le secret de votre question est ASM _int 3 . Ceci est la commande assemblée "PAUSE ME" qui est envoyée du débogueur ci-jointe à l'application que vous déboguez.

plus sur INT 3 à ce Question .

Vous pouvez utiliser le code de Cet outil pour mettre en pause / reprendre votre processus continuellement. Vous pouvez ajouter un intervalle et faire une pause de cet outil pour cette application pour cette quantité de temps.

La vitesse de la CPU émule serait la suivante: (YourCPU / Intervalle) -0,00001% en raison de la signalisation et des autres processus exécutés sur votre machine, mais cela devrait faire le tour.

À propos de l'émulation de la mémoire faible: Vous pouvez créer une classe wrapper qui attribue la mémoire pour l'application et remplace chaque allocation avec appel à cette classe. Vous seriez capable de définir exactement la quantité de mémoire que votre application puisse utiliser avant de ne pas affecter plus de mémoire.

quelque chose comme: myClass * foo = allOCWRAPPER (Nouveau MyClass (arguments ou autre)); Ensuite, vous pouvez avoir la mémoire AllOcWrapper allouant / translocant pour vous.


0 commentaires

3
votes

Essayez CPULIMIT , la plus grande distribution comprend (ubuntu le fait) http://www.digipedia.pl/man/doc/view/cpulimit.1


0 commentaires

0
votes

voir https://serverfaulage.com/questions/36309/throttle- Down-CPU-Speed-of-VMware-Image Était-il réclamé VMWare VMware VMWare VSphere Hypervisor ™ (Esxi) vous permet de sélectionner la vitesse de la CPU virtuelle sur le réglage de la taille de la mémoire de la machine virtuelle.


0 commentaires