Сборка 600+ и использование процессора - страница 6

 
RaptorUK:

Интересно, не могли бы вы проверить что-нибудь для меня в вашем Process Explorer?

Если вы найдете процесс terminal.exe, дважды щелкните его, затем перейдите на вкладку Threads . . есть ли у вас один или два потока с именем terminal.exe+ ... . У меня их два...

Если я убью тот, который использует CPU, MT4 все равно будет работать нормально, но с гораздо меньшим использованием CPU.

С удовольствием, но мне нужно установить некоторые Microsoft Debugging Tools для Windows... Я опубликую результат, как только получу его.
 

вот базовый вариант, доработайте его под свои нужды

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

на процесс терминала я не знаю, как это сделать, так что я взламываю его прямо сейчас, пробуя разные вещи, мне удалось почти получить его, но он говорит _total, где я думаю, что он должен сказать терминал. Мне не нужна статистика процессора на всем, я просто хочу, чтобы он делал MT4 так же, как когда я добавляю счетчик процесса MT4 на графический дисплей диаграммы ...

Вы должны выбрать процесс, когда добавляете счетчик. Processus, затем %CPU time и выбрать процесс. (Я работаю на французском, поэтому не уверен в точности термина на английском).
 
angevoyageur:
С удовольствием, но мне нужно установить некоторые инструменты отладки Microsoft для Windows... Я опубликую результат, как только получу его.

Хорошо. Есть кое-что странное. У меня 3 потока, но кажется, что %cpu увеличился с тех пор, как я играю с этим. Я сделаю несколько проверок и сообщу об этом.
 
У меня есть два таких потока terminal.exe+ в моем Я не думаю, что вы должны убить один из них они, кажется, делают довольно много, если вы проверите стеки на них и продолжите обновлять
 
angevoyageur:
Вы должны выбрать процесс при добавлении счетчика. Processus, затем %CPU time и выберите процесс. (Я работаю на французском языке, поэтому не уверен в точности термина на английском).
Хорошо, я попробую еще раз.
 
RaptorUK:

Интересно, не могли бы вы проверить кое-что для меня в вашем Process Explorer?

Если вы найдете процесс terminal.exe, дважды щелкните его, затем перейдите на вкладку Threads . . есть ли у вас один или два потока под названием terminal.exe+ ... . У меня их два...

если я убью тот, который использует CPU, MT4 все равно будет работать нормально, но с гораздо меньшим использованием CPU.


Оно пыталось убить его, но я больше не получал входящих клещей.

Согласно данным утилиты мониторинга питания материнской платы, b625 использует около 5 Вт на моем процессоре, в то время как b509 использует около 1 Вт. Это, похоже, подтверждает данные CPU из Process Explorer.

 
euclid:


Я попробовал убить его, но больше не получил никаких входящих тиков.

Согласно данным утилиты мониторинга питания материнской платы, b625 использует около 5 Вт на моем процессоре, в то время как b509 использует около 1 Вт. Это, похоже, подтверждает данные CPU из Process Explorer.

Да, я тоже это обнаружил...
 
angevoyageur:
Хорошо. Есть кое-что странное. У меня 3 потока, но кажется, что %cpu увеличился с тех пор, как я играю с этим. Я проведу несколько проверок и сообщу об этом.
Нет, я не вижу ничего полезного. В настоящее время у меня 2 терминальных потока (без графиков, без символов) и %cpu варьируется от 0,8% до 2,1%, несмотря на то, что платформа ничего не должна делать. Когда я открываю график и показываю все символы, этот % составляет около 3-4%.
 
angevoyageur:
Нет, я не вижу ничего полезного. В настоящее время у меня 2 терминальных потока (без графиков, без символов) и %cpu варьируется от 0.8% до 2.1%, несмотря на то, что платформа ничего не должна делать. Когда я открываю график и показываю все символы, этот % составляет около 3-4%.
Это потому, что платформа все еще принимает входящие тики?
Причина обращения: