ビルド600以上とCPU使用率 - ページ 6

 
RaptorUK:

プロセスエクスプローラーで何か確認できないでしょうか?

Terminal.exeプロセスを見つけたら、それをダブルクリックして、Threadsタブに移動してください。ターミナル.exe+と 呼ばれるスレッドが1つまたは2つありますか? 私は2つ持っています... .

CPUを使用しているものを停止させても、MT4は問題なく動作しているように見えますが、CPU使用率はかなり低くなっています。

しかし、マイクロソフトの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と言うでしょう。私は、すべてのCPU統計が欲しいわけではなく、ただ、グラフィカル表示チャートにMT4プロセスカウンターを追加したときと同じように、MT4をして欲しいのです....

カウンターを追加するときに、プロセスを選択する必要があります。Processus、そして%CPU timeとプロセスを選択します。(私はフランス語で仕事をしているので、英語での正確な用語はわかりません)。
 
angevoyageur:
喜んで、しかし、私はいくつかのMicrosoft Debugging Tools for Windowsをインストールする必要があります...私はすぐにそれを得るために結果を投稿します。 。

OK。何か変です。スレッドが3つあるのですが、これをいじっているうちに%cpuが増えたような気がします。 ちょっと調べて 報告します。
 
私は、これらのterminal.exe+スレッドを2つ持っています。
 
angevoyageur:
カウンターを追加する際に、プロセスを選択する必要があります。Processus、%CPU timeの順でプロセスを選択します。(私はフランス語で仕事をしているので、英語での正確な用語はわかりません)。
OK もう一度やってみます。
 
RaptorUK:

あなたのプロセスエクスプローラーで何かチェックしてもらえないでしょうか?

Terminal.exeプロセスを見つけたら、ダブルクリックして、Threadsタブに移動してください。ターミナル.exe+と 呼ばれるスレッドが1つまたは2つあるかどうか. 私は2つ持っています... .

CPUを使用している方を殺すと、MT4はまだ問題なく動作しているように見えますが、CPU使用率はかなり低くなっています。


殺してみたが、もう着信ダニが出なかった。

マザーボードの電源監視ユーティリティによると、b625は約5WのCPUを使用していますが、b509は約1Wを使用しています。これはProcess ExplorerのCPUの数字を裏付けるようなものです。

 
euclid:


殺してみましたが、もう着信ティックは出ませんでした。

マザーボードの電源監視ユーティリティによると、b625は約5WのCPUを使用しているのに対し、b509は約1WのCPUを使用しているとのことです。これはProcess ExplorerのCPUの数値を裏付けているようです。

はい、私もそれを発見しました ... .
 
angevoyageur:
オッケー。何か変ですね。スレッドが3つあるのですが、これをいじっているうちに%cpuが増えたようです。ちょっと調べてみて報告 します。
いいえ、私は有用な何かを見ることができません。現在2つのターミナルスレッド(チャート、シンボルなし)があり、プラットフォームが何もしないことになっているにもかかわらず、%cpuが0.8%から2.1%に変化しています。チャートを開き、すべてのシンボルを表示すると、この%は3-4%程度になります。
 
angevoyageur:
いいえ、私は有用な何かを見ることができません。現在、2つのターミナル・スレッド(チャートもシンボルもなし)があり、プラットフォームが何もしないことになっているにもかかわらず、%cpu が 0.8% から 2.1% に変化しています。チャートを開き、すべてのシンボルを表示すると、この%は3-4%程度になります。
プラットフォームがまだインコムティックを受け入れているからでしょうか?