dpdk-hugepage源码分析

来源:互联网 发布:java身份证校验 编辑:程序博客网 时间:2024/06/07 14:47

hugepage的作用:
1. 就是减少页的切换,页表项减少,产生缺页中断的次数也减少
2. 降低TLB的miss次数

static uint64_tget_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

测试代码均在github

0 0
原创粉丝点击