Question

J'ai construit un logiciel que je déploie sur le serveur Windows 2003. Le logiciel fonctionne en tant que service en continu et il est la seule application sur la boîte de Windows d'importance pour moi. Une partie du temps, il est la récupération de données à partir d'Internet, et une partie du temps qu'il fait des calculs sur ces données. Il est multithread -. J'utilise des pools de threads d'environ 4-20 fils

Je vous n'ennuyer avec tous ces détails, mais il suffit de dire que, comme je permettre à plus de fils dans la piscine, le travail concomitantes se produit, et l'utilisation du processeur augmente. (Comme le fait la demande pour d'autres ressources, comme la bande passante, bien que ce soit sans intérêt pour moi - j'ai beaucoup)

Ma question est la suivante: dois-je simplement essayer au maximum de l'unité centrale de traitement pour obtenir le meilleur pour mon argent? Intuitivement, je ne pense pas qu'il est logique de fonctionner à 100% du CPU; même CPU 95% semble élevé, presque comme si je ne donne pas le système d'exploitation beaucoup d'espace pour faire ce qu'il doit faire. Je ne sais pas la bonne façon d'identifier meilleur équilibre. Je devine que je pouvais mesurer et mesurer et probablement trouver que le meilleur débit est achived à une utilisation avg CPU de 90% ou 91%, etc., mais ...

Je me demande s'il y a une bonne règle de base de cette ??? Je ne veux pas croire que mes tests prendra en compte toutes sortes de variations de la charge de travail. Je préfère jouer un peu sûr, mais pas trop sûr (ou bien je suis underusing mon matériel).

Que recommandez-vous? Qu'est-ce qu'une puce, la performance règle d'esprit d'utilisation pour une charge mixte, multi-thread (certains E / S, une CPU) application sur Windows?

Était-ce utile?

La solution

Oui, je vous suggère de 100% est donc débattait ne voudrait pas voir les processus en cours d'exécution comme ça tout le temps. J'ai toujours cherché à 80% pour obtenir un équilibre entre l'utilisation et la salle des pics / processus ad hoc.

Une approche que je l'ai utilisé dans le passé est à manivelle jusqu'à la taille de la piscine lentement et mesurer l'impact (à la fois sur le processeur et sur d'autres contraintes telles que IO), vous ne savez jamais, vous trouverez peut-être que tout à coup IO devient le goulot d'étranglement .

Autres conseils

Si vous donnez simplement votre fils une priorité faible, le système d'exploitation le reste, et prendre cycles car il a besoin de travailler. Server 2003 (et la plupart des systèmes d'exploitation de serveur) sont très bon à ce , pas besoin d'essayer de gérer vous-même.

J'ai aussi utilisé 80% en règle de pouce général pour l'utilisation du processeur cible. Comme d'autres l'ont mentionné, ce qui laisse une certaine marge pour des pointes sporadiques de l'activité et éviter raclée sur la CPU.

Voici un petit (mais plus toujours d'actualité) des conseils de l'équipage Weblogic sur cette question: http://docs.oracle.com/cd/E13222_01/wls/docs92/perform/basics.html#wp1132942

Si vous sentez que votre charge est très cohérente et prévisible, vous pouvez pousser cette cible un peu plus, mais à moins que votre base d'utilisateurs est une tolérance exceptionnelle des réponses lentes périodiques et votre budget du projet est incroyablement serré, je vous recommande d'ajouter davantage de ressources votre système (l'ajout d'une unité centrale de traitement, en utilisant une unité centrale de traitement avec plus de cœurs, etc.) sur faire un geste risqué pour essayer de faire sortir une autre utilisation du processeur de 10% de votre plate-forme existante.

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