Est il possible de définir un seuil max d'utilisation de la CPU pour un
programme C# ?
Mon problème, c'est que mon programme prend 99% de CPU et c'est la
galere. puis-je l'obliger à n'utiliser que 50% de CPU au maximum ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Simon Mourier [MS]
C'est assez difficile en fait. Ce qui relativement facile c'est de connaître la charge à l'instant T. La limiter c'est une autre paire de manches.
Il existe un programme add-on à Windows "WSRM" Windows System Resource Manager qui est capable de réaliser ce genre de choses sur Windows Server 2003, Enterprise Edition et Datacenter Edition disponible ici http://www.microsoft.com/windowsserver2003/downloads/wsrm.mspx
Par programmation, à partir de Windows 2000, il existe un API de "jobs" (WSRM se base dessus), qui permet de poser des limites à un process, mais ce n'est pas forcément facile à utiliser. Voir ici par exemple. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/setinformationjobobject.asp
En C#, il faudrait l'utiliser en intérop (DllImport, etc...) pour utiliser cette API.
Enfin, de manière plus simple, il est aussi possible de changer la priorité du processus avec l'API SetPriorityClass. En utilisant IDLE_PRIORITY_CLASS ou BELOW_NORMAL_PRIORITY_CLASS. Ca ne résoud pas entièrement le problème, mais ca peut dépanner. Si le processus est tout seul, il prendra quand même 100% mais si un autre a une priorité supérieure (donc normale par exemple), il passera en second plan.
Simon
"Nicolas" a écrit dans le message de news:
Bonjour,
Est il possible de définir un seuil max d'utilisation de la CPU pour un programme C# ? Mon problème, c'est que mon programme prend 99% de CPU et c'est la galere. puis-je l'obliger à n'utiliser que 50% de CPU au maximum ?
Merci, Nicolas
C'est assez difficile en fait. Ce qui relativement facile c'est de connaître
la charge à l'instant T. La limiter c'est une autre paire de manches.
Il existe un programme add-on à Windows "WSRM" Windows System Resource
Manager qui est capable de réaliser ce genre de choses sur Windows Server
2003, Enterprise Edition et Datacenter Edition disponible ici
http://www.microsoft.com/windowsserver2003/downloads/wsrm.mspx
Par programmation, à partir de Windows 2000, il existe un API de "jobs"
(WSRM se base dessus), qui permet de poser des limites à un process, mais ce
n'est pas forcément facile à utiliser.
Voir ici par exemple.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/setinformationjobobject.asp
En C#, il faudrait l'utiliser en intérop (DllImport, etc...) pour utiliser
cette API.
Enfin, de manière plus simple, il est aussi possible de changer la priorité
du processus avec l'API SetPriorityClass. En utilisant IDLE_PRIORITY_CLASS
ou BELOW_NORMAL_PRIORITY_CLASS. Ca ne résoud pas entièrement le problème,
mais ca peut dépanner. Si le processus est tout seul, il prendra quand même
100% mais si un autre a une priorité supérieure (donc normale par exemple),
il passera en second plan.
Simon
"Nicolas" <nico.trash@gmail.com> a écrit dans le message de news:
eCgUPVn9EHA.1408@TK2MSFTNGP10.phx.gbl...
Bonjour,
Est il possible de définir un seuil max d'utilisation de la CPU pour un
programme C# ?
Mon problème, c'est que mon programme prend 99% de CPU et c'est la galere.
puis-je l'obliger à n'utiliser que 50% de CPU au maximum ?
C'est assez difficile en fait. Ce qui relativement facile c'est de connaître la charge à l'instant T. La limiter c'est une autre paire de manches.
Il existe un programme add-on à Windows "WSRM" Windows System Resource Manager qui est capable de réaliser ce genre de choses sur Windows Server 2003, Enterprise Edition et Datacenter Edition disponible ici http://www.microsoft.com/windowsserver2003/downloads/wsrm.mspx
Par programmation, à partir de Windows 2000, il existe un API de "jobs" (WSRM se base dessus), qui permet de poser des limites à un process, mais ce n'est pas forcément facile à utiliser. Voir ici par exemple. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/setinformationjobobject.asp
En C#, il faudrait l'utiliser en intérop (DllImport, etc...) pour utiliser cette API.
Enfin, de manière plus simple, il est aussi possible de changer la priorité du processus avec l'API SetPriorityClass. En utilisant IDLE_PRIORITY_CLASS ou BELOW_NORMAL_PRIORITY_CLASS. Ca ne résoud pas entièrement le problème, mais ca peut dépanner. Si le processus est tout seul, il prendra quand même 100% mais si un autre a une priorité supérieure (donc normale par exemple), il passera en second plan.
Simon
"Nicolas" a écrit dans le message de news:
Bonjour,
Est il possible de définir un seuil max d'utilisation de la CPU pour un programme C# ? Mon problème, c'est que mon programme prend 99% de CPU et c'est la galere. puis-je l'obliger à n'utiliser que 50% de CPU au maximum ?
Merci, Nicolas
Pompier Christian
pourquoi ne regarde tu pas l'endroit ou le code tourne en boucle et pousse le processa 100% et n'essaies tu pas de l'arranger?
"Simon Mourier [MS]" a écrit dans le message de news:
C'est assez difficile en fait. Ce qui relativement facile c'est de
connaître
la charge à l'instant T. La limiter c'est une autre paire de manches.
Il existe un programme add-on à Windows "WSRM" Windows System Resource Manager qui est capable de réaliser ce genre de choses sur Windows Server 2003, Enterprise Edition et Datacenter Edition disponible ici http://www.microsoft.com/windowsserver2003/downloads/wsrm.mspx
Par programmation, à partir de Windows 2000, il existe un API de "jobs" (WSRM se base dessus), qui permet de poser des limites à un process, mais
ce
n'est pas forcément facile à utiliser. Voir ici par exemple.
En C#, il faudrait l'utiliser en intérop (DllImport, etc...) pour utiliser cette API.
Enfin, de manière plus simple, il est aussi possible de changer la
priorité
du processus avec l'API SetPriorityClass. En utilisant IDLE_PRIORITY_CLASS ou BELOW_NORMAL_PRIORITY_CLASS. Ca ne résoud pas entièrement le problème, mais ca peut dépanner. Si le processus est tout seul, il prendra quand
même
100% mais si un autre a une priorité supérieure (donc normale par
exemple),
il passera en second plan.
Simon
"Nicolas" a écrit dans le message de news:
> Bonjour, > > Est il possible de définir un seuil max d'utilisation de la CPU pour un > programme C# ? > Mon problème, c'est que mon programme prend 99% de CPU et c'est la
galere.
> puis-je l'obliger à n'utiliser que 50% de CPU au maximum ? > > Merci, > Nicolas
pourquoi ne regarde tu pas l'endroit ou le code tourne en boucle et pousse
le processa 100% et n'essaies tu pas de l'arranger?
"Simon Mourier [MS]" <simonm@online.microsoft.com> a écrit dans le message
de news:etfmcYp9EHA.1392@tk2msftngp13.phx.gbl...
C'est assez difficile en fait. Ce qui relativement facile c'est de
connaître
la charge à l'instant T. La limiter c'est une autre paire de manches.
Il existe un programme add-on à Windows "WSRM" Windows System Resource
Manager qui est capable de réaliser ce genre de choses sur Windows Server
2003, Enterprise Edition et Datacenter Edition disponible ici
http://www.microsoft.com/windowsserver2003/downloads/wsrm.mspx
Par programmation, à partir de Windows 2000, il existe un API de "jobs"
(WSRM se base dessus), qui permet de poser des limites à un process, mais
ce
n'est pas forcément facile à utiliser.
Voir ici par exemple.
En C#, il faudrait l'utiliser en intérop (DllImport, etc...) pour utiliser
cette API.
Enfin, de manière plus simple, il est aussi possible de changer la
priorité
du processus avec l'API SetPriorityClass. En utilisant IDLE_PRIORITY_CLASS
ou BELOW_NORMAL_PRIORITY_CLASS. Ca ne résoud pas entièrement le problème,
mais ca peut dépanner. Si le processus est tout seul, il prendra quand
même
100% mais si un autre a une priorité supérieure (donc normale par
exemple),
il passera en second plan.
Simon
"Nicolas" <nico.trash@gmail.com> a écrit dans le message de news:
eCgUPVn9EHA.1408@TK2MSFTNGP10.phx.gbl...
> Bonjour,
>
> Est il possible de définir un seuil max d'utilisation de la CPU pour un
> programme C# ?
> Mon problème, c'est que mon programme prend 99% de CPU et c'est la
galere.
> puis-je l'obliger à n'utiliser que 50% de CPU au maximum ?
>
> Merci,
> Nicolas
pourquoi ne regarde tu pas l'endroit ou le code tourne en boucle et pousse le processa 100% et n'essaies tu pas de l'arranger?
"Simon Mourier [MS]" a écrit dans le message de news:
C'est assez difficile en fait. Ce qui relativement facile c'est de
connaître
la charge à l'instant T. La limiter c'est une autre paire de manches.
Il existe un programme add-on à Windows "WSRM" Windows System Resource Manager qui est capable de réaliser ce genre de choses sur Windows Server 2003, Enterprise Edition et Datacenter Edition disponible ici http://www.microsoft.com/windowsserver2003/downloads/wsrm.mspx
Par programmation, à partir de Windows 2000, il existe un API de "jobs" (WSRM se base dessus), qui permet de poser des limites à un process, mais
ce
n'est pas forcément facile à utiliser. Voir ici par exemple.
En C#, il faudrait l'utiliser en intérop (DllImport, etc...) pour utiliser cette API.
Enfin, de manière plus simple, il est aussi possible de changer la
priorité
du processus avec l'API SetPriorityClass. En utilisant IDLE_PRIORITY_CLASS ou BELOW_NORMAL_PRIORITY_CLASS. Ca ne résoud pas entièrement le problème, mais ca peut dépanner. Si le processus est tout seul, il prendra quand
même
100% mais si un autre a une priorité supérieure (donc normale par
exemple),
il passera en second plan.
Simon
"Nicolas" a écrit dans le message de news:
> Bonjour, > > Est il possible de définir un seuil max d'utilisation de la CPU pour un > programme C# ? > Mon problème, c'est que mon programme prend 99% de CPU et c'est la
galere.
> puis-je l'obliger à n'utiliser que 50% de CPU au maximum ? > > Merci, > Nicolas
Patrick Philippot
Nicolas wrote:
Est il possible de définir un seuil max d'utilisation de la CPU pour un programme C# ? Mon problème, c'est que mon programme prend 99% de CPU et c'est la galere. puis-je l'obliger à n'utiliser que 50% de CPU au maximum ?
Bonjour,
N'essayez pas de corriger le symptôme, corrigez la cause. Revoyez le design de l'application.
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr
Nicolas wrote:
Est il possible de définir un seuil max d'utilisation de la CPU pour
un programme C# ?
Mon problème, c'est que mon programme prend 99% de CPU et c'est la
galere. puis-je l'obliger à n'utiliser que 50% de CPU au maximum ?
Bonjour,
N'essayez pas de corriger le symptôme, corrigez la cause. Revoyez le
design de l'application.
--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Est il possible de définir un seuil max d'utilisation de la CPU pour un programme C# ? Mon problème, c'est que mon programme prend 99% de CPU et c'est la galere. puis-je l'obliger à n'utiliser que 50% de CPU au maximum ?
Bonjour,
N'essayez pas de corriger le symptôme, corrigez la cause. Revoyez le design de l'application.
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr
Nicolas
Pompier Christian a écrit :
pourquoi ne regarde tu pas l'endroit ou le code tourne en boucle et pousse le processa 100% et n'essaies tu pas de l'arranger?
je suis pas encore assez calé en Csharp pour y arriver ... j'ai fait le ménage mais pas assez ... Il y a un thread qui tourne en boucle pour supprimer des pop-up's Web et un autre qui joue l'automate sur des pages Web ... Tous cela dans le meme programme.
"Simon Mourier [MS]" a écrit dans le message de news:
C'est assez difficile en fait. Ce qui relativement facile c'est de
connaître
la charge à l'instant T. La limiter c'est une autre paire de manches.
Il existe un programme add-on à Windows "WSRM" Windows System Resource Manager qui est capable de réaliser ce genre de choses sur Windows Server 2003, Enterprise Edition et Datacenter Edition disponible ici http://www.microsoft.com/windowsserver2003/downloads/wsrm.mspx
Par programmation, à partir de Windows 2000, il existe un API de "jobs" (WSRM se base dessus), qui permet de poser des limites à un process, mais
ce
n'est pas forcément facile à utiliser. Voir ici par exemple.
En C#, il faudrait l'utiliser en intérop (DllImport, etc...) pour utiliser cette API.
Enfin, de manière plus simple, il est aussi possible de changer la
priorité
du processus avec l'API SetPriorityClass. En utilisant IDLE_PRIORITY_CLASS ou BELOW_NORMAL_PRIORITY_CLASS. Ca ne résoud pas entièrement le problème, mais ca peut dépanner. Si le processus est tout seul, il prendra quand
même
100% mais si un autre a une priorité supérieure (donc normale par
exemple),
il passera en second plan.
Simon
"Nicolas" a écrit dans le message de news:
Bonjour,
Est il possible de définir un seuil max d'utilisation de la CPU pour un programme C# ? Mon problème, c'est que mon programme prend 99% de CPU et c'est la
galere.
puis-je l'obliger à n'utiliser que 50% de CPU au maximum ?
Merci, Nicolas
Pompier Christian a écrit :
pourquoi ne regarde tu pas l'endroit ou le code tourne en boucle et pousse
le processa 100% et n'essaies tu pas de l'arranger?
je suis pas encore assez calé en Csharp pour y arriver ... j'ai fait le
ménage mais pas assez ...
Il y a un thread qui tourne en boucle pour supprimer des pop-up's Web et
un autre qui joue l'automate sur des pages Web ... Tous cela dans le
meme programme.
"Simon Mourier [MS]" <simonm@online.microsoft.com> a écrit dans le message
de news:etfmcYp9EHA.1392@tk2msftngp13.phx.gbl...
C'est assez difficile en fait. Ce qui relativement facile c'est de
connaître
la charge à l'instant T. La limiter c'est une autre paire de manches.
Il existe un programme add-on à Windows "WSRM" Windows System Resource
Manager qui est capable de réaliser ce genre de choses sur Windows Server
2003, Enterprise Edition et Datacenter Edition disponible ici
http://www.microsoft.com/windowsserver2003/downloads/wsrm.mspx
Par programmation, à partir de Windows 2000, il existe un API de "jobs"
(WSRM se base dessus), qui permet de poser des limites à un process, mais
ce
n'est pas forcément facile à utiliser.
Voir ici par exemple.
En C#, il faudrait l'utiliser en intérop (DllImport, etc...) pour utiliser
cette API.
Enfin, de manière plus simple, il est aussi possible de changer la
priorité
du processus avec l'API SetPriorityClass. En utilisant IDLE_PRIORITY_CLASS
ou BELOW_NORMAL_PRIORITY_CLASS. Ca ne résoud pas entièrement le problème,
mais ca peut dépanner. Si le processus est tout seul, il prendra quand
même
100% mais si un autre a une priorité supérieure (donc normale par
exemple),
il passera en second plan.
Simon
"Nicolas" <nico.trash@gmail.com> a écrit dans le message de news:
eCgUPVn9EHA.1408@TK2MSFTNGP10.phx.gbl...
Bonjour,
Est il possible de définir un seuil max d'utilisation de la CPU pour un
programme C# ?
Mon problème, c'est que mon programme prend 99% de CPU et c'est la
galere.
puis-je l'obliger à n'utiliser que 50% de CPU au maximum ?
pourquoi ne regarde tu pas l'endroit ou le code tourne en boucle et pousse le processa 100% et n'essaies tu pas de l'arranger?
je suis pas encore assez calé en Csharp pour y arriver ... j'ai fait le ménage mais pas assez ... Il y a un thread qui tourne en boucle pour supprimer des pop-up's Web et un autre qui joue l'automate sur des pages Web ... Tous cela dans le meme programme.
"Simon Mourier [MS]" a écrit dans le message de news:
C'est assez difficile en fait. Ce qui relativement facile c'est de
connaître
la charge à l'instant T. La limiter c'est une autre paire de manches.
Il existe un programme add-on à Windows "WSRM" Windows System Resource Manager qui est capable de réaliser ce genre de choses sur Windows Server 2003, Enterprise Edition et Datacenter Edition disponible ici http://www.microsoft.com/windowsserver2003/downloads/wsrm.mspx
Par programmation, à partir de Windows 2000, il existe un API de "jobs" (WSRM se base dessus), qui permet de poser des limites à un process, mais
ce
n'est pas forcément facile à utiliser. Voir ici par exemple.
En C#, il faudrait l'utiliser en intérop (DllImport, etc...) pour utiliser cette API.
Enfin, de manière plus simple, il est aussi possible de changer la
priorité
du processus avec l'API SetPriorityClass. En utilisant IDLE_PRIORITY_CLASS ou BELOW_NORMAL_PRIORITY_CLASS. Ca ne résoud pas entièrement le problème, mais ca peut dépanner. Si le processus est tout seul, il prendra quand
même
100% mais si un autre a une priorité supérieure (donc normale par
exemple),
il passera en second plan.
Simon
"Nicolas" a écrit dans le message de news:
Bonjour,
Est il possible de définir un seuil max d'utilisation de la CPU pour un programme C# ? Mon problème, c'est que mon programme prend 99% de CPU et c'est la
galere.
puis-je l'obliger à n'utiliser que 50% de CPU au maximum ?
Merci, Nicolas
Nicolas
Patrick Philippot a écrit :
Nicolas wrote:
Est il possible de définir un seuil max d'utilisation de la CPU pour un programme C# ? Mon problème, c'est que mon programme prend 99% de CPU et c'est la galere. puis-je l'obliger à n'utiliser que 50% de CPU au maximum ?
Bonjour,
N'essayez pas de corriger le symptôme, corrigez la cause. Revoyez le design de l'application.
Ok je crois que je vais devoir m'atteler à la tache ;o))
Patrick Philippot a écrit :
Nicolas wrote:
Est il possible de définir un seuil max d'utilisation de la CPU pour
un programme C# ?
Mon problème, c'est que mon programme prend 99% de CPU et c'est la
galere. puis-je l'obliger à n'utiliser que 50% de CPU au maximum ?
Bonjour,
N'essayez pas de corriger le symptôme, corrigez la cause. Revoyez le
design de l'application.
Ok je crois que je vais devoir m'atteler à la tache ;o))
Est il possible de définir un seuil max d'utilisation de la CPU pour un programme C# ? Mon problème, c'est que mon programme prend 99% de CPU et c'est la galere. puis-je l'obliger à n'utiliser que 50% de CPU au maximum ?
Bonjour,
N'essayez pas de corriger le symptôme, corrigez la cause. Revoyez le design de l'application.
Ok je crois que je vais devoir m'atteler à la tache ;o))