perfstat_process interfaces
The perfstat_process
interface returns
a set of structures of type perfstat_process_t
, which
is defined in the libperfstat.h file.
The field of the
perfstat_process_t
structure
includes:
Item | Descriptor |
---|---|
pid | Process ID |
proc_name | Name of the process |
proc_priority | Priority of the process |
num_threads | Thread count |
proc_uid | Information of the owner |
proc_classid | WLM class name |
proc_size | Virtual size of the process |
proc_real_mem_data | Real memory used for the data in kilobytes |
proc_real_mem_text | Real memory used for text in kilobytes |
proc_virt_mem_data | Virtual memory used for data in kilobytes |
proc_virt_mem_text | Virtual memory used for text in kilobytes |
shared_lib_data_size | Data size from shared library in kilobytes |
heap_size | Heap size in kilobytes |
real_inuse | The real memory in kilobytes used by the process including the segments |
virt_inuse | The virtual memory in kilobytes used by the process including the segments |
pinned | Pinned memory in kilobytes used for the process that is inclusive of all segments |
pgsp_inuse | Paging space in kilobytes uses inclusive of all segments |
filepages | File pages in kilobytes used including shared pages |
real_inuse_map | Real memory in kilobytes used for shared memory and memory mapped regions |
virt_inuse_map | Virtual memory in kilobytes used for shared memory and memory mapped regions |
pinned_inuse_map | Pinned memory in kilobytes for shared memory and memory mapped regions |
ucpu_time | User mode CPU time in milliseconds |
scpu_time | System mode CPU time in milliseconds |
last_timebase | Timebase counter |
inBytes | Bytes read from the disk |
outBytes | Bytes written to the disk |
inOps | In operations from disk |
outOps | Out operations from disk |
The following is an example of code for the
perfstat_process
API:#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
=====================================
The
program displays an output that is similar to the following example
output: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
=====================================