Build 600+ e utilizzo della CPU - pagina 6

 
RaptorUK:

Mi chiedo se puoi controllare qualcosa per me nel tuo Process Explorer?

Se trovi il processo terminal.exe, fai doppio clic su di esso e poi vai alla scheda Threads. . . hai uno o due thread chiamati terminal.exe+ .. . Ne ho due . . .

se uccido quello che usa la CPU MT4 sembra ancora funzionare bene ma con un utilizzo della CPU molto più basso.

Con piacere, ma ho bisogno di installare alcuni strumenti di debugging Microsoft per Windows... posterò il risultato non appena l'avrò ottenuto.
 

Qui è di base, lavorate per i vostri bisogni

//+------------------------------------------------------------------+
//|                                                       !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:

sul processo del terminale non so come farlo, quindi ora ci sto provando diverse cose e sono riuscito quasi ad ottenerlo, ma dice _totale dove penso che dovrebbe dire terminale. Non voglio le statistiche della CPU su tutto ciò che voglio solo che faccia MT4 lo stesso di quando aggiungo il contatore del processo MT4 al grafico di visualizzazione ...

Devi scegliere il processus quando aggiungi il contatore. Processus poi %CPU time e scegliere il processo. (Sto lavorando in francese quindi non sono sicuro del termine esatto in inglese).
 
angevoyageur:
Con piacere, ma ho bisogno di installare alcuni strumenti di debugging Microsoft per Windows... posterò il risultato non appena l'avrò ottenuto.

Ok. C'è qualcosa di strano. Ho 3 threads, ma sembra che la %cpu sia aumentata da quando sto giocando con questo. Farò alcuni controlli e riferirò in merito.
 
Ho due di quei thread terminal.exe+ nel mio, non penso che dovresti ucciderne uno, sembra che stiano facendo molto se controlli gli stack su di essi e continui a fare il refresh
 
angevoyageur:
Dovete scegliere il processo quando aggiungete il contatore. Processus poi %CPU time e scegliere il processo. (Sto lavorando in francese quindi non sono sicuro del termine esatto in inglese).
Ok, ci riproverò
 
RaptorUK:

Mi chiedo se potresti controllare qualcosa per me nel tuo Process Explorer?

Se trovi il processo terminal.exe, fai doppio clic su di esso e poi vai alla scheda Threads. . . hai uno o due thread chiamati terminal.exe+ .. . Ne ho due . . .

se uccido quello che usa la CPU MT4 sembra ancora funzionare bene ma con un utilizzo della CPU molto più basso.


Ha cercato di ucciderlo, ma non ho più avuto zecche in arrivo.

Secondo la mia utility di monitoraggio dell'alimentazione della scheda madre, b625 usa circa 5W sulla mia CPU, mentre b509 usa circa 1W. Questo sembra confermare le cifre della CPU di Process Explorer.

 
euclid:


Ho provato ad ucciderlo, ma non ho più ricevuto ticchettii in entrata.

Secondo la mia utility di monitoraggio dell'alimentazione della scheda madre, b625 usa circa 5W sulla mia CPU, mentre b509 usa circa 1W. Questo sembra confermare le cifre della CPU di Process Explorer.

Sì, ho scoperto anche questo...
 
angevoyageur:
Ok. C'è qualcosa di strano. Ho 3 threads, ma sembra che la %cpu sia aumentata da quando sto giocando con questo. Farò alcuni controlli e riferirò in merito.
No, non vedo nulla di utile. Attualmente ho 2 thread da terminale (senza grafici, senza simboli) e %cpu che varia da 0,8% a 2,1%, nonostante il fatto che la piattaforma non dovrebbe fare nulla. Quando apro un grafico e mostro tutti i simboli, questa % è intorno al 3-4%.
 
angevoyageur:
No, non vedo nulla di utile. Attualmente ho 2 thread di terminale (senza grafici, senza simboli) e %cpu che varia da 0,8% a 2,1%, nonostante il fatto che la piattaforma non dovrebbe fare nulla. Quando apro un grafico e mostro tutti i simboli, questa % è intorno al 3-4%.
È perché la piattaforma sta ancora accettando i tick in arrivo?