linux内核中提供了当前系统物理内存使用情况接口si_meminfo(),用于获取到物理内存使用情况,源码比较简单:
void si_meminfo(struct sysinfo *val)
{
val->totalram = totalram_pages();
val->sharedram = global_node_page_state(NR_SHMEM);
val->freeram = global_zone_page_state(NR_FREE_PAGES);
val->bufferram = nr_blockdev_pages();
val->totalhigh = totalhigh_pages();
val->freehigh = nr_free_highpages();
val->mem_unit = PAGE_SIZE;
}
totalram: 整个系统物理内存大小以页位单位
shareram: 共享内存share物理内存大小,以页为单位
freeram:当前系统可以使用的物理内存大小,以页为单位