Gestion des processus enfants d'une application publiée

Bonjour,



Je cherche à gérer les processus enfants d’une application publiée.



Les objectifs sont de :

  • réduire les temps de communication inter-proccess liés à COM (et à une architecture multi-core).
  • limiter le nombre d’application publiées sur tournant sur un coeur du serveur de la ferme.
  • s’assurer que les processus enfants sont bien décharger (quitte à les “killer”).



    Mon souci est le suivant:



    Pendant sa session, l’application publiée charge, via leurs interfaces COM, des processus enfants (par exemple: MS Office - Word, Excel, Outlook, etc.).



    Je souhaite m’assurer (et le forcer si ce n’est pas le cas) que l’application publiée et l’ensemble des processus qu’elle a appelés tournent sur le même processeur du serveur de la ferme. Et cerise sur le gateau, être certain que les processus enfants sont morts à la fermeture de l’application publiée.



    Il existe bien l’outil “XenApp Specif Laucher”, mais il répond qu’à un seul critère.



    Développer / écrire l’outils ne me dérange pas, mais j’ai besoin “de billes” avant de me lancer.

    Par exemple: quel est l’incidence du paramètre “CPU Management” sur les serveurs multi-processeurs et ou sur les API Microsoft (GetProcessAffinityMask, SetProcessAffinityMask, etc. ).



    Par avance merci pour votre aide.

CPU Management est un mécanisme logiciel qui s’appuie sur l’utilisation globale CPU du serveur. Si on souhaite que 20% du CPU soit réservé à tel user, ce sera en fait 10% de la ressource globale CPU sur cette machine dans le cas d’un dual core et 5% dans le cas d’un bi-CPU dual core.



il n’est pas fait de hook sur les API Microsoft mais il faudrait que je vérifie



en fait tu souhaite une application comme celle de Pierre (XenApp Specif Laucher) qui permettrait en plus de lancer l’application sur un core particulier c’est ça ?

dans ce cas, je conseillerai :

System.Environment.ProcessorCount() pour vérifier le nombre de coeurs pour utiliser GetProcessAffinityMask (http://msdn.microsoft.com/library/en-us/dllproc/base/getprocessaffinitymask.asp) afin également de vérifier les core disponibles pour l’application puis SetProcessAffinityMask (http://msdn.microsoft.com/library/en-us/dllproc/base/setprocessaffinitymask.asp)

ce sujet est abordé de façon intéressante sur http://vinubaby.wordpress.com/2008/08/25/how-to-run-an-app-on-one-processor-only/

ThinIsFat, merci pour votre réponse et pour le lien (http://vinubaby.wordpress.com/2008/08/25/how-to-run-an-app-on-one-processor-only/) qui est intéressant.



Le paramètre “CPU Management” ne répond pas à nos besoins, au contraire il risque de provoquer ce que nous souhaitons éviter (augmenter les temps de communication inter-processus); puisqu’il répartie la charge d’une session sur l’ensemeble des CPUs du serveur.



Existe-t’il dans CITRIX, d’autre paramètres autour de la notion de CPU / SESSION / USER ?

"guillaume_" wrote:

Existe-t'il dans CITRIX, d'autre paramètres autour de la notion de CPU / SESSION / USER ?


je ne comprends pas la question... je te la retourne donc un peu modifiée "existe-t-il dans Windows des mécanismes de gestion des CPU, sessions, users" => oui bien sûr
ce que tu cherches à effectuer n'est pas commun du tout et il faudra développer les applications de façon spécifique avec les informations que j'ai déjà communiqué.

juste pour info, Citrix n'est pas un logiciel mais une société ;D donc pour répondre il n'existe pas de paramétrage dans Citrix XenApp 4.x ou 5.0 (vu que tu ne précises pas la version utilisée) pour forcer l'éxécution d'une application sur un CPU ou une session particulière (attention, à l'attention des autres experts qui lisent : le session sharing pourrait être utilisé ici mais ce n'est pas une méthode certaine de forcer l'exécution comme semble le vouloir guillaume)
"ThinIsFat" wrote:
"guillaume_" wrote:

Existe-t'il dans CITRIX, d'autre paramètres autour de la notion de CPU / SESSION / USER ?


je ne comprends pas la question... je te la retourne donc un peu modifiée "existe-t-il dans Windows des mécanismes de gestion des CPU, sessions, users" => oui bien sûr
ce que tu cherches à effectuer n'est pas commun du tout et il faudra développer les applications de façon spécifique avec les informations que j'ai déjà communiqué.

juste pour info, Citrix n'est pas un logiciel mais une société ;D donc pour répondre il n'existe pas de paramétrage dans Citrix XenApp 4.x ou 5.0 (vu que tu ne précises pas la version utilisée) pour forcer l'éxécution d'une application sur un CPU ou une session particulière (attention, à l'attention des autres experts qui lisent : le session sharing pourrait être utilisé ici mais ce n'est pas une méthode certaine de forcer l'exécution comme semble le vouloir guillaume)



Attention cependant au CPU Rebalancing qui si il est activé a pour vocation de répartir sur plusieurs CPU un process "monocore" :D