Pages

Affichage des articles dont le libellé est Processus. Afficher tous les articles
Affichage des articles dont le libellé est Processus. Afficher tous les articles

Récupérer la RAM utilisée en % pour un processus sujet

jeudi 30 janvier 2014




Bonjour,

J'aimerai faire une application de benchmarking qui analyse un processus en particulier en % au niveau de la consommation CPU et RAM.
J'ai trouvé comment faire pour le CPU mais je rencontre un problème pour la RAM. Voici mon code :


Code:


public void getRAMUsage(string processName)
        {
            List<float> countersRAM = new List<float>();

            performanceCounter = new PerformanceCounter("paramètre1", "paramètre2", processName);

            Console.WriteLine("RAM performance processing...");

            do
            {
                Thread.Sleep(TimeSpan.FromSeconds(1));
                float usageRAM = performanceCounter.NextValue();
                countersRAM.Add(usageRAM);
                timeleft++;
                Console.WriteLine(usageRAM + " %");
            } while (timeleft != 60/*usageRAM < 50.00*/);

            reportResult(countersRAM);
        }


Est ce que quelqu'un connaîtrait-il un moyen d'avoir le % de RAM utilisée par ce processName en fonction de la ram total de l'ordinateur.

Pour moi paramètre1 = Memory et paramètre2= % Amout of Memory quelque chose comme ça...

Merci d'avance pour votre aide.




[XL-2010] La connexion ADO excel s'ouvre dans le mauvais processus sujet




Bonjour
J'ai un problème très technique sur les connexions ADO. J'ai un classeur .xlsm qui fait des requêtes SQL sur lui-même pour comparer des données entre plusieurs onglets. Pour cela, j'utilise le code suivant :

Code:


Dim strcon As String
Dim cn As Object
Dim rcset As Object
Dim strSQL As String
strSQL = "ma requete de comparaison"
strcon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
            & ActiveWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=YES;"""
Set cn = CreateObject("ADODB.Connection")
Set rcset = CreateObject("ADODB.Recordset")
cn.Open strcon
rcset.Open strSQL, cn, 3, 1


Ce code est lancé par une macro autoexec workbook.open via une tâche planifiée.
Je rappelle que les tâches planifiées ouvrent à chaque fois une nouvelle instance d'excel (nouveau processus).

1 - si je lance la tâche sans qu'aucun autre excel soit présent, le classeur s'ouvre, lance la macro qui "s'ouvre lui-même" pour faire sa requête. La connexion ADO utilise alors le même processus, et la tâche est très rapide.
2 - si je lance la tâche alors qu'un autre excel est déjà ouvert, le classeur s'ouvre dans un nouveau processus, lance la macro, et la connexion ADO se fait dans le processus du premier excel (en lançant l'autoexec du premier excel au passage). La tâche est alors soit très lente, soit plante directement (l'excel qui contient la requête reste ouvert dans le premier processus), selon l'excel déjà ouvert.

Question : comment faire pour que la connexion ADO se fasse dans le même processus que l'instance d'excel qui la créé, même si d'autres processus Excel sont ouverts ?
Autrement, comment contourner ce problème, sachant que j'ai absolument besoin d'utiliser des requêtes SQL ?

Merci d'avance pour votre aide




Fin des processus en parallèle sujet




Bonjour à tous,
J'ai concocté un programme tout bête permettant de lancer des commandes en parallèle. Il fonctionne parfaitement bien mais j'aurai voulu l'optimiser.

Voici mon "soucis"

Le script lance deux commandes simultanément comme ceci :


Code:


echo "Lancement de la chaine 1"
nohup lancechaine.ksh -c 1 > $LOGS/ALIM_TABLES_1.log &
PID_1=$!
RETOUR_1=$?
sleep 5

echo "Lancement de la chaine 2"
nohup lancechaine.ksh -c 2 > $LOGS/ALIM_TABLES_2.log &
PID_2=$!
RETOUR_2=$?

printf "\nJOBS EN COURS\n"

wait ${PID_1}
echo "Chaine 1 termine : CODE RETOUR ${RETOUR_1}"
echo "Resultats du traitement : $LOGS/ALIM_TABLES_1.log"

wait ${PID_2}
echo "Chaine 2 termine : CODE RETOUR ${RETOUR_2}"
echo "Resultats du traitement : $LOGS/ALIM_TABLES_2.log"


Bon, ne faites pas attention à la qualité du code. Evidemment, une optimisation est à prévoir mais ce n'est pas le problème ;)

Le soucis est le suivant : il se peut que la chaîne 2 se termine avant la première. Dans ce cas, il faudrait que le message concernant la deuxième chaîne s'affiche dès qu'elle terminée.

Dans mon code, le message s'affichera dès que le processus 1 sera terminé. En gros je voulais savoir s'il était possible de boucler indéfiniment sur les processus en cours et d'afficher un message dès qu'une des chaînes se termine.

Evidemment, mon code contient une trentaine de chaîne ce qui est bien plus pertinent.

N'hésitez pas à me faire préciser des points qui n'ont pas été clair.

Merci pour votre contribution 8-)