[SIGAR-92] Add memory free and used in percentage units
This commit is contained in:
		
							parent
							
								
									31a5f214d3
								
							
						
					
					
						commit
						d826684c33
					
				@ -312,6 +312,34 @@ our %classes = (
 | 
				
			|||||||
             Win32   => 'taskman',
 | 
					             Win32   => 'taskman',
 | 
				
			||||||
         },
 | 
					         },
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					         name => 'used_percent', type => 'Double',
 | 
				
			||||||
 | 
					         desc => 'Percent total used system memory',
 | 
				
			||||||
 | 
					         plat => '*',
 | 
				
			||||||
 | 
					         cmd  => {
 | 
				
			||||||
 | 
					             AIX     => '',
 | 
				
			||||||
 | 
					             Darwin  => '',
 | 
				
			||||||
 | 
					             FreeBSD => '',
 | 
				
			||||||
 | 
					             HPUX    => '',
 | 
				
			||||||
 | 
					             Linux   => 'free',
 | 
				
			||||||
 | 
					             Solaris => '',
 | 
				
			||||||
 | 
					             Win32   => 'taskman',
 | 
				
			||||||
 | 
					         },
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					         name => 'free_percent', type => 'Double',
 | 
				
			||||||
 | 
					         desc => 'Percent total free system memory',
 | 
				
			||||||
 | 
					         plat => '*',
 | 
				
			||||||
 | 
					         cmd  => {
 | 
				
			||||||
 | 
					             AIX     => '',
 | 
				
			||||||
 | 
					             Darwin  => '',
 | 
				
			||||||
 | 
					             FreeBSD => '',
 | 
				
			||||||
 | 
					             HPUX    => '',
 | 
				
			||||||
 | 
					             Linux   => 'free',
 | 
				
			||||||
 | 
					             Solaris => '',
 | 
				
			||||||
 | 
					             Win32   => 'taskman',
 | 
				
			||||||
 | 
					         },
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
    ],
 | 
					    ],
 | 
				
			||||||
    Swap => [
 | 
					    Swap => [
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
 | 
				
			|||||||
@ -36,6 +36,10 @@ public class TestMem extends SigarTestCase {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        assertGtZeroTrace("Used", mem.getUsed());
 | 
					        assertGtZeroTrace("Used", mem.getUsed());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        traceln("UsedPercent=" + mem.getUsedPercent());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        traceln("FreePercent=" + mem.getFreePercent());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        assertGtZeroTrace("Free", mem.getFree());
 | 
					        assertGtZeroTrace("Free", mem.getFree());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        assertGtZeroTrace("ActualUsed", mem.getUsed());
 | 
					        assertGtZeroTrace("ActualUsed", mem.getUsed());
 | 
				
			||||||
 | 
				
			|||||||
@ -141,6 +141,8 @@ typedef struct {
 | 
				
			|||||||
        free,
 | 
					        free,
 | 
				
			||||||
        actual_used,
 | 
					        actual_used,
 | 
				
			||||||
        actual_free;
 | 
					        actual_free;
 | 
				
			||||||
 | 
					    double used_percent;
 | 
				
			||||||
 | 
					    double free_percent;
 | 
				
			||||||
} sigar_mem_t;
 | 
					} sigar_mem_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SIGAR_DECLARE(int) sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem);
 | 
					SIGAR_DECLARE(int) sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem);
 | 
				
			||||||
 | 
				
			|||||||
@ -457,11 +457,11 @@ int sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    mem->used = mem->total - mem->free;
 | 
					    mem->used = mem->total - mem->free;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sigar_mem_calc_ram(sigar, mem);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    mem->actual_free = mem->free;
 | 
					    mem->actual_free = mem->free;
 | 
				
			||||||
    mem->actual_used = mem->used;
 | 
					    mem->actual_used = mem->used;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sigar_mem_calc_ram(sigar, mem);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return SIGAR_OK;
 | 
					    return SIGAR_OK;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -79,8 +79,6 @@ int sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    mem->total = sigar->pstatic.physical_memory * pagesize;
 | 
					    mem->total = sigar->pstatic.physical_memory * pagesize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sigar_mem_calc_ram(sigar, mem);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    pstat_getdynamic(&stats, sizeof(stats), 1, 0);
 | 
					    pstat_getdynamic(&stats, sizeof(stats), 1, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    mem->free = stats.psd_free * pagesize;
 | 
					    mem->free = stats.psd_free * pagesize;
 | 
				
			||||||
@ -89,6 +87,8 @@ int sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem)
 | 
				
			|||||||
    mem->actual_free = mem->free;
 | 
					    mem->actual_free = mem->free;
 | 
				
			||||||
    mem->actual_used = mem->used;
 | 
					    mem->actual_used = mem->used;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sigar_mem_calc_ram(sigar, mem);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return SIGAR_OK;
 | 
					    return SIGAR_OK;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -441,9 +441,10 @@ int sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem)
 | 
				
			|||||||
    mem->actual_free = mem->free + kern;
 | 
					    mem->actual_free = mem->free + kern;
 | 
				
			||||||
    mem->actual_used = mem->used - kern;
 | 
					    mem->actual_used = mem->used - kern;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sigar_mem_calc_ram(sigar, mem);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (get_ram(sigar, mem) != SIGAR_OK) {
 | 
					    if (get_ram(sigar, mem) != SIGAR_OK) {
 | 
				
			||||||
        /* XXX other options on failure? */
 | 
					        /* XXX other options on failure? */
 | 
				
			||||||
        sigar_mem_calc_ram(sigar, mem);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return SIGAR_OK;
 | 
					    return SIGAR_OK;
 | 
				
			||||||
 | 
				
			|||||||
@ -65,11 +65,11 @@ int sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem)
 | 
				
			|||||||
        mem->free + mem->used +
 | 
					        mem->free + mem->used +
 | 
				
			||||||
        ((vmstats.inactive_count + vmstats.wire_count) * vmstats.pagesize);
 | 
					        ((vmstats.inactive_count + vmstats.wire_count) * vmstats.pagesize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sigar_mem_calc_ram(sigar, mem);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    mem->actual_free = mem->free;
 | 
					    mem->actual_free = mem->free;
 | 
				
			||||||
    mem->actual_used = mem->used;
 | 
					    mem->actual_used = mem->used;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sigar_mem_calc_ram(sigar, mem);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return SIGAR_OK;
 | 
					    return SIGAR_OK;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -172,8 +172,6 @@ int sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem)
 | 
				
			|||||||
    mem->total = sysconf(_SC_PHYS_PAGES);
 | 
					    mem->total = sysconf(_SC_PHYS_PAGES);
 | 
				
			||||||
    mem->total <<= sigar->pagesize;
 | 
					    mem->total <<= sigar->pagesize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sigar_mem_calc_ram(sigar, mem);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (sigar_kstat_update(sigar) == -1) {
 | 
					    if (sigar_kstat_update(sigar) == -1) {
 | 
				
			||||||
        return errno;
 | 
					        return errno;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -194,6 +192,8 @@ int sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem)
 | 
				
			|||||||
    mem->actual_free = mem->free;
 | 
					    mem->actual_free = mem->free;
 | 
				
			||||||
    mem->actual_used = mem->used;
 | 
					    mem->actual_used = mem->used;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sigar_mem_calc_ram(sigar, mem);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return SIGAR_OK;
 | 
					    return SIGAR_OK;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -627,11 +627,11 @@ SIGAR_DECLARE(int) sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    mem->used = mem->total - mem->free;
 | 
					    mem->used = mem->total - mem->free;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sigar_mem_calc_ram(sigar, mem);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    mem->actual_free = mem->free;
 | 
					    mem->actual_free = mem->free;
 | 
				
			||||||
    mem->actual_used = mem->used;
 | 
					    mem->actual_used = mem->used;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sigar_mem_calc_ram(sigar, mem);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return SIGAR_OK;
 | 
					    return SIGAR_OK;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -334,6 +334,12 @@ int sigar_mem_calc_ram(sigar_t *sigar, sigar_mem_t *mem)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    mem->ram = ram;
 | 
					    mem->ram = ram;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    mem->used_percent =
 | 
				
			||||||
 | 
					        ((double)(mem->total - mem->actual_free) * 100) / mem->total;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    mem->free_percent =
 | 
				
			||||||
 | 
					        ((double)(mem->total - mem->actual_used) * 100) / mem->total;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return ram;
 | 
					    return ram;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user