summaryrefslogtreecommitdiff
path: root/vmstat.c
diff options
context:
space:
mode:
authorCraig Small <csmall@dropbear.xyz>2016-05-14 16:28:47 +1000
committerCraig Small <csmall@dropbear.xyz>2016-05-14 16:28:47 +1000
commit2e6435a39dd8260462652b999c1bb45e15ae0d62 (patch)
tree040272724f3f7f144f12aa8da23b00e21a2ec298 /vmstat.c
parentd8d375fce2ed02adc06c87e7c57904c6f4b1b70e (diff)
downloadprocps-ng-2e6435a39dd8260462652b999c1bb45e15ae0d62.tar.gz
vmstat: use_format use new stat select
While new_format was using the new stat select feature the use_format did not. This type of format now uses the select setup for both the meminfo and stat set of information.
Diffstat (limited to 'vmstat.c')
-rw-r--r--vmstat.c164
1 files changed, 110 insertions, 54 deletions
diff --git a/vmstat.c b/vmstat.c
index d6919c0..51dae28 100644
--- a/vmstat.c
+++ b/vmstat.c
@@ -443,6 +443,11 @@ static void new_format(void)
procps_stat_unref(&sys_info);
procps_vmstat_unref(&vm_info);
procps_meminfo_unref(&mem_info);
+#undef TICv
+#undef DTICv
+#undef SYSv
+#undef DSYSv
+#undef MEMv
}
static void diskpartition_header(const char *partition_name)
@@ -759,68 +764,119 @@ static void disksum_format(void)
procps_diskstat_unref(&disk_stat);
}
+static enum stat_item Sum_stat_items[] = {
+ PROCPS_STAT_TIC_USER,
+ PROCPS_STAT_TIC_NICE,
+ PROCPS_STAT_TIC_SYSTEM,
+ PROCPS_STAT_TIC_IDLE,
+ PROCPS_STAT_TIC_IOWAIT,
+ PROCPS_STAT_TIC_IRQ,
+ PROCPS_STAT_TIC_SOFTIRQ,
+ PROCPS_STAT_TIC_STOLEN,
+ PROCPS_STAT_TIC_GUEST,
+ PROCPS_STAT_TIC_GUEST_NICE,
+ PROCPS_STAT_SYS_CTX_SWITCHES,
+ PROCPS_STAT_SYS_INTERRUPTS,
+ PROCPS_STAT_SYS_TIME_OF_BOOT,
+ PROCPS_STAT_SYS_PROC_CREATED
+};
+
+enum Rel_sumstatitems {
+ sstat_USR, sstat_NIC, sstat_SYS, sstat_IDL,
+ sstat_IOW, sstat_IRQ, sstat_SRQ, sstat_STO,
+ sstat_GST, sstat_GNI,
+ sstat_CTX, sstat_INT, sstat_TOB,
+ sstat_PCR
+};
+
+static enum meminfo_item Sum_mem_items[] = {
+ PROCPS_MEMINFO_MEM_TOTAL,
+ PROCPS_MEMINFO_MEM_USED,
+ PROCPS_MEMINFO_MEM_ACTIVE,
+ PROCPS_MEMINFO_MEM_INACTIVE,
+ PROCPS_MEMINFO_MEM_FREE,
+ PROCPS_MEMINFO_MEM_BUFFERS,
+ PROCPS_MEMINFO_MEM_CACHED,
+ PROCPS_MEMINFO_SWAP_TOTAL,
+ PROCPS_MEMINFO_SWAP_USED,
+ PROCPS_MEMINFO_SWAP_FREE,
+};
+
+enum Rel_summemitems {
+ smem_MTOT, smem_MUSE, smem_MACT, smem_MIAC, smem_MFRE,
+ smem_MBUF, smem_MCAC,
+ smem_STOT, smem_SUSE, smem_SFRE
+};
+
static void sum_format(void)
{
- struct procps_statinfo *sys_info = NULL;
- struct procps_vmstat *vm_info = NULL;
- struct procps_meminfo *mem_info = NULL;
+#define TICv(E) PROCPS_STAT_VAL(E, ull_int, stat_stack)
+#define SYSv(E) PROCPS_STAT_VAL(E, ul_int, stat_stack)
+#define MEMv(E) unitConvert(PROCPS_STAT_VAL(E, ul_int, mem_stack))
+ struct procps_statinfo *sys_info = NULL;
+ struct procps_vmstat *vm_info = NULL;
+ struct procps_meminfo *mem_info = NULL;
+ struct stat_stack *stat_stack;
+ struct meminfo_stack *mem_stack;
- if (procps_stat_new(&sys_info) < 0)
- xerrx(EXIT_FAILURE,
- _("Unable to create system stat structure"));
- if (procps_vmstat_new(&vm_info) < 0)
- xerrx(EXIT_FAILURE,
- _("Unable to create vmstat structure"));
- if (procps_vmstat_read(vm_info) < 0)
- xerrx(EXIT_FAILURE,
- _("Unable to read vmstat information"));
-
- if (procps_meminfo_new(&mem_info) < 0)
- xerrx(EXIT_FAILURE, _("Unable to create meminfo structure"));
-
- printf(_("%13lu %s total memory\n"), unitConvert(procps_meminfo_get(
- mem_info, PROCPS_MEMINFO_MEM_TOTAL)), szDataUnit);
- printf(_("%13lu %s used memory\n"), unitConvert(procps_meminfo_get(
- mem_info, PROCPS_MEMINFO_MEM_USED)), szDataUnit);
- printf(_("%13lu %s active memory\n"), unitConvert(procps_meminfo_get(
- mem_info, PROCPS_MEMINFO_MEM_ACTIVE)), szDataUnit);
- printf(_("%13lu %s inactive memory\n"), unitConvert(
- procps_meminfo_get(mem_info, PROCPS_MEMINFO_MEM_INACTIVE)), szDataUnit);
- printf(_("%13lu %s free memory\n"), unitConvert(procps_meminfo_get(
- mem_info, PROCPS_MEMINFO_MEM_FREE)), szDataUnit);
- printf(_("%13lu %s buffer memory\n"), unitConvert(procps_meminfo_get(
- mem_info, PROCPS_MEMINFO_MEM_BUFFERS)), szDataUnit);
- printf(_("%13lu %s swap cache\n"), unitConvert(procps_meminfo_get(
- mem_info, PROCPS_MEMINFO_MEM_CACHED)), szDataUnit);
- printf(_("%13lu %s total swap\n"), unitConvert(procps_meminfo_get(
- mem_info, PROCPS_MEMINFO_SWAP_TOTAL)), szDataUnit);
- printf(_("%13lu %s used swap\n"), unitConvert(procps_meminfo_get(
- mem_info, PROCPS_MEMINFO_SWAP_USED)), szDataUnit);
- printf(_("%13lu %s free swap\n"), unitConvert(procps_meminfo_get(
- mem_info, PROCPS_MEMINFO_SWAP_FREE)), szDataUnit);
- printf(_("%13lld non-nice user cpu ticks\n"), procps_stat_get(sys_info, PROCPS_STAT_TIC_USER));
- printf(_("%13lld nice user cpu ticks\n"), procps_stat_get(sys_info, PROCPS_STAT_TIC_NICE));
- printf(_("%13lld system cpu ticks\n"), procps_stat_get(sys_info, PROCPS_STAT_TIC_SYSTEM));
- printf(_("%13lld idle cpu ticks\n"), procps_stat_get(sys_info, PROCPS_STAT_TIC_IDLE));
- printf(_("%13lld IO-wait cpu ticks\n"), procps_stat_get(sys_info, PROCPS_STAT_TIC_IOWAIT));
- printf(_("%13lld IRQ cpu ticks\n"), procps_stat_get(sys_info, PROCPS_STAT_TIC_IRQ));
- printf(_("%13lld softirq cpu ticks\n"), procps_stat_get(sys_info, PROCPS_STAT_TIC_SOFTIRQ));
- printf(_("%13lld stolen cpu ticks\n"), procps_stat_get(sys_info, PROCPS_STAT_TIC_STOLEN));
- printf(_("%13lld non-nice guest cpu ticks\n"), procps_stat_get(sys_info, PROCPS_STAT_TIC_GUEST));
- printf(_("%13lld nice guest cpu ticks\n"), procps_stat_get(sys_info, PROCPS_STAT_TIC_GUEST_NICE));
- printf(_("%13lu pages paged in\n"), procps_vmstat_get(vm_info, PROCPS_VMSTAT_PGPGIN));
- printf(_("%13lu pages paged out\n"), procps_vmstat_get(vm_info, PROCPS_VMSTAT_PGPGOUT));
- printf(_("%13lu pages swapped in\n"), procps_vmstat_get(vm_info, PROCPS_VMSTAT_PSWPIN));
- printf(_("%13lu pages swapped out\n"), procps_vmstat_get(vm_info, PROCPS_VMSTAT_PSWPOUT));
- printf(_("%13lld interrupts\n"), procps_stat_get(sys_info, PROCPS_STAT_SYS_INTERRUPTS));
- printf(_("%13lld CPU context switches\n"), procps_stat_get(sys_info, PROCPS_STAT_SYS_CTX_SWITCHES));
- printf(_("%13lld boot time\n"), procps_stat_get(sys_info, PROCPS_STAT_SYS_TIME_OF_BOOT));
- printf(_("%13lld forks\n"), procps_stat_get(sys_info, PROCPS_STAT_SYS_PROC_CREATED));
+ if (procps_stat_new(&sys_info) < 0)
+ xerrx(EXIT_FAILURE,
+ _("Unable to create system stat structure"));
+ if ((stat_stack = procps_stat_select(sys_info, Sum_stat_items, 14)) ==
+ NULL)
+ xerrx(EXIT_FAILURE,
+ _("Unable to select stat information"));
+
+ if (procps_vmstat_new(&vm_info) < 0)
+ xerrx(EXIT_FAILURE,
+ _("Unable to create vmstat structure"));
+ if (procps_vmstat_read(vm_info) < 0)
+ xerrx(EXIT_FAILURE,
+ _("Unable to read vmstat information"));
+
+ if (procps_meminfo_new(&mem_info) < 0)
+ xerrx(EXIT_FAILURE, _("Unable to create meminfo structure"));
+ if ((mem_stack = procps_meminfo_select(mem_info, Sum_mem_items, 10)) ==
+ NULL)
+ xerrx(EXIT_FAILURE,
+ _("Unable to select memory information"));
+
+ printf(_("%13lu %s total memory\n"), MEMv(smem_MTOT), szDataUnit);
+ printf(_("%13lu %s used memory\n"), MEMv(smem_MUSE), szDataUnit);
+ printf(_("%13lu %s active memory\n"), MEMv(smem_MACT), szDataUnit);
+ printf(_("%13lu %s inactive memory\n"), MEMv(smem_MIAC), szDataUnit);
+ printf(_("%13lu %s free memory\n"), MEMv(smem_MFRE), szDataUnit);
+ printf(_("%13lu %s buffer memory\n"), MEMv(smem_MBUF), szDataUnit);
+ printf(_("%13lu %s swap cache\n"), MEMv(smem_MCAC), szDataUnit);
+ printf(_("%13lu %s total swap\n"), MEMv(smem_STOT), szDataUnit);
+ printf(_("%13lu %s used swap\n"), MEMv(smem_SUSE), szDataUnit);
+ printf(_("%13lu %s free swap\n"), MEMv(smem_SFRE), szDataUnit);
+ printf(_("%13lld non-nice user cpu ticks\n"), TICv(sstat_USR));
+ printf(_("%13lld nice user cpu ticks\n"), TICv(sstat_NIC));
+ printf(_("%13lld system cpu ticks\n"), TICv(sstat_SYS));
+ printf(_("%13lld idle cpu ticks\n"), TICv(sstat_IDL));
+ printf(_("%13lld IO-wait cpu ticks\n"), TICv(sstat_IOW));
+ printf(_("%13lld IRQ cpu ticks\n"), TICv(sstat_IRQ));
+ printf(_("%13lld softirq cpu ticks\n"), TICv(sstat_SRQ));
+ printf(_("%13lld stolen cpu ticks\n"), TICv(sstat_STO));
+ printf(_("%13lld non-nice guest cpu ticks\n"), TICv(sstat_GST));
+ printf(_("%13lld nice guest cpu ticks\n"), TICv(sstat_GNI));
+ printf(_("%13lu pages paged in\n"), procps_vmstat_get(vm_info, PROCPS_VMSTAT_PGPGIN));
+ printf(_("%13lu pages paged out\n"), procps_vmstat_get(vm_info, PROCPS_VMSTAT_PGPGOUT));
+ printf(_("%13lu pages swapped in\n"), procps_vmstat_get(vm_info, PROCPS_VMSTAT_PSWPIN));
+ printf(_("%13lu pages swapped out\n"), procps_vmstat_get(vm_info, PROCPS_VMSTAT_PSWPOUT));
+ printf(_("%13lld interrupts\n"), SYSv(sstat_INT));
+ printf(_("%13lld CPU context switches\n"), SYSv(sstat_CTX));
+ printf(_("%13lld boot time\n"), SYSv(sstat_TOB));
+ printf(_("%13lld forks\n"), SYSv(sstat_PCR));
/* Cleanup */
procps_stat_unref(&sys_info);
procps_vmstat_unref(&vm_info);
procps_meminfo_unref(&mem_info);
+#undef TICv
+#undef SYSv
+#undef MEMv
}
static void fork_format(void)