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调用因为没有实现,而不能执行。

    水平有限,如果有错误,请帮忙提醒我。如果您觉得本文对您有帮助,可以点击下面的 推荐 支持一下我。版权所有,需要转发请带上本文源地址,博客一直在更新,欢迎 关注 。
  • 相关阅读:
    ubuntu下ssh服务相关操作
    搜索引擎的基础-倒排索引
    mysql重置密码
    mysql 服务器配置
    Activiti如何替换已部署流程图
    循环select查询结果集
    存储过程范例,有输入输出参数,带回滚
    sql server中字符串无法替换空格的问题
    Myeclipse实用快捷键总结
    Linux中添加用户与删除用户
  • 原文地址:https://www.cnblogs.com/10087622blog/p/7714803.html
Copyright © 2011-2022 走看看