vmstat si and so fields zero with -S mM 1
'si' and 'so' values depend on the result of the unitConvert function where the output is a fixed-point size of kb_per_page after the conversion. It gives 4 for kB units and 0 for MB units. This also causes problems when switching between 'K' and 'k' since the output value is 4 in both cases and the result for 'k' and 'K' then doesn't differ ... I swapped the conversion with multiplication in order to make the number higher so it doesn't lose precision. Since the unitConvert now accepts long instead of int, I had to change the input type from int to long. Signed-off-by: Craig Small <csmall@enc.com.au>
This commit is contained in:
parent
7696bd200e
commit
00d7d4e37a
10
vmstat.c
10
vmstat.c
@ -220,7 +220,7 @@ static void new_header(void)
|
|||||||
_("wa"));
|
_("wa"));
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned long unitConvert(unsigned int size)
|
static unsigned long unitConvert(unsigned long size)
|
||||||
{
|
{
|
||||||
float cvSize;
|
float cvSize;
|
||||||
cvSize = (float)size / dataUnit * ((statMode == SLABSTAT) ? 1 : 1024);
|
cvSize = (float)size / dataUnit * ((statMode == SLABSTAT) ? 1 : 1024);
|
||||||
@ -264,8 +264,8 @@ static void new_format(void)
|
|||||||
unitConvert(kb_swap_used), unitConvert(kb_main_free),
|
unitConvert(kb_swap_used), unitConvert(kb_main_free),
|
||||||
unitConvert(a_option?kb_inactive:kb_main_buffers),
|
unitConvert(a_option?kb_inactive:kb_main_buffers),
|
||||||
unitConvert(a_option?kb_active:kb_main_cached),
|
unitConvert(a_option?kb_active:kb_main_cached),
|
||||||
(unsigned)( (*pswpin * unitConvert(kb_per_page) * hz + divo2) / Div ),
|
(unsigned)( (unitConvert(*pswpin * kb_per_page) * hz + divo2) / Div ),
|
||||||
(unsigned)( (*pswpout * unitConvert(kb_per_page) * hz + divo2) / Div ),
|
(unsigned)( (unitConvert(*pswpout * kb_per_page) * hz + divo2) / Div ),
|
||||||
(unsigned)( (*pgpgin * hz + divo2) / Div ),
|
(unsigned)( (*pgpgin * hz + divo2) / Div ),
|
||||||
(unsigned)( (*pgpgout * hz + divo2) / Div ),
|
(unsigned)( (*pgpgout * hz + divo2) / Div ),
|
||||||
(unsigned)( (*intr * hz + divo2) / Div ),
|
(unsigned)( (*intr * hz + divo2) / Div ),
|
||||||
@ -320,9 +320,9 @@ static void new_format(void)
|
|||||||
unitConvert(a_option?kb_inactive:kb_main_buffers),
|
unitConvert(a_option?kb_inactive:kb_main_buffers),
|
||||||
unitConvert(a_option?kb_active:kb_main_cached),
|
unitConvert(a_option?kb_active:kb_main_cached),
|
||||||
/*si */
|
/*si */
|
||||||
(unsigned)( ( (pswpin [tog] - pswpin [!tog])*unitConvert(kb_per_page)+sleep_half )/sleep_time ),
|
(unsigned)( ( unitConvert((pswpin [tog] - pswpin [!tog])*kb_per_page)+sleep_half )/sleep_time ),
|
||||||
/* so */
|
/* so */
|
||||||
(unsigned)( ( (pswpout[tog] - pswpout[!tog])*unitConvert(kb_per_page)+sleep_half )/sleep_time ),
|
(unsigned)( ( unitConvert((pswpout[tog] - pswpout[!tog])*kb_per_page)+sleep_half )/sleep_time ),
|
||||||
/* bi */
|
/* bi */
|
||||||
(unsigned)( ( pgpgin [tog] - pgpgin [!tog] +sleep_half )/sleep_time ),
|
(unsigned)( ( pgpgin [tog] - pgpgin [!tog] +sleep_half )/sleep_time ),
|
||||||
/* bo */
|
/* bo */
|
||||||
|
Loading…
Reference in New Issue
Block a user