如何知道你的Linux内核占用的内存大小?

news2024/11/28 0:54:30

如何知道你的Linux内核占用的内存大小?

  • 1、代码段等
  • 2、kernel heap
    • 2.1、kmalloc
    • 2.2、vmalloc
  • 3、进程的页表
  • 4、内核占用内存大小总和

1、代码段等

内核所需的代码段、bss段,内核栈等。

/ #  dmesg  | grep Memory
Memory policy: Data cache writealloc
Memory: 180784K/524288K available (6912K kernel code, 327K rwdata, 2380K rodata, 400K init, 424K bss, 15824K reserved, 327680K cma-reserved, 0K highmem)

从dmesg信息中我们了解到各个部分的使用情况:

描述含义
空闲内存大小180784K
所有物理内存大小524288K(我这边是512M的内存)
kernel code6912K
rwdata327K
rodata2380K
init(临时区域,后续会释放)400K
bss424K
reserved(内核保留,后续回释放)15824K
cma-reserved327680K

所以我们得到这些乱七八糟的段使用的内存大小为(也就是内核保留的内存):15824K

2、kernel heap

在内核中动态申请的内存分为两种:kmalloc和vmalloc。

2.1、kmalloc

kmalloc申请的内存在物理上是连续的。并且是通过slab分配的内存,所以知道slab的内存大小就知道了kmalloc的大小。

如何查看kmalloc申请的内存?

/ # cat /proc/meminfo
Slab:               6060 kB
SReclaimable:       1848 kB		//可释放的slab
SUnreclaim:         4212 kB		//不可释放的slab

故kmalloc所占的内存大小为:6060 kB

2.2、vmalloc

vmalloc可以通过命令cat /proc/vmallocinfo查看:

/ #  cat /proc/vmallocinfo
0x8c000000-0xa0000000 335544320 iotable_init+0x0/0xb4 phys=8c000000 ioremap
0xa0800000-0xa0802000    8192 of_iomap+0x2c/0x34 phys=a01000 ioremap
0xa0806000-0xa0808000    8192 bpf_prog_alloc+0x34/0xa4 pages=1 vmalloc
0xa0808000-0xa080d000   20480 of_iomap+0x2c/0x34 phys=2098000 ioremap
0xa080e000-0xa0810000    8192 devm_ioremap_nocache+0x38/0x74 phys=20c9000 ioremap
0xa0810000-0xa0815000   20480 devm_ioremap_nocache+0x38/0x74 phys=209c000 ioremap
0xa0816000-0xa0818000    8192 devm_ioremap_nocache+0x38/0x74 phys=20ca000 ioremap
0xa0818000-0xa081d000   20480 devm_ioremap_nocache+0x38/0x74 phys=20a0000 ioremap
0xa081e000-0xa0820000    8192 devm_ioremap_nocache+0x38/0x74 phys=2184000 ioremap
0xa0820000-0xa083c000  114688 devm_ioremap_wc+0x38/0x74 phys=905000 ioremap
0xa083c000-0xa083f000   12288 devm_ioremap_nocache+0x38/0x74 phys=1804000 ioremap
0xa0840000-0xa0845000   20480 devm_ioremap_nocache+0x38/0x74 phys=20a4000 ioremap
0xa0846000-0xa0848000    8192 devm_ioremap_nocache+0x38/0x74 phys=2184000 ioremap
0xa0848000-0xa084d000   20480 devm_ioremap_nocache+0x38/0x74 phys=20a8000 ioremap
0xa084e000-0xa0850000    8192 devm_ioremap_nocache+0x38/0x74 phys=2184000 ioremap
0xa0850000-0xa0855000   20480 devm_ioremap_nocache+0x38/0x74 phys=20ac000 ioremap
0xa0858000-0xa085d000   20480 of_iomap+0x2c/0x34 phys=20e4000 ioremap
0xa0860000-0xa0865000   20480 of_iomap+0x2c/0x34 phys=21bc000 ioremap

其中每个字段的含义可以在内核的文档中找到,路径如下:/Documentation/filesystems/proc.txt
在这里插入图片描述
这里有很多其他函数申请的内存,我们可以过滤一下vmalloc:

/ # cat /proc/vmallocinfo | grep vmalloc
0xa0806000-0xa0808000    8192 bpf_prog_alloc+0x34/0xa4 pages=1 vmalloc
0xa0891000-0xa08d4000  274432 jffs2_zlib_init+0x14/0x74 pages=66 vmalloc
0xa08d4000-0xa08e0000   49152 jffs2_zlib_init+0x2c/0x74 pages=11 vmalloc
0xa0945000-0xa094a000   20480 drm_ht_create+0x4c/0x70 pages=4 vmalloc
0xa09da000-0xa09de000   16384 n_tty_open+0x10/0xc8 pages=3 vmalloc
0xa0a3d000-0xa0a62000  151552 deflate_init+0x1c/0xc4 pages=36 vmalloc
0xa0a62000-0xa0a6e000   49152 deflate_init+0x58/0xc4 pages=11 vmalloc
0xa0a6e000-0xa0a72000   16384 n_tty_open+0x10/0xc8 pages=3 vmalloc

其中的第二列就是vmalloc的大小,我们把所有的大小加起来就可以得到其总和:

/ # grep vmalloc /proc/vmallocinfo  |awk '{total+=$2};END {print total}'
585728

我们将其转换为KB: 585728= 572 KB

故内核堆内存为: 6060 kB + 572 KB = 6632KB

3、进程的页表

进程的页表可以通过/proc/meminfo得到:

/ # cat /proc/meminfo | grep Table
PageTables:          104 kB

可以看到进程的页表大小为:104 kB

4、内核占用内存大小总和

综上所述,当前内核所占用的内存大小为:15824K + 6632KB + 104KB = 22M

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/42058.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot使用mybatis

springboot使用mybatis 本文目录springboot使用mybatis引入maven依赖新增数据库配置创建数据库表实体类编写mapper接口层通过xml文件mapper中直接使用注解编写mapper.xmlIDEA创建mybatis的xml文件parameterType启动类controller调用引入maven依赖 <dependency><groupI…

视频转音频怎么转?来试试这三个方法

如今我们可以看到有一些人会把电影/电视变成听电影/电视&#xff0c;相信大家都会感觉很不可思议吧&#xff01;电影/电视不是用来看的吗&#xff1f;听就没办法享受到那种视觉上的震撼了&#xff0c;其实不然&#xff0c;听电影/电视也是一种别样的享受&#xff0c;特别是对有…

看完这篇还不懂MySQL的MVCC机制算我输

前言 MySQL中大名鼎鼎的MVCC机制想必大家都有所耳闻吧&#xff0c;虽然在平时MySQL使用过程中基本上用不到&#xff0c;但是面试中出场率十分高&#xff0c;而且作为架构师的你也是需要知道它的工作机制。那么你对MVCC机制了解多少呢&#xff1f;MVCC机制是用来干嘛的呢&#…

使用 Clion (cmake) 开发FreeRTOS

这里使用的是 f4071. 先用STM32CubeMX 建立一个可以运行的stm32项目&#xff0c;toolchain选择 SW4STM322. 官网下载源码www.freertos.org我这里下载的是FreeRTOSv202112.00.zip 解压缩后得到需要以下几个文件夹或档案FreeRTOS/Source下的所有的 .c 档案FreeRTOS/Source/includ…

m基于GA遗传优化的GRNN广义回归神经网络销售数据预测算法matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 随着市场经济的发展和全球化&#xff0c;国内外企业面临着越来越残酷的市场竞争&#xff0c;要想赢得竞争&#xff0c;赢得市场&#xff0c;从事商品销售的单位必须在短时间内&#xff0c;以最低…

【图多预警】Pandas绘图函数总结

文章目录简介条形图折线图箱线图直方图饼图散点图和六边形分箱图简介 pandas中提供了plot函数用以绘图&#xff0c;并通过kind参数选择具体的图像类型。 method绘图类别method绘图类别line折线图[默认使用]area堆叠面积图bar纵向条形图barh横向条形图kde概率分布图density概率…

企企通:数字化浪潮下,企业如何利用间接采购策略,实现降本增效?

01、什么是间接采购&#xff1f; 通常&#xff0c;我们将采购分为直接物料和间接物料。 直接采购&#xff1a;用于产品生产及销售的物料与服务的购买&#xff0c;服务于外部客户&#xff0c;也叫生产性采购。如原材料、产品包装、物流服务等。直接采购无论是生产所需的原材料、…

backup (攻防世界)

前言: 这篇文章还是是为了帮助一些 像我这样的菜鸟 找到简单的题解 题目描述 进入网址 解题工具: 浏览器? 问题解析: X老师忘记删除备份文件&#xff0c;他派小宁同学去把备份文件找出来,一起来帮小宁同学吧&#xff01; 先说一下备份文件 科普时间叕到 网站备份 分…

怎样录屏没有外界杂音?3个十分好用的方法,码住收藏!

在互联网时代&#xff0c;使用电脑娱乐、工作逐渐成为了日常生活的一部分。而其中&#xff0c;电脑录屏是经常使用的功能之一。不过对于电脑录屏领域不熟悉的小伙伴就会问了&#xff1a;“为什么录制的视频会有杂音&#xff0c;怎样录屏没有外界杂音&#xff1f;”别着急&#…

对于xshell连接不上虚拟机的一些解答

如果你发现你可以在虚拟机内ping通 之后&#xff0c;在你电脑dos下也可以ping通。 然而&#xff0c;还是发现你的xshell连接不上虚拟机。 这里使用ifconfig 我发现这个地址是在变化的&#xff0c;之前是129&#xff0c;现在是131&#xff0c;所以这样再到xshell&#xff0c;…

【Java面试】谈谈你对HashMap的理解(Map接口)

文章目录说一下 HashMap 的实现原理&#xff1f;HashMap在JDK1.7和JDK1.8中有哪些不同&#xff1f;HashMap的底层实现&#xff1f;HashMap的put方法的具体流程&#xff1f;HashMap的扩容操作是怎么实现的&#xff1f;HashMap是怎么解决哈希冲突的&#xff1f;能否使用任何类作为…

C++ Reference: Standard C++ Library reference: Containers: deque: deque: rbegin

C官网参考链接&#xff1a;https://cplusplus.com/reference/deque/deque/rbegin/ 公有成员函数 <deque> std::deque::rbegin C98 reverse_iterator rbegin(); const_reverse_iterator rbegin() const; C11 reverse_iterator rbegin() noexcept; const_reverse_iterato…

类加载机制和类加载器

文章目录类加载机制为什么需要类加载类加载的时机主动使用——会触发类的初始化被动使用的例子关于接口的初始化类加载详细过程加载链接初始化类加载器类与类加载器,类的实例的关系回顾类的卸载类加载的基本特征类加载器的分类Java虚拟机自带的类加载器用户自定义类加载器Class…

web前端期末大作业 在线电影网页设计与制作 HTML+CSS+JavaScript仿叮当电影网页制作

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

【Elasticsearch】kibana 操作es文档详细总结

前言 在上一篇&#xff0c;分享了使用kibana如何对索引进行增删改查等操作&#xff0c;事实上在日常开发与运维中&#xff0c;操作索引毕竟是比较谨慎的事情&#xff0c;但是对于索引中文档的增删查改却是随处可见的&#xff0c;es对文档的操作不仅频繁&#xff0c;而且涉及到…

HTML+CSS一个简单的电影网页制作作业,学生个人html静态网页制作成品代码, html电影速递网

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

细说react源码中的合成事件

&#x1f495; 温馨提示: 下边是对React合成事件的源码阅读&#xff0c;全文有点长&#xff0c;但是&#xff01;如果你真的想知道这不为人知的背后内幕&#xff0c;那一定要耐心看下去&#xff01; 最近在做一个功能&#xff0c;然后不小心踩到了 React 合成事件 的坑&#xf…

【 web网页设计期末课程大作业】基于HTML+CSS+JavaScript智慧路灯综合管理系统

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

(附源码)计算机毕业设计Java宠物销售管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven Vue 等等组成&#xff0c;B/…

PGL图学习之基于GNN模型新冠疫苗任务[系列九]

PGL图学习之基于GNN模型新冠疫苗任务[系列九] 项目链接&#xff1a;https://aistudio.baidu.com/aistudio/projectdetail/5123296?contributionType1 # 加载一些需要用到的模块&#xff0c;设置随机数 import json import random import numpy as np import pandas as pdimp…