文章目录

  • 一、Linux 内核 动态分配内存 系统接口函数
  • 二、统计输出 vmalloc 分配的内存

一、Linux 内核 动态分配内存 系统接口函数


Linux 内核 " 动态分配内存 " 是通过 " 系统接口 " 实现的 , 下面介绍几个重要的 接口函数 ;

① 以 " 页 " 为单位分配内存 : alloc_pages , __get_free_page ;

② 以 " 字节 " 为单位分配 " 虚拟地址连续的内存块 " : vmalloc ;

③ 以 " 字节 " 为单位分配 " 物理地址连续的内存块 " : kmalloc ; 注意 该 " 物理地址连续的内存块 " 是以 Slab 为中心的 ;

二、统计输出 vmalloc 分配的内存


执行

grep vmalloc /proc/vmallocinfo

命令 , 可以统计输出 通过 vmalloc 函数分配的 " 虚拟地址连续的内存块 " ;

参考输出内容 :

root@ubuntu:~# grep vmalloc /proc/vmallocinfo
0xffffa769c000c000-0xffffa769c000e000    8192 gen_pool_add_owner+0x46/0xb0 pages=1 vmalloc N0=1
0xffffa769c000e000-0xffffa769c0010000    8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c0010000-0xffffa769c0015000   20480 _do_fork+0x76/0x3e0 pages=4 vmalloc N0=4
0xffffa769c0018000-0xffffa769c001d000   20480 _do_fork+0x76/0x3e0 pages=4 vmalloc N0=4
0xffffa769c0020000-0xffffa769c0025000   20480 _do_fork+0x76/0x3e0 pages=4 vmalloc N0=4
0xffffa769c0028000-0xffffa769c002d000   20480 _do_fork+0x76/0x3e0 pages=4 vmalloc N0=4
0xffffa769c0030000-0xffffa769c0035000   20480 _do_fork+0x76/0x3e0 pages=4 vmalloc N0=4
0xffffa769c0035000-0xffffa769c0038000   12288 vmw_fb_init+0x18f/0x430 [vmwgfx] pages=2 vmalloc N0=2
0xffffa769c0038000-0xffffa769c003d000   20480 _do_fork+0x76/0x3e0 pages=4 vmalloc N0=4
0xffffa769c003d000-0xffffa769c003f000    8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c0065000-0xffffa769c0069000   16384 e1000_setup_all_tx_resources+0x85/0x2a0 [e1000] pages=3 vmalloc N0=3
0xffffa769c0069000-0xffffa769c006b000    8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c006c000-0xffffa769c0071000   20480 _do_fork+0x76/0x3e0 pages=4 vmalloc N0=4
0xffffa769c0071000-0xffffa769c0073000    8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c0074000-0xffffa769c0079000   20480 _do_fork+0x76/0x3e0 pages=4 vmalloc N0=4
0xffffa769c007c000-0xffffa769c0081000   20480 _do_fork+0x76/0x3e0 pages=4 vmalloc N0=4
0xffffa769c0081000-0xffffa769c0083000    8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c0084000-0xffffa769c0089000   20480 _do_fork+0x76/0x3e0 pages=4 vmalloc N0=4
0xffffa769c0089000-0xffffa769c008b000    8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c008b000-0xffffa769c008d000    8192 e1000_setup_all_rx_resources+0x91/0x2c0 [e1000] pages=1 vmalloc N0=1
0xffffa769c008d000-0xffffa769c008f000    8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c0091000-0xffffa769c0093000    8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c0094000-0xffffa769c0099000   20480 fork_idle+0x5d/0xf0 pages=4 vmalloc N0=4
0xffffa769c0099000-0xffffa769c009b000    8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c009c000-0xffffa769c00a1000   20480 fork_idle+0x5d/0xf0 pages=4 vmalloc N0=4
0xffffa769c00a1000-0xffffa769c00a3000    8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c00a4000-0xffffa769c00a9000   20480 fork_idle+0x5d/0xf0 pages=4 vmalloc N0=4
0xffffa769c00a9000-0xffffa769c00ab000    8192 qp_alloc_queue.isra.17+0x48/0x130 [vmw_vmci] pages=1 vmalloc N0=1
0xffffa769c00ac000-0xffffa769c00b1000   20480 fork_idle+0x5d/0xf0 pages=4 vmalloc N0=4
0xffffa769c00b1000-0xffffa769c00b3000    8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c00b4000-0xffffa769c00b9000   20480 fork_idle+0x5d/0xf0 pages=4 vmalloc N0=4
0xffffa769c00b9000-0xffffa769c00bb000    8192 qp_alloc_queue.isra.17+0x48/0x130 [vmw_vmci] pages=1 vmalloc N0=1
0xffffa769c00bc000-0xffffa769c00c1000   20480 fork_idle+0x5d/0xf0 pages=4 vmalloc N0=4
0xffffa769c00c1000-0xffffa769c00c3000    8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c00c4000-0xffffa769c00c9000   20480 fork_idle+0x5d/0xf0 pages=4 vmalloc N0=4
0xffffa769c00cc000-0xffffa769c00d1000   20480 fork_idle+0x5d/0xf0 pages=4 vmalloc N0=4

【Linux 内核 内存管理】Linux 内核内存布局 ③ ( Linux 内核 动态分配内存 系统接口函数 | 统计输出 vmalloc 分配的内存 )相关推荐

  1. 启动期间的内存管理之初始化过程概述----Linux内存管理(九)

    转载地址:https://blog.csdn.net/gatieme/article/details/52403148 日期 内核版本 架构 作者 GitHub CSDN 2016-09-01 Lin ...

  2. kmalloc, vmalloc分配的内存结构

    From: http://linux.chinaunix.net/techdoc/system/2008/06/16/1011365.shtml 对于提供了MMU(存储管理器,辅助操作系统进行内存管理 ...

  3. Linux内存管理的设计与实现,Linux内核设计与实现-内存管理学习小结

    一,页 内存管理以页为基本单位,用 struct page 表示系统中的每个物理页.系统中的每个结构都要分配这样一个结构体,假定系统的物理页为4kb,系统有128M的物理内存,那么系统仅需1MB的内存 ...

  4. linux内存管理与设计,深入理解Linux内存管理机制(一)

    通过本文,您即可以: 1. 存储器硬件结构: 2.分段以及对应的组织方式: 3.分页以及对应的组织方式. 注1:本文以Linux内核2.6.32.59本版为例,其对应的代码可以在http://www. ...

  5. 内存管理vma_(十三)Linux内存管理之vma/malloc/mmap

    背景 Read the fucking source code!  --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本 ...

  6. linux 内存管理_真香!Linux 原来是这么管理内存的

    这是 Linux 系列第三篇文章,前两篇文章如下 程序员cxuan:初识 Linux 系统,就这一篇了!​zhuanlan.zhihu.com 程序员cxuan:Linux 进程必知必会​zhuanl ...

  7. adaptec raid linux,adaptecraid卡管理软件在windows和linux下的安装使用介绍(7页)-原创力文档...

    adaptec raid卡管理软件在 windows和linux下的安装使用文档 l.adaptec raid卡的管理软件在 windows下安装后的运行界面如下图: adaplec adaplec ...

  8. 函数中的指针分配的内存怎么释放

     被调用函数里动态分配的内存要不要手动释放 20 我想手动释放来着,但是指针是在被调用函数里声明的,在调用函数里释放不了. 我的被调用函数返回的就是这个指针,我也不能在被调用函数里释放. 你指的& ...

  9. 【Linux 内核 内存管理】RCU 机制 ④ ( RCU 模式下更新链表项 list_replace_rcu 函数 | 链表操作时使用 smp_wmb() 函数保证代码执行顺序 )

    文章目录 一.RCU 模式下更新链表项 list_replace_rcu 函数 二.链表操作时使用 smp_wmb() 函数保证代码执行顺序 一.RCU 模式下更新链表项 list_replace_r ...

最新文章

  1. 【Java基础总结】IO流
  2. 高级UI之Paint(滤镜,颜色通道,矩阵运算)
  3. How to correctly encode .mp4 files for streaming
  4. BugkuCTF-WEB题程序员本地网站
  5. unity3d用射线检测做了一个物体的捡起功能
  6. 啊哈算法(python)
  7. 好玩,AI 让老照片动起来(附 APP 软件地址)
  8. java 串口 rxtx_java使用RXTX进行串口通信
  9. 透视分析和即席查询区别
  10. 小手的图标css,CSS中cursor属性给标签加上小手形状
  11. 基于字典爆破的子域名脚本
  12. 如何查询手机屏幕尺寸、密度,分辨率
  13. 面试常见问题之网络基础
  14. java输入一个年份,利用Java实现从键盘输入一个年份,程序输出改年出生的人的生肖...
  15. Vue 监听刷新 切屏
  16. Review of 2012 Goal for 2013
  17. 宇宙的最初三分种(转)
  18. fiddler和wireshark
  19. 计算机课堂热身游戏,童年小确幸 儿时电脑课里我们玩不腻的13个小游戏
  20. jira数据库表结构

热门文章

  1. callable object与新增的function相关 C++11中万能的可调用类型声明std::function...
  2. yum lock 解决方法
  3. 证明并推导汉诺塔(河内之塔)问题公式
  4. oschina android版源码中的颜色值
  5. JavaScript对象理解
  6. 大型门户网站架构设计的可伸缩性
  7. Eclipse导入import sun.misc.BASE64Decoder报错的解决办法
  8. 远程桌面与本地桌面实现文件传输
  9. Python + Selenium 练习篇 - 获取页面所有邮箱
  10. WebStorm V2017.1版用于Angular2开发的环境设置