interfaces perfstat_process

La interfaz perfstat_process devuelve un conjunto de estructuras de tipo perfstat_process_t, que se define en el archivo libperfstat.h .

El campo de la estructura perfstat_process_t incluye:
Elemento Descriptor
idproceso ID de proceso
nombre_proc Nombre del proceso
priorización proc Prioridad del proceso
núm_hebras Recuento de hebras
ID_proc Información del propietario
proc_classid Nombre de clase WLM
tamaño_proc Tamaño virtual del proceso
datos_mem_real_proc Memoria real utilizada para los datos en kilobytes
texto_mem_real_proc Memoria real utilizada para texto en kilobytes
datos_mem_virt_proc Memoria virtual utilizada para datos en kilobytes
texto_mem_virt_proc Memoria virtual utilizada para texto en kilobytes
tamaño_datos_lib_compartido Tamaño de datos de la biblioteca compartida en kilobytes
tamaño_almacenamiento dinámico Tamaño de almacenamiento dinámico en kilobytes
real_en_uso La memoria real en kilobytes utilizada por el proceso, incluidos los segmentos
virt_en_uso La memoria virtual en kilobytes utilizada por el proceso, incluidos los segmentos
Sujetos Memoria fijada en kilobytes utilizada para el proceso que incluye todos los segmentos
pgsp_en_uso El espacio de paginación en kilobytes utiliza todos los segmentos incluidos
páginas de archivo Páginas de archivo en kilobytes utilizadas, incluidas las páginas compartidas
correlación_inutilizada_real Memoria real en kilobytes utilizada para memoria compartida y regiones correlacionadas de memoria
virt_inuse_map Memoria virtual en kilobytes utilizada para memoria compartida y regiones correlacionadas de memoria
correlación_inus_de_inutilizable Memoria anclada en kilobytes para memoria compartida y regiones correlacionadas de memoria
hora_ucu Tiempo de CPU en modalidad de usuario en milisegundos
tiempo_scpu_hora Tiempo de CPU en modalidad de sistema en milisegundos
última_base_de_tiempo Contador de base de tiempo
inBytes Bytes leídos del disco
outBytes Bytes grabados en el disco
inOps En operaciones desde disco
outOps Operaciones de salida del disco
A continuación se muestra un ejemplo de código para la API perfstat_process :
#include <libperfstat.h>

void main()
{
  perfstat_process_t *proct;
  perfstat_id_t id;
  int i,rc,proc_count;

  /* Get the count of processes */
  proc_count = perfstat_process(NULL, NULL,sizeof(perfstat_process_t),0);

  /* check for error */
  if(proc_count <= 0)
  {
    perror("Error in perfstat_process");
    exit(-1) ;
  }
  printf("Number of Processes = %d\n",proc_count);

  /* Allocate enough memory */
  proct = (perfstat_process_t *)calloc(proc_count,sizeof(perfstat_process_t));
  if(proct == NULL)
  {
    perror("Memory Allocation Error");
    exit(-1) ;
  }

  strcpy(id.name,"");
  rc = perfstat_process(&id,proct,sizeof(perfstat_process_t),proc_count); 
  if(rc <= 0) 
  { 
    perror("Error in perfstat_process"); 
    exit(-1) ; 
  } 

  printf("\n =======Process Related metrics =======\n"); 
  for(i=0 ; i<proc_count ;i++)
  {
    printf("Process Name =                     %s\n",proct[i].proc_name);
    printf("Process ID =                       %lld\n",proct[i].pid);
    printf("Process priority =                 %d\n",proct[i].proc_priority);
    printf("Thread Count =                     %lld\n",proct[i].num_threads);
    printf("\nCredential Information\n");
    printf("Owner Info =                       %lld\n",proct[i].proc_uid);
    printf("WLM Class Name =                   %lld\n",proct[i].proc_classid);
    printf("\nMemory Related Statistics \n");
    printf("Process Virtual Size =             %lld KB \n",proct[i].proc_size);
    printf("Real Memory used for Data =        %lld KB \n",proct[i].proc_real_mem_data);
    printf("Real Memory used for Text =        %lld KB \n",proct[i].proc_real_mem_text);
    printf("Virtual Memory used for Data =     %lld KB \n",proct[i].proc_virt_mem_data);
    printf("Virtual Memory used for Text =     %lld KB \n",proct[i].proc_virt_mem_text);
    printf("Data Size from Shared Library =    %lld KB \n",proct[i].shared_lib_data_size);
    printf("Heap Size =                        %lld KB \n",proct[i].heap_size);
    printf("Real memory in use by process =    %lld KB \n",proct[i].real_inuse);
    printf("Virtual memory in use by process=  %lld KB \n",proct[i].virt_inuse);
    printf("Pinned Memory for this process =   %lld KB \n",proct[i].pinned);
    printf("Paging Space in use =              %lld KB \n",proct[i].pgsp_inuse);
    printf("File Pages used =                  %lld KB \n",proct[i].filepages);
    printf("Real memory used for Shared Memory and Memory Mapped regions =%lld KB \n", proct[i].real_inuse_map);
    printf("Virtual Memory used for Shared Memory and Memory Mapped regions =%lld KB \n", proct[i].virt_inuse_map);
    printf("Pinned memory for Shared Memory and Memory Mapped regions =%lld KB \n", proct[i].pinned_inuse_map);
    printf("\nCPU Related Statistics \n");
    printf("User Mode CPU time =               %lf ms\n",proct[i].ucpu_time);
    printf("System Mode CPU time =             %lf ms\n",proct[i].scpu_time);
    printf("Timebase Counter =                 %lld\n", proct[i].last_timebase);
    printf("\nDisk Related Statistics \n");
    printf("Bytes Written to Disk =            %lld\n",proct[i].inBytes);
    printf("Bytes Read from Disk =             %lld\n",proct[i].outBytes);
    printf("In Operations from Disk =          %lld\n",proct[i].inOps);
    printf("Out Operations from Disk =         %lld\n",proct[i].outOps);
    printf("=====================================\n");
    printf("\n\n");
    }
}

The program produces the output similar to the following:

Number of Processes = 77

 =======Process Related metrics =======
Process Name =                     swapper
Process ID =                       0
Process priority =                 16
Thread Count =                     0

Credential Information
Owner Info =                       0
WLM Class Name =                   257

Memory Related Statistics
Process Virtual Size =             384 KB
Real Memory used for Data =        384 KB
Real Memory used for Text =        0 KB
Virtual Memory used for Data =     384 KB
Virtual Memory used for Text =     0 KB
Data Size from Shared Library =    0 KB
Heap Size =                        0 KB
Real memory in use by process =    384 KB
Virtual memory in use by process=  384 KB
Pinned Memory for this process =   320 KB
Paging Space in use =              0 KB
File Pages used =                  0 KB
Real memory used for Shared Memory and Memory Mapped regions =0 KB
Virtual Memory used for Shared Memory and Memory Mapped regions =0 KB
Pinned memory for Shared Memory and Memory Mapped regions =0 KB

CPU Related Statistics
User Mode CPU time =               0.000000 ms
System Mode CPU time =             9262.345828 ms
Timebase Counter =                 7290723200327369

Disk Related Statistics
Bytes Written to Disk =            0
Bytes Read from Disk =             32768
In Operations from Disk =          0
Out Operations from Disk =         8
=====================================
El programa muestra una salida que es similar a la siguiente salida de ejemplo:
Number of Processes = 77

 =======Process Related metrics =======
Process Name =                     swapper
Process ID =                       0
Process priority =                 16
Thread Count =                     0

Credential Information
Owner Info =                       0
WLM Class Name =                   257

Memory Related Statistics
Process Virtual Size =             384 KB
Real Memory used for Data =        384 KB
Real Memory used for Text =        0 KB
Virtual Memory used for Data =     384 KB
Virtual Memory used for Text =     0 KB
Data Size from Shared Library =    0 KB
Heap Size =                        0 KB
Real memory in use by process =    384 KB
Virtual memory in use by process=  384 KB
Pinned Memory for this process =   320 KB
Paging Space in use =              0 KB
File Pages used =                  0 KB
Real memory used for Shared Memory and Memory Mapped regions =0 KB
Virtual Memory used for Shared Memory and Memory Mapped regions =0 KB
Pinned memory for Shared Memory and Memory Mapped regions =0 KB

CPU Related Statistics
User Mode CPU time =               0.000000 ms
System Mode CPU time =             9262.345828 ms
Timebase Counter =                 7290723200327369

Disk Related Statistics
Bytes Written to Disk =            0
Bytes Read from Disk =             32768
In Operations from Disk =          0
Out Operations from Disk =         8
=====================================