J'ai construit un logiciel que je déploie sur un serveur Windows 2003. Le logiciel fonctionne en permanence comme un service et c'est la seule application sur la boîte Windows d'importance pour moi. Une partie du temps, il récupère des données sur Internet, et une partie du temps, il fait des calculs sur ces données. C'est multithread - j'utilise des pools de threads d'environ 4-20 threads. Je ne vous ennuierai pas avec tous ces détails, mais il suffit de dire que si j'active plus de threads dans le pool, plus de travail simultané se produit, et l'utilisation du CPU augmente. (Tout comme la demande pour d'autres ressources, comme la bande passante, bien que cela ne me concerne pas - j'en ai plein)Seuils d'utilisation optimale du processeur
Ma question est la suivante: dois-je simplement essayer de maximiser le processeur pour obtenir le meilleur pour mon argent ? Intuitivement, je ne pense pas qu'il soit logique de fonctionner à 100% CPU; même 95% CPU semble élevé, presque comme si je ne donnais pas beaucoup d'espace à l'OS pour faire ce qu'il doit faire. Je ne connais pas la bonne façon d'identifier le meilleur équilibre. Je suppose que je pourrais mesurer et mesurer et probablement trouver que le meilleur débit est atteint à une utilisation moyenne de CPU de 90% ou 91%, etc. mais ...
Je me demande juste s'il y a une bonne règle empirique à propos de ça??? Je ne veux pas supposer que mes tests tiendront compte de toutes sortes de variations de charges de travail. Je préfère jouer un peu en sécurité, mais pas trop en sécurité (ou bien je sous-utilise mon matériel).
Que recommandez-vous? Qu'est-ce qu'une règle d'utilisation intelligente et orientée vers la performance pour une application à plusieurs threads, à charge mixte (une partie des E/S, un peu de CPU) sous Windows?
Le système d'exploitation fera très probablement la même chose si vous accordez la priorité normale aux threads. Ce que vous ne voulez pas faire, c'est leur accorder une haute priorité. –