hugepage的作用:
1. 就是减少页的切换,页表项减少,产生缺页中断的次数也减少
2. 降低TLB的miss次数
static uint64_t
get_default_hp_size(void)
{
const char proc_meminfo[] = "/proc/meminfo";
const char str_hugepagesz[] = "Hugepagesize:";
unsigned hugepagesz_len = sizeof(str_hugepagesz) - 1;
char buffer[256];
unsigned long long size = 0;
FILE *fd = fopen(proc_meminfo, "r");
if (fd == NULL)
rte_panic("Cannot open %s\n", proc_meminfo);
while(fgets(buffer, sizeof(buffer), fd)){
if (strncmp(buffer, str_hugepagesz, hugepagesz_len) == 0){
size = rte_str_to_size(&buffer[hugepagesz_len]);
break;
}
}
fclose(fd);
if (size == 0)
rte_panic("Cannot get default hugepage size from %s\n", proc_meminfo);
return size;
}
proc文件系统中存储的是当前系统的运行状态,包括硬件的状态信息。
上面的代码非常简单,就是读取/proc/meminfo,提取Hugepagesize的大小。相当于下面的shell:
#cat /proc/meminfo | grep Hugepagesize | awk -F: '{print $2}'
rte_str_to_size
该函数主要实现string to size transform