dpdk-hugepage源码分析

本文介绍了一种从/proc/meminfo文件中获取Hugepage大小的方法,并解释了Hugepage的作用,如减少页表项数量和缺页中断次数,以及降低TLB miss率等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

测试代码均在github

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值