libprocps: use float to calculate %use of slabtop
In some environments, 100 * nr_active_objs is calculated at first, and the result of lower 32bits is divided by nr_objs. This occurs even in a 64-bit architecture. So nr_active_objes > 42949672, %use will be incorrect. This fix casts type of nr_active_objs to float to calculate correctly the %use in 32-bit/64-bit architectures. Signed-off-by: Takayuki Nagata <tnagata@redhat.com>
This commit is contained in:
parent
636b48efd8
commit
23ba442c88
@ -179,7 +179,7 @@ static int parse_slabinfo20(struct slab_info **list, struct slab_stat *stats,
|
|||||||
curr->cache_size = (unsigned long)curr->nr_slabs * curr->pages_per_slab * page_size;
|
curr->cache_size = (unsigned long)curr->nr_slabs * curr->pages_per_slab * page_size;
|
||||||
|
|
||||||
if (curr->nr_objs) {
|
if (curr->nr_objs) {
|
||||||
curr->use = 100 * curr->nr_active_objs / curr->nr_objs;
|
curr->use = 100 * (float)curr->nr_active_objs / curr->nr_objs;
|
||||||
stats->nr_active_caches++;
|
stats->nr_active_caches++;
|
||||||
} else
|
} else
|
||||||
curr->use = 0;
|
curr->use = 0;
|
||||||
@ -258,7 +258,7 @@ static int parse_slabinfo11(struct slab_info **list, struct slab_stat *stats,
|
|||||||
curr->cache_size = (unsigned long)curr->nr_slabs * curr->pages_per_slab * page_size;
|
curr->cache_size = (unsigned long)curr->nr_slabs * curr->pages_per_slab * page_size;
|
||||||
|
|
||||||
if (curr->nr_objs) {
|
if (curr->nr_objs) {
|
||||||
curr->use = 100 * curr->nr_active_objs / curr->nr_objs;
|
curr->use = 100 * (float)curr->nr_active_objs / curr->nr_objs;
|
||||||
stats->nr_active_caches++;
|
stats->nr_active_caches++;
|
||||||
} else
|
} else
|
||||||
curr->use = 0;
|
curr->use = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user