zoukankan      html  css  js  c++  java
  • linux 巨页使用测试

    这里记录测试巨页的mmap使用,测试代码和《linux 巨页使用测试以及勘误1》类似。

    跟踪脚本如下:

    probe kernel.function("hugetlb_reserve_pages").return
    {
    printf("hugetlb_reserve_pages pid=%d,ret=%d ",pid(),$return);
    }
    probe kernel.function("hugetlb_acct_memory").return
    {
    print_backtrace();
    printf("hugetlb_acct_memory pid=%d,ret=%d ",pid(),$return);
    }
    probe kernel.function("gather_surplus_pages").inline
    {
    print_backtrace();
    printf("gather_surplus_pages pid=%d,resv_huge_pages=%d,delta=%d,free_=%d,order=%d ",pid(),$h->resv_huge_pages,$delta,$h->free_huge_pages,$h->order);
    }
    probe kernel.function("__alloc_buddy_huge_page").return
    {
    print_backtrace();
    printf("gather_surplus_pages pid=%d ,nr_huge_pages=%d,surplus_huge_pages=%d,order=%d,nr_overcommit_huge_pages=%d,ret=%d ",pid(),$h->nr_huge_pages,$h->surplus_huge_pages,$h->order,$h->nr_overcommit_huge_pages,$return);
    }

    跟踪结果如下:

    当/proc/sys/vm/nr_hugepages设置为0,则由于__alloc_buddy_huge_page分配内存失败而报内存不足,将其设置为我们测试代码想要分配的内存除以2M,圆整再加1,则可以分配到内存。

    当mmap分配成功之后的addr,则可以使用memcpy或者read系统调用去使用。但write调用因为没有实现,而不能执行。

    水平有限,如果有错误,请帮忙提醒我。如果您觉得本文对您有帮助,可以点击下面的 推荐 支持一下我。版权所有,需要转发请带上本文源地址,博客一直在更新,欢迎 关注 。
  • 相关阅读:
    Oracle数据库的dual表的作用
    数据库中CASE函数和Oracle的DECODE函数的用法
    Oracle数据库中,通过function的方式建立自增字段
    Java学习(十三):抽象类和接口的区别,各自的优缺点
    Java学习(十八):二叉树的三种递归遍历
    Sublime工具插件安装
    sizeof和strlen
    I2C接口的EEPROM操作
    关于窗口看门狗
    关于指针传入函数
  • 原文地址:https://www.cnblogs.com/10087622blog/p/7714803.html
Copyright © 2011-2022 走看看