Construir 600+ y uso de la CPU - página 6

 
RaptorUK:

Me pregunto si podría comprobar algo para mí en su Explorador de Procesos ?

Si encuentra el proceso terminal.exe, haga doble clic en él y luego vaya a la pestaña Hilos . . tiene uno o dos hilos llamados terminal. exe+. Yo tengo dos . . .

si mato al que usa la CPU MT4 todavía parece funcionar bien pero con un uso de la CPU mucho menor.

Con gusto pero necesito instalar algunas herramientas de depuración de Microsoft para Windows...publicaré el resultado en cuanto lo tenga.
 

esto es lo básico, resuélvelo según tus necesidades

//+------------------------------------------------------------------+
//|                                                       !pCPUu.mq4 |
//+------------------------------------------------------------------+
#property version   "1.00"

#import "Psapi.dll"
   bool EnumProcesses(int& pProcessIds[], int cb, int & pBytesReturned);
   int  GetModuleBaseNameW(int hProcess, int & hModule[], char & lpBaseName[], int nSize);
   int  GetModuleFileNameExW(int hProcess, int & hModule[],ushort & lpFilename[], int nSize);
   bool EnumProcessModules(int hProcess,int & lphModule[],int cb, int & lpcbNeeded[]);

#import

#import "kernel32.dll"
   int  OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId);
   bool GetProcessTimes(int hProcess, int & lpCreationTime[], int & lpExitTime[], int & lpKernelTime[], int & lpUserTime[]);
   bool GetSystemTimes(int & lpIdleTime[], int & lpKernelTime[], int & lpUserTime[]);
   int  GetLastError(void);
#import
#define  PROCESS_QUERY_INFORMATION 0x0400
#define  PROCESS_VM_READ 0x0010

double   CPU_Usage;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   EventSetTimer(1);
      
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();
      
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   int aProcesses[1024], cbNeeded, cProcesses, hMod[], szPN[1024], sz;
   int lpCreationTimeF[1], lpExitTimeF[1], lpKernelTimeF[1], lpUserTimeF[1];
   int lpCreationTimeS[1], lpExitTimeS[1], lpKernelTimeS[1], lpUserTimeS[1];
   string Prss;
            
   
   EnumProcesses(aProcesses, ArraySize(aProcesses), cbNeeded); // Get the list of process identifiers.
   cProcesses = cbNeeded / 4; // Calculate how many process identifiers were returned.
   for (int i = 0; i < cProcesses; i++)
      {
      if(aProcesses[i] != 0 )
         {
         // Get a handle to the process.
         int hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, aProcesses[i]);
         if (hProcess != 0)
            {
            // Get the process name.
            if (EnumProcessModules(hProcess, hMod, ArraySize(hMod), szPN))
               {
               ushort szProcessName[1850];
               GetModuleFileNameExW(hProcess, hMod, szProcessName, ArraySize(szProcessName)/32 );
               Prss = ShortArrayToString(szProcessName);
               if (StringFind(Prss, "terminal.exe") != -1)
                  {
                  // Calculate the process CPU usage
                  GetProcessTimes(hProcess, lpCreationTimeF, lpExitTimeF, lpKernelTimeF, lpUserTimeF);
                  Sleep(1000);
                  GetProcessTimes(hProcess, lpCreationTimeS, lpExitTimeS, lpKernelTimeS, lpUserTimeS);
                  CPU_Usage=((((lpKernelTimeS[0]-lpKernelTimeF[0]) + (lpUserTimeS[0] - lpUserTimeF[0])) * 100) / 10000000);
                  if (CPU_Usage > 10)
                  Alert(Prss, " is: ", CPU_Usage, " Prss no=: ", aProcesses[i]);
                  }
               }
            }
         }
      }   
  }
 
SDC:

En el proceso de la terminal no sé cómo hacerlo así que estoy hackeando en este momento tratando de diferentes cosas me las arreglé para casi conseguirlo, pero dice _total donde creo que debería decir terminal. No quiero que las estadísticas de la CPU en todo lo que quiero hacer MT4 lo mismo que cuando agrego el contador de proceso MT4 a la tabla de visualización gráfica ...

Usted tiene que elegir el processus cuando usted está agregando el contador. Processus luego %CPU tiempo y elegir el proceso. (Estoy trabajando en francés así que no estoy seguro del término exacto en inglés).
 
angevoyageur:
Con mucho gusto pero necesito instalar algunas herramientas de depuración de Microsoft para Windows...publicaré el resultado en cuanto lo consiga.

Ok. Hay algo raro. Tengo 3 hilos, pero parece que el %cpu aumentó desde que estoy jugando con esto. Haré algunas comprobaciones e informaré sobre ello.
 
Tengo dos de esos hilos terminal.exe+ en el mío no creo que debas matar uno de ellos parecen estar haciendo bastante si compruebas las pilas en ellos y sigues refrescando
 
angevoyageur:
Tienes que elegir el processus cuando estás añadiendo el Counter. Processus y luego %CPU time y elegir el proceso. (Estoy trabajando en francés así que no estoy seguro del término exacto en inglés).
Ok, lo intentaré de nuevo
 
RaptorUK:

Me pregunto si podría comprobar algo para mí en su Process Explorer ?

Si encuentra el proceso terminal.exe, haga doble clic en él y vaya a la pestaña Hilos. . tiene uno o dos hilos llamados terminal. exe+. Yo tengo dos . . .

si mato al que usa la CPU MT4 todavía parece funcionar bien pero con un uso de la CPU mucho menor.


Intentó matarlo, pero no me llegaron más garrapatas.

Según la utilidad de monitorización de energía de mi placa base, el b625 utiliza unos 5W en mi CPU, mientras que el b509 utiliza unos 1W. Esto parece respaldar las cifras de la CPU del Process Explorer.

 
euclid:


Intentó matarlo, pero no tuve más ticks de entrada.

Según la utilidad de monitorización de energía de mi placa base, el b625 utiliza unos 5W en mi CPU, mientras que el b509 utiliza unos 1W. Esto parece respaldar las cifras de la CPU del Process Explorer.

Sí, yo también descubrí eso...
 
angevoyageur:
Bien. Hay algo raro. Tengo 3 hilos, pero parece que el %cpu aumentó desde que estoy jugando con esto. Haré algunas comprobaciones e informaré sobre ello.
No puedo ver nada útil. Actualmente tengo 2 hilos de terminal (sin gráficos, sin símbolos) y el %cpu varía del 0,8% al 2,1%, a pesar de que la plataforma se supone que no hace nada. Cuando abro un gráfico y muestro todos los símbolos, este % ronda el 3-4%.
 
angevoyageur:
No puedo ver nada útil. Actualmente tengo 2 hilos de terminal (sin gráficos, sin símbolos) y %cpu que varía de 0,8% a 2,1%, a pesar de que la plataforma se supone que no hace nada. Cuando abro un gráfico y muestro todos los símbolos, este % ronda el 3-4%.
¿Será porque la plataforma sigue aceptando ticks entrantes?