Devons-nous utiliser le “poste de travail” la collecte des ordures ou “serveur” de collecte des ordures?
J'ai une grande multi-thread application C# en cours d'exécution sur un multi-core 4-serveur. Actuellement, nous sommes à l'aide de "mode serveur" garbage collection. Cependant, les tests ont montré que le poste de travail en mode GC est plus rapide.
Code managé les applications qui utilisent l'API du serveur de recevoir des avantages importants de l'utilisation du serveur optimisé garbage collector (GC) au lieu de la valeur par défaut de la station de travail GC.
Poste de travail est la valeur par défaut GC mode et le seul disponible sur les ordinateurs seul processeur. Poste de travail GC est hébergé dans la console et des applications Windows Forms. Il effectue complet (génération 2) les collections simultanément avec le programme en cours d'exécution, ce qui permet de minimiser le temps de latence. Ce mode est utile pour les applications clientes, où la performance perçue est généralement plus important que le débit brut.
Le serveur de catalogue global est disponible uniquement sur les ordinateurs multiprocesseurs. Il crée un autre tas managé et du fil pour chaque processeur et effectue des collections en parallèle. Lors de la collecte, tous les threads gérés sont en pause (threads d'exécution du code natif en pause uniquement lors de l'appel des indigènes de retours). De cette façon, le serveur GC mode optimise le débit (le nombre de requêtes par seconde) et améliore les performances lorsque le nombre de processeurs augmente. La Performance est particulièrement à l'aise sur les ordinateurs avec quatre processeurs ou plus.
Mais nous ne voyons pas les performances de briller!!!! Quiconque a des conseils?
- DanC. C'est la première fois que j'ai entendu parler de GC modes. Vous pouvez poster tous les liens vers les pages MSDN?
- Ce genre de performance briller prévoyez-vous? Est-ce votre programme de Windows GUI ou d'un service web?
- Il y a quelque chose sur MSDN ici aussi: msdn.microsoft.com/en-us/library/bb680014.aspx
- Ma demande une grande multi-thread application C# en cours d'exécution sur un multi-core 4-serveur. Donc, de ses ni de l'INTERFACE utilisateur, ni d'un service web....!
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas très bien expliqué, mais pour autant que je peux dire, le serveur est en mode synchrone par cœur, tandis que la station de travail est en mode asynchrone.
En d'autres termes, la station de travail mode est destiné à un petit nombre de long exécution des applications qui nécessitent des performances constantes. La collecte des ordures essaie de "rester en dehors de la voie", mais, en conséquence, est de moins en moins efficace en moyenne.
Le mode serveur est conçu pour les applications où chaque "métier" est relativement de courte durée et manipulé par un seul core (edit: pense multithread serveur web). L'idée est que chaque "métier" d'obtenir toute la puissance du processeur, et se fait rapidement, mais que de temps en temps le cœur s'arrête de traiter les demandes et nettoie la mémoire. Dans ce cas, l'espoir est que la GC est plus efficace en moyenne, mais le cœur n'est pas disponible pendant son fonctionnement, de sorte que l'application doit être en mesure de s'adapter à cette.
Dans votre cas, il ressemble, parce que vous avez une seule application dont les fils sont relativement couplé, vous êtes raccord mieux dans le modèle prévu par le premier mode, plutôt que la deuxième.
Mais c'est tout juste après le fait de justification. Mesurer les performances de votre système (comme ammoQ dit, pas du GC à la performance, mais bien la manière dont l'application se comporte) et utilisez ce que vous mesurez être le meilleur.
.NET 4.5 présente simultanées serveur de collecte des ordures.
http://msdn.microsoft.com/en-us/library/ee787088.aspx
Et il y a le nouveau SustainedLowLatencyMode;
Dans le .NET Framework 4.5, SustainedLowLatency mode est disponible pour les postes de travail et serveurs GC. Pour l'activer, définissez la GCSettings.LatencyMode propriété GCLatencyMode.SustainedLowLatency.
Serveur: Votre programme est la seule application sur la machine et les besoins de la latence la plus faible pour les GCs.
Poste de travail: Vous disposez d'une INTERFACE utilisateur ou de la part de la machine avec d'autres processus important