2009-07-15 9 views
2

Quelles sont les règles de base pour le dimensionnement d'un pool de threads qui contient des tâches:Discussion taille de la piscine pour les tâches liées au réseau

  • sont réseau liées à toujours;
  • accéder à des services externes avec un débit et une latence différents.

Ma principale préoccupation utilise la bande passante optimale (à savoir ne traitent pas des tâches en série, mais ne pas ouvrir les 1200 connexions réseau soit);

+0

Ces connexions réseau sont-elles toutes ouvertes au même point de terminaison ou à plusieurs points de terminaison différents? – skaffman

+0

Plusieurs points de terminaison différents. –

Répondre

1

L'accès à votre réseau est-il synchrone ou asynchrone?

Si votre accès au réseau et le traitement des requêtes est asynchrone, la taille du pool de threads peut être => Nombre de cœurs disponibles + 1.

MISE À JOUR: par des noyaux disponibles, je veux dire le nombre de processeurs physiques disponibles sur le système. Un pool de threads est requis même pour un serveur utilisant des E/S asynchrones pour tirer parti de plusieurs processeurs physiques. Si votre accès au réseau et le traitement des demandes sont synchrones, il n'y a pas de règle absolue pour dimensionner le pool de threads. Il est toujours préférable de configurer la taille du pool de threads dans ce cas. A guestimate pour une valeur par défaut, étant donné que le traitement de votre demande n'est pas liée au CPU, pourrait être:

(Traitement des demandes Latence/Réseau Latency) * (Nombre de conducteurs disponibles + 1) avec une valeur maximale de 4 * Nombre de noyaux disponibles.

+1

Ces threads ne font que lire les données réseau provenant de sources externes. L'impact du CPU est minime, donc je ne vois pas comment le nombre de cœurs est pris en compte. –

0

Je ne suis pas un expert mais ne devriez-vous pas avoir un fil par tâche? Les threads bloquent/interrogent jusqu'à ce que les données soient disponibles. Si vous attendez une connexion, démarrez un thread pour gérer chaque connexion dans le gestionnaire de connexion.

+0

Merci pour la réponse. J'ai un fil de discussion par tâche, mais quelles mesures utiliserais-je pour estimer le nombre de tâches? –

Questions connexes