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
=====================================