コード例 #1
0
static void loadCpuData(void) {
  int32 i;
  boolean foundIt = FALSE;
  PPERF_INSTANCE_DEFINITION PerfInst;

  lastFetchData = currentFetchData;
  currentFetchData.perfTimeMs = (uint32)(((__int64)PerfData->PerfTime100nSec.QuadPart) / 10000);

  if (ProcessorObj == NULL) {
#ifdef FLG_DEBUG
    fprintf(stderr, "DEBUG: loadCpuData, no ProcessorObj!\n");
#endif
    return;
    }
  if (ProcessObj == NULL) {
#ifdef FLG_DEBUG
    fprintf(stderr, "DEBUG: loadCpuData, no ProcessObj!\n");
#endif
    return;
    }
  if (ProcessObj->NumInstances <= 0) {
#ifdef FLG_DEBUG
    fprintf(stderr, "DEBUG: loadCpuData, ProcessObj->NumInstances <= 0!\n");
#endif
    return;
    }

  PerfInst = FirstInstance(ProcessorObj);
  for (i=0; i < (int32)ProcessorObj->NumInstances; i++) {
    PPERF_COUNTER_BLOCK PerfCntrBlk = (PPERF_COUNTER_BLOCK)((PBYTE)PerfInst + PerfInst->ByteLength);

    /* starts with "_" must be "_Total" */
    short* unicodePtr = (short*)((PBYTE)PerfInst + PerfInst->NameOffset);
    if (PerfInst->UniqueID == PERF_NO_UNIQUE_ID && unicodePtr[0] != '_') {
      PerfInst = NextInstance(PerfCntrBlk);
      continue;
      }

    currentFetchData.usertime = getLongValue(&processorCtrCache[TOTAL_USERTIME_IDX], PerfCntrBlk);
    currentFetchData.systime = getLongValue(&processorCtrCache[TOTAL_PRIVILEGEDTIME_IDX], PerfCntrBlk);
    currentFetchData.idletime = getLongValue(&processorCtrCache[TOTAL_PROCESSORTIME_IDX], PerfCntrBlk);
    currentFetchData.inttime = getLongValue(&processorCtrCache[INTERRUPTTIME_IDX], PerfCntrBlk);
    currentFetchData.interrupts = (uint32)getLongValue(&processorCtrCache[INTERRUPTS_IDX], PerfCntrBlk);
    foundIt = TRUE;
    break;
    }

#ifdef FLG_DEBUG
  if (!foundIt) {
    fprintf(stderr, "DEBUG: did not find processor named _Total!\n");
  }
#endif
}
コード例 #2
0
static void loadNetworkData(void)
{
  int32 i;
  unsigned int c;
  int32 val;
  char nausea[512];
  PPERF_COUNTER_DEFINITION PerfCntr;
  PPERF_COUNTER_DEFINITION CurCntr;
  PPERF_INSTANCE_DEFINITION PerfInst;
  PPERF_COUNTER_BLOCK PerfCntrBlk;

  if (NetworkObj == NULL) {
#ifdef FLG_DEBUG
    fprintf(stderr, "DEBUG: loadNetworkData, no NetworkObj!\n");
#endif
    return;
    }
  if (NetworkObj->NumInstances <= 0) {
#ifdef FLG_DEBUG
    fprintf(stderr, "DEBUG: loadNetworkData, NetworkObj->NumInstances <= 0!\n");
#endif
    return;
    }

  /* We're collecting sums, so start by zeroing out */
  netStats.loopbackPackets = 0;
  netStats.loopbackBytes = 0;
  netStats.packetsReceived = 0;
  netStats.bytesReceived = 0;
  netStats.packetsSent = 0;
  netStats.bytesSent = 0;


  PerfCntr = FirstCounter(NetworkObj);

  // retrieve all instances
  PerfInst = FirstInstance(NetworkObj);

  for (i = 0; i < NetworkObj->NumInstances; i ++) {
    boolean loopBack;

    wchar_t* unicodePtr = (wchar_t*)((PBYTE)PerfInst + PerfInst->NameOffset);
#if 0
    printf( "\n\tInstance %S: \n", unicodePtr);
#endif

    sprintf(nausea, "%S", unicodePtr);
    loopBack = strcmp(nausea, "MS TCP Loopback interface") == 0;

    PerfCntrBlk = (PPERF_COUNTER_BLOCK)((PBYTE)PerfInst + PerfInst->ByteLength);
    CurCntr = PerfCntr;

    // retrieve all counters
    for (c = 0; c < NetworkObj->NumCounters; c ++) {

#if 0
      printf("\t\tCounter %ld: %s\n",
         CurCntr->CounterNameTitleIndex,
         lpNamesArray[CurCntr->CounterNameTitleIndex]);
#endif

      switch (CurCntr->CounterNameTitleIndex) {
      case PACKETS_RECEIVED_ID:
        val = (int32)getLongValue(CurCntr, PerfCntrBlk);
        if (loopBack)
          netStats.loopbackPackets = val;
        else
          netStats.packetsReceived += val;
	break;
      case BYTES_RECEIVED_ID:
        val = (int32)getLongValue(CurCntr, PerfCntrBlk);
        if (loopBack)
          netStats.loopbackBytes = val;
        else
          netStats.bytesReceived += val;
	break;
      case PACKETS_SENT_ID:
        if (!loopBack) {
          val = (int32)getLongValue(CurCntr, PerfCntrBlk);
          netStats.packetsSent += val;
          }
	break;
      case BYTES_SENT_ID:
        if (!loopBack) {
          val = (int32)getLongValue(CurCntr, PerfCntrBlk);
          netStats.bytesSent += val;
          }
	break;
      default:
	/* unknown counter. just skip it. */
	break;
	}

      CurCntr = NextCounter(CurCntr);
      }
    PerfInst = NextInstance(PerfCntrBlk);
    }
}
コード例 #3
0
static void refreshProcess(jint pid, int32* intStorage, 
    int64* longStorage, double* doubleStorage)
{
#define INT_FIELD_STORE(field, value) \
    (intStorage[com_gemstone_gemfire_internal_WindowsProcessStats_##field##INT] = value)
#define LONG_FIELD_STORE(field, value) \
    (longStorage[com_gemstone_gemfire_internal_WindowsProcessStats_##field##LONG] = value)
#define DOUBLE_FIELD_STORE(field, value) \
    (doubleStorage[com_gemstone_gemfire_internal_WindowsProcessStats_##field##DOUBLE] = value)
#define FLOAT_FIELD_STORE(field, value) \
    DOUBLE_FIELD_STORE(field, (double)(value))

  int32 i;
  if (ProcessObj) {
    PPERF_INSTANCE_DEFINITION PerfInst;

    if (ProcessObj->NumInstances > 0) {
#if 0
      static int done = 0;
      if (!done) {
	done = 1;
	PerfInst = FirstInstance(ProcessObj);
	for (i=0; i < (int32)ProcessObj->NumInstances; i++) {
	  PPERF_COUNTER_BLOCK PerfCntrBlk;
	  PerfCntrBlk = (PPERF_COUNTER_BLOCK)((PBYTE)PerfInst + 
					      PerfInst->ByteLength);
	  printf("process: %s\n", getInstIdStr(PerfInst, "proc-"));
	  PerfInst = NextInstance(PerfCntrBlk);
	}
      }
#endif
      PerfInst = FirstInstance(ProcessObj);
      for (i=0; i < (int32)ProcessObj->NumInstances; i++) {
	PPERF_COUNTER_BLOCK PerfCntrBlk;
	PerfCntrBlk = (PPERF_COUNTER_BLOCK)((PBYTE)PerfInst + 
					    PerfInst->ByteLength);
	if (pid == getPid(pidCtrOffset, PerfCntrBlk)) {
          LONG_FIELD_STORE(activeTime, getLongValue(&processCtrCache[PROCESS_PROCESSORTIME_IDX], PerfCntrBlk));
          LONG_FIELD_STORE(userTime, getLongValue(&processCtrCache[PROCESS_USERTIME_IDX], PerfCntrBlk));
          LONG_FIELD_STORE(systemTime, getLongValue(&processCtrCache[PROCESS_PRIVILEGEDTIME_IDX], PerfCntrBlk));
          LONG_FIELD_STORE(virtualSizePeak, getLongValue(&processCtrCache[VIRTUALBYTESPEAK_IDX], PerfCntrBlk));
          LONG_FIELD_STORE(virtualSize, getLongValue(&processCtrCache[VIRTUALBYTES_IDX], PerfCntrBlk));

          LONG_FIELD_STORE(pageFaults, getLongValue(&processCtrCache[PAGEFAULTS_IDX], PerfCntrBlk));
          LONG_FIELD_STORE(workingSetSizePeak, getLongValue(&processCtrCache[WORKINGSETPEAK_IDX], PerfCntrBlk));
          LONG_FIELD_STORE(workingSetSize, getLongValue(&processCtrCache[WORKINGSET_IDX], PerfCntrBlk));
          LONG_FIELD_STORE(pageFileSizePeak, getLongValue(&processCtrCache[PAGEFILEBYTESPEAK_IDX], PerfCntrBlk));
          LONG_FIELD_STORE(pageFileSize, getLongValue(&processCtrCache[PAGEFILEBYTES_IDX], PerfCntrBlk));


          LONG_FIELD_STORE(privateSize, getLongValue(&processCtrCache[PRIVATEBYTES_IDX], PerfCntrBlk));
          INT_FIELD_STORE(threads, (int32)getLongValue(&processCtrCache[THREADCOUNT_IDX], PerfCntrBlk));
          INT_FIELD_STORE(priorityBase, (int32)getLongValue(&processCtrCache[PRIORITYBASE_IDX], PerfCntrBlk));
       /* ELAPSEDTIME omitted? */
       /* POOLPAGEDBYTES omitted? */

       /* POOLNONPAGEBYTES omitted? */
          INT_FIELD_STORE(handles, (int32)getLongValue(&processCtrCache[HANDLECOUNT_IDX], PerfCntrBlk));

          return;
	}
	PerfInst = NextInstance(PerfCntrBlk);
      }
    } else {
#ifdef FLG_DEBUG
      fprintf(stderr, "DEBUG: unexpected 0 instances!\n");
#endif
    }  
  }
#undef INT_FIELD_STORE
#undef LONG_FIELD_STORE
#undef FLOAT_FIELD_STORE
#undef DOUBLE_FIELD_STORE
}
コード例 #4
0
static void refreshSystem(int32* intStorage, int64* longStorage, double* doubleStorage)
{
#define INT_FIELD_STORE(field, value) \
    (intStorage[com_gemstone_gemfire_internal_WindowsSystemStats_##field##INT] = (int32)(value))
#define LONG_FIELD_STORE(field, value) \
    (longStorage[com_gemstone_gemfire_internal_WindowsSystemStats_##field##LONG] = (int64)(value))
#define DOUBLE_FIELD_STORE(field, value) \
    (doubleStorage[com_gemstone_gemfire_internal_WindowsSystemStats_##field##DOUBLE] = (double)(value))
#define FLOAT_FIELD_STORE(field, value) \
    DOUBLE_FIELD_STORE(field, (double)(value))

  {
    float usertime = 0.0;
    float systime = 0.0;
    float idletime = 0.0;
    float activetime = 0.0;
    float inttime = 0.0;
    if (lastFetchData.perfTimeMs != 0) {
      uint32 timeDelta = currentFetchData.perfTimeMs - lastFetchData.perfTimeMs;
      int64 valueDelta;
      valueDelta = currentFetchData.usertime - lastFetchData.usertime;
      usertime = (float)(100.0 * ((double)valueDelta / timeDelta));
      valueDelta = currentFetchData.systime - lastFetchData.systime;
      systime = (float)(100.0 * ((double)valueDelta / timeDelta));
      valueDelta = currentFetchData.inttime - lastFetchData.inttime;
      inttime = (float)(100.0 * ((double)valueDelta / timeDelta));
      valueDelta = currentFetchData.idletime - lastFetchData.idletime;
      idletime = (float)(100.0 * ((double)valueDelta / timeDelta));
      activetime = (float)(100.0 - idletime);
    }

    FLOAT_FIELD_STORE(cpuActive, activetime);
    FLOAT_FIELD_STORE(cpuUser, usertime);
    FLOAT_FIELD_STORE(cpuSystem, systime);
    FLOAT_FIELD_STORE(cpuInterrupt, inttime);
    FLOAT_FIELD_STORE(cpuIdle, idletime);
    INT_FIELD_STORE(interrupts, currentFetchData.interrupts);
  }

  if (SystemObj) {
    if (SystemObj->NumInstances == PERF_NO_INSTANCES) {
      PPERF_COUNTER_BLOCK PerfCntrBlk;
      PerfCntrBlk = (PPERF_COUNTER_BLOCK)FirstInstance(SystemObj);

      LONG_FIELD_STORE(contextSwitches, getLongValue(&systemCtrCache[TOTALCONTEXTSWITCHES_IDX], PerfCntrBlk));
      LONG_FIELD_STORE(systemCalls, getLongValue(&systemCtrCache[TOTALSYSTEMCALLS_IDX], PerfCntrBlk));
      INT_FIELD_STORE(processorQueueLength, getLongValue(&systemCtrCache[PROCESSORQUEUELENGTH_IDX], PerfCntrBlk));
      INT_FIELD_STORE(registryQuotaInUse, getLongValue(&systemCtrCache[REGISTRYQUOTAINUSE_IDX], PerfCntrBlk));


    } else {
#ifdef FLG_DEBUG
      fprintf(stderr, "DEBUG: unexpected >0 instances!\n");
#endif
    }
  }

  if (UdpObj) {
    if (UdpObj->NumInstances == PERF_NO_INSTANCES) {
      PPERF_COUNTER_BLOCK PerfCntrBlk;
      PerfCntrBlk = (PPERF_COUNTER_BLOCK)FirstInstance(UdpObj);

      INT_FIELD_STORE(dgramsReceived, getLongValue(&udpCtrCache[DATAGRAMS_RECEIVED_PER_SEC_IDX], PerfCntrBlk));
      INT_FIELD_STORE(dgramsNoPort, getLongValue(&udpCtrCache[DATAGRAMS_NO_PORT_PER_SEC_IDX], PerfCntrBlk));
      INT_FIELD_STORE(dgramsReceivedErrors, getLongValue(&udpCtrCache[DATAGRAMS_RECEIVED_ERRORS_IDX], PerfCntrBlk));
      INT_FIELD_STORE(dgramsSent, getLongValue(&udpCtrCache[DATAGRAMS_SENT_PER_SEC_IDX], PerfCntrBlk));
    } else {
#ifdef FLG_DEBUG
      fprintf(stderr, "DEBUG: unexpected >0 instances!\n");
#endif
    }
    
    }

  if (MemoryObj) {
    if (MemoryObj->NumInstances == PERF_NO_INSTANCES) {
      PPERF_COUNTER_BLOCK PerfCntrBlk;
      PerfCntrBlk = (PPERF_COUNTER_BLOCK)FirstInstance(MemoryObj);

      LONG_FIELD_STORE(availableMemory, getLongValue(&memoryCtrCache[AVAILABLEBYTES_IDX], PerfCntrBlk));
      LONG_FIELD_STORE(committedMemory, getLongValue(&memoryCtrCache[COMMITTEDBYTES_IDX], PerfCntrBlk));
      LONG_FIELD_STORE(committedMemoryLimit, getLongValue(&memoryCtrCache[COMMITLIMIT_IDX], PerfCntrBlk));
      LONG_FIELD_STORE(pageFaults, getLongValue(&memoryCtrCache[TOTALPAGEFAULTS_IDX], PerfCntrBlk));
      LONG_FIELD_STORE(cacheFaults, getLongValue(&memoryCtrCache[CACHEFAULTS_IDX], PerfCntrBlk));
      LONG_FIELD_STORE(demandZeroFaults, getLongValue(&memoryCtrCache[DEMANDZEROFAULTS_IDX], PerfCntrBlk));
      LONG_FIELD_STORE(pages, getLongValue(&memoryCtrCache[PAGES_IDX], PerfCntrBlk));
      LONG_FIELD_STORE(pagesInput, getLongValue(&memoryCtrCache[PAGESINPUT_IDX], PerfCntrBlk));
      LONG_FIELD_STORE(pageReads, getLongValue(&memoryCtrCache[PAGEREADS_IDX], PerfCntrBlk));
      LONG_FIELD_STORE(pagesOutput, getLongValue(&memoryCtrCache[PAGESOUTPUT_IDX], PerfCntrBlk));
      LONG_FIELD_STORE(pageWrites, getLongValue(&memoryCtrCache[PAGEWRITES_IDX], PerfCntrBlk));
      LONG_FIELD_STORE(cacheSize, getLongValue(&memoryCtrCache[CACHEBYTES_IDX], PerfCntrBlk));
      LONG_FIELD_STORE(cacheSizePeak, getLongValue(&memoryCtrCache[CACHEBYTESPEAK_IDX], PerfCntrBlk));
      INT_FIELD_STORE(committedMemoryInUse, getLongValue(&memoryCtrCache[COMMITTEDBYTESINUSE_IDX], PerfCntrBlk));
    } else {
#ifdef FLG_DEBUG
      fprintf(stderr, "DEBUG: unexpected >0 instances!\n");
#endif
    }
  }

  if (ObjectsObj) {
    if (ObjectsObj->NumInstances == PERF_NO_INSTANCES) {
      PPERF_COUNTER_BLOCK PerfCntrBlk;
      PerfCntrBlk = (PPERF_COUNTER_BLOCK)FirstInstance(ObjectsObj);

      INT_FIELD_STORE(processes, getLongValue(&objectsCtrCache[PROCESSES_IDX], PerfCntrBlk));
      INT_FIELD_STORE(threads, getLongValue(&objectsCtrCache[THREADS_IDX], PerfCntrBlk));
      INT_FIELD_STORE(events, getLongValue(&objectsCtrCache[EVENTS_IDX], PerfCntrBlk));
      INT_FIELD_STORE(semaphores, getLongValue(&objectsCtrCache[SEMAPHORES_IDX], PerfCntrBlk));
      INT_FIELD_STORE(mutexes, getLongValue(&objectsCtrCache[MUTEXES_IDX], PerfCntrBlk));
      INT_FIELD_STORE(sharedMemorySections, getLongValue(&objectsCtrCache[SECTIONS_IDX], PerfCntrBlk));
    } else {
#ifdef FLG_DEBUG
      fprintf(stderr, "DEBUG: unexpected >0 instances!\n");
#endif
    }
  }

  if (NetworkObj) {
    INT_FIELD_STORE(loopbackPackets, netStats.loopbackPackets);
    INT_FIELD_STORE(loopbackBytes, netStats.loopbackBytes);
    INT_FIELD_STORE(netPacketsReceived, netStats.packetsReceived);
    INT_FIELD_STORE(netBytesReceived, netStats.bytesReceived);
    INT_FIELD_STORE(netPacketsSent, netStats.packetsSent);
    INT_FIELD_STORE(netBytesSent, netStats.bytesSent);
    }
#undef INT_FIELD_STORE
#undef LONG_FIELD_STORE
#undef FLOAT_FIELD_STORE
#undef DOUBLE_FIELD_STORE
}
コード例 #5
0
int FGPropertyManager::GetLong (const string &name, long defaultValue )
{
  return getLongValue(name.c_str(), defaultValue);
}
コード例 #6
0
int FGPropertyNode::GetLong (const string &name, long defaultValue ) const
{
  return getLongValue(name.c_str(), defaultValue);
}