9
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心
发布
  • 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动

完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>

3天内不再提示

Linux内存管理暴涨的问题学习

OSC开源社区 来源:OSCHINA 社区 作者:京东云开发者-李遵 2022-11-24 09:45 次阅读

一、问题

近期我们运维同事接到线上 LB(负载均衡)服务内存报警,运维同事反馈说 LB 集群有部分机器的内存使用率超过 80%,有的甚至超过 90%,而且内存使用率还再不停的增长。接到内存报警的消息,让整个团队都比较紧张,我们团队负责的 LB 服务是零售、物流、科技等业务服务的流量入口,承接上万个服务的流量转发,一旦有故障影响业务服务比较多,必须马上着手解决内存暴涨的问题。目前只是内存报警,暂时不影响业务,先将内存使用率 90% 以上的 LB 服务下线,防止内存过高导致 LB 服务崩溃,影响业务,运维同事密切关注相关的内存报警的消息。

二、排查过程

经过开发同学通过 cat /proc/meminfo 查看 Slab 的内核内存可能有泄漏。

$ cat /proc/meminfo
MemTotal:       65922868 kB
MemFree:         9001452 kB
...
Slab:           39242216 kB
SReclaimable:   38506072 kB
SUnreclaim:       736144 kB
....

通过 slabtop 命令分析 slab 发现内核中 dentry 对象占比高,考虑到 dentry 对象跟文件有关,Linux 中一切皆可以为文件,这个可能跟 socket 文件有关,通过进一步排查发现 LB 服务上有个 curl 发送的 HTTPS 探测脚本,这个脚本存在 dentry 对象泄漏,并且在 curl 论坛上找到一篇文章确认了这个问题,这个文章说明了 curl-7.19.7 版本在发送 HTTPS 请求时,curl 依赖的 NSS 库存在 dentry 泄漏的 bug,我查看一下我们 curl 版本就是 7.19.7,问题终于真相大白了!!!

$ curl -V
curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Protocols: tftp ftp telnet dict ldap ldaps http file https ftps scp sftp
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz

$ rpm -aq|grep nss-
nss-util-3.16.1-3.el6.x86_64
nss-sysinit-3.16.1-14.el6.x86_64
nss-softokn-freebl-3.14.3-17.el6.x86_64
nss-softokn-3.14.3-17.el6.x86_64
nss-3.16.1-14.el6.x86_64
nss-tools-3.16.1-14.el6.x86_64

文章中介绍可以设置环境变量 NSS_SDB_USE_CACHE 修复这个 bug,我们验证通过了这个解决方案。

三、解决方案

1、目前先将探测脚本停止,在业务流量低峰时将内存使用率超过 90% 的服务先通过 drop_caches 清理一下缓存。

2、等大促过后,探测脚本中设置环境变量 NSS_SDB_USE_CACHE,彻底修复这个问题。

四、复盘和总结

这次内存暴涨的问题根本原因是 curl-7.19.7 依赖的 NSS 库存在 dentry 泄漏的 bug 导致的,探测脚本只是将这个问题暴露出来。这次问题由 Linux 内存泄漏引发的问题,因此以点带面再次系统学习一下 Linux 内存管理的知识非常有必要,对我们以后排查内存暴涨的问题非常有帮助。

1)Linux 内存寻址

Linux 内核主要通过虚拟内存管理进程的地址空间,内核进程和用户进程都只会分配虚拟内存,不会分配物理内存,通过内存寻址将虚拟内存与物理内存做映射。Linux 内核中有三种地址,

a、逻辑地址,每个逻辑地址都由一段 (segment) 和偏移量 (offset) 组成,偏移量指明了从段开始的地方到实际地址之间的距离。

b、线性地址,又称虚拟地址,是一个 32 个无符号整数,32 位机器内存高达 4GB,通常用十六进制数字表示,Linux 进程的内存一般说的都是这个内存。

c、物理地址,用于内存芯片级内存单元寻址。它们与从 CPU 的地址引脚发送到内存总线上的电信号对应。

Linux 中的内存控制单元 (MMU) 通过一种称为分段单元 (segmentation unit) 的硬件电路把一个逻辑地址转换成线性地址,接着,第二个称为分页单元 (paging unit) 的硬件电路把线性地址转换成一个物理地址。

22543ec2-6b2e-11ed-8abf-dac502259ad0.png

2)Linux 分页机制

分页单元把线性地址转换成物理地址。线性地址被分成以固定长度为单位的组,称为页(page)。页内部连续的线性地址被映射到连续的物理地址中。一般 "页" 既指一组线性地址,又指包含这组地址中的数据。分页单元把所有的 RAM 分成固定长度的页框(page frame),也成物理页。每一页框包含一个页 (page),也就是说一个页框的长度与一个页的长度一致。

页框是主存的一部分,因此也是一个存储区域。区分一页和一个页框是很重要的,前者只是一个数据块,可以存放任何页框或者磁盘中。把线性地址映射到物理地址的数据结构称为页表(page table)。页表存放在主存中,并在启用分页单元之前必须有内核对页表进行适当的初始化。 x86_64 的 Linux 内核采用 4 级分页模型,一般一页 4K,4 种页表:

a、页全局目录

b、页上级目录

c、页中间目录

d、页表

页全局目录包含若干页上级目录,页上级目录又依次包含若干页中间目录的地址,而页中间目录又包含若干页表的地址。每个页表项指向一个页框。线性地址被分成 5 部分。

226df718-6b2e-11ed-8abf-dac502259ad0.jpg

3)NUMA 架构

随着 CPU 进入多核时代,多核 CPU 通过一条数据总线访问内存延迟很大,因此NUMA架构应运而生,NUMA 架构全称为非一致性内存架构 (Non Uniform Memory Architecture),系统的物理内存被划分为几个节点 (node),每个 node 绑定不同的 CPU 核,本地 CPU 核直接访问本地内存 node 节点延迟最小。

2283d3d0-6b2e-11ed-8abf-dac502259ad0.png

可以通过lscpu 命令查看 NUMA 与 CPU 核的关系。

$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                32
On-line CPU(s) list:   0-31
Thread(s) per core:    2
Core(s) per socket:    8
Socket(s):             2
NUMA node(s):          2
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 62
Stepping:              4
CPU MHz:               2001.000
BogoMIPS:              3999.43
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              20480K
NUMA node0 CPU(s):     0-7,16-23      #这些核绑定在numa 0
NUMA node1 CPU(s):     8-15,24-31     #这些核绑定在numa 1

4)伙伴关系算法

Linux 内核通过著名伙伴关系算法为分配一组连续的页框而建立一种健壮、稳定的内存分配策略,是内核中一种内存分配器,并解决了内存管理外碎片的问题,外碎片是指频繁地请求和释放不同大小的一组连续页框,必然导致在已分配的页框的块分散了许多小块的空闲页框。

5)Slab 机制

slab机制的核心思想是以对象的观点来管理内存,主要是为了解决内部碎片,内部碎片是由于采用固定大小的内存分区,即以固定的大小块为单位来分配,采用这种方法,进程所分配的内存可能会比所需要的大,这多余的部分便是内部碎片。slab 也是内核中一种内存分配器,slab 分配器基于对象进行管理的,所谓的对象就是内核中的数据结构(例如:task_struct,file_struct 等)。

相同类型的对象归为一类,每当要申请这样一个对象时,slab 分配器就从一个 slab 列表中分配一个这样大小的单元出去,而当要释放时,将其重新保存在该列表中,而不是直接返回给伙伴系统,从而避免内部碎片。上面中说到的 dentry 对象就是通过 slab 分配器分配的一种对象。

slab 和伙伴系统是上下级的调用关系,伙伴关系按照页管理内存,slab 按照字节管理,slab 先从伙伴系统获取数个页的内存,然后切成分成固定的小块(称为 object),然后再按照声明的对象数据结构分配对象。

6)进程内存分布

所有进程都必须占用一定数量的内存,这些内存用来存放从磁盘载入的程序代码,或存放来自用户输入的数据等。内存可以提前静态分配和统一回收,也可以按需动态分配和回收。对于普通进程对应的内存空间包含 5 种不同的数据区:

a、代码段 (text):程序代码在内存中的映射,存放函数体的二进制代码,通常用于存放程序执行代码 (即 CPU 执行的机器指令)。

b、数据段 (data):存放程序中已初始化且初值不为 0 的全局变量和静态局部变量。数据段属于静态内存分配 (静态存储区),可读可写。

c、BSS 段 (bss):未初始化的全局变量和静态局部变量。

d、堆 (heap):动态分配的内存段,大小不固定,可动态扩张 (malloc 等函数分配内存),或动态缩减 (free 等函数释放)。

e、栈 (stack):存放临时创建的局部变量。

229d1a52-6b2e-11ed-8abf-dac502259ad0.jpg

Linux 内核是操作系统中优先级最高的,内核函数申请内存必须及时分配适当的内存,用户态进程申请内存被认为是不紧迫的,内核尽量推迟给用户态的进程动态分配内存。

a、请求调页,推迟到进程要访问的页不在 RAM 中时为止,引发一个缺页异常。

b、写时复制 (COW),父、子进程共享页框而不是复制页框,但是共享页框不能被修改,只有当父 / 子进程试图改写共享页框时,内核才将共享页框复制一个新的页框并标记为可写。

7)Linux 内存检测工具

a、free 命令可以监控系统内存

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           31Gi        13Gi       8.0Gi       747Mi        10Gi        16Gi
Swap:         2.0Gi       321Mi       1.7Gi

b、top 命令查看系统内存以及进程内存

•VIRTVirtual Memory Size (KiB):进程使用的所有虚拟内存,包括代码(code)、数据(data)、共享库(shared libraries),以及被换出(swap out)到交换区和映射了(map)但尚未使用(未载入实体内存)的部分。

•RESResident Memory Size (KiB):进程所占用的所有实体内存(physical memory),不包括被换出到交换区的部分。

•SHRShared Memory Size (KiB):进程可读的全部共享内存,并非所有部分都包含在RES中。它反映了可能被其他进程共享的内存部分。

c、smaps 文件

cat /proc/$pid/smaps查看某进程虚拟内存空间的分布情况

0082f000-00852000 rw-p 0022f000 08:05 4326085    /usr/bin/nginx/sbin/nginx
Size:                140 kB
Rss:                 140 kB
Pss:                  78 kB
Shared_Clean:         56 kB
Shared_Dirty:         68 kB
Private_Clean:         4 kB
Private_Dirty:        12 kB
Referenced:          120 kB
Anonymous:            80 kB
AnonHugePages:         0 kB
Swap:                  0 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
d、vmstat vmstat是 Virtual Meomory Statistics(虚拟内存统计)的缩写,可实时动态监视操作系统的虚拟内存、进程、CPU 活动。
## 每秒统计3次
$ vmstat13
procs -----------memory---------------- ---swap-- -----io---- --system-- -----cpu-----
 r  b    swpd   free   buff  cache       si   so    bi    bo   in   cs us sy id  wa st
 000233483840758304207955960001000010000
 000233483936758304207955960000105215690010000
 00023348392075830420795596000096615580010000

e、meminfo 文件

Linux 系统中/proc/meminfo这个文件用来记录了系统内存使用的详细情况。

$ cat /proc/meminfo
MemTotal:        8052444 kB
MemFree:         2754588 kB
MemAvailable:    3934252 kB
Buffers:          137128 kB
Cached:          1948128 kB
SwapCached:            0 kB
Active:          3650920 kB
Inactive:        1343420 kB
Active(anon):    2913304 kB
Inactive(anon):   727808 kB
Active(file):     737616 kB
Inactive(file):   615612 kB
Unevictable:         196 kB
Mlocked:             196 kB
SwapTotal:       8265724 kB
SwapFree:        8265724 kB
Dirty:               104 kB
Writeback:             0 kB
AnonPages:       2909332 kB
Mapped:           815524 kB
Shmem:            732032 kB
Slab:             153096 kB
SReclaimable:      99684 kB
SUnreclaim:        53412 kB
KernelStack:       14288 kB
PageTables:        62192 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    12291944 kB
Committed_AS:   11398920 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:   1380352 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      201472 kB
DirectMap2M:     5967872 kB
DirectMap1G:     3145728 kB







审核编辑:刘清

  • Linux
    +关注

    关注

    81

    文章

    8327

    浏览量

    199731
  • 内存
    +关注

    关注

    8

    文章

    1991

    浏览量

    69777
  • LINUX内核
    +关注

    关注

    0

    文章

    158

    浏览量

    20249
  • MMU
    MMU
    +关注

    关注

    0

    文章

    40

    浏览量

    16593
  • NSS
    NSS
    +关注

    关注

    0

    文章

    3

    浏览量

    6063
收藏 人收藏

    评论

    相关推荐

    Linux系统的共享内存的使用

    但有时候为了让不同进程之间进行通信,需要让不同进程共享相同的物理内存Linux通过 共享内存 来实现这个功能。下面先来介绍一下Linux系统的共享内存的使用。
    的头像 发表于 11-14 11:55 190次阅读

    linux内存相关知识科普

    linux 内存组织结构和页面布局,内存碎片产生原因和优化算法。
    发表于 08-08 10:57 125次阅读

    Linux内存管理体系介绍

    内存是计算机最重要的资源之一,内存管理是操作系统最重要的任务之一。内存管理并不是简单地管理一下内存而已,它还直接影响着操作系统的风格以及用户空间编程的模式。可以说内存管理的方式是一个系统刻入DNA的秉性。既然内存
    的头像 发表于 08-08 09:28 376次阅读

    深度解析Linux内存管理体系

    Linux内存管理的整体模式是虚拟内存管理(分页内存管理),并在此基础上建立了一个庞大的内存管理体系。我们先来看一下总体结构图。
    发表于 08-06 16:55 509次阅读

    学习打卡】OpenHarmony的linux内核介绍

    驱动程序、文件系统管理和系统服务器调用。整个操作系统实际上是在内核空间中工作的。Linux 内核支持在运行时插入和删除可加载内核模块。通过只在内核内存中保留必要的模块,内核的内存占用减少了,它的整体性
    发表于 07-22 18:26

    一文搞定Linux内存管理原理

    。5.内存管理架构​针对上图,说几句,地址映射(图:左中)linux内核使用页式内存管理,应用程序给出的内存地址是虚拟地址,它需要经过若干级页表一级一级的变换,才变成真正的物理地址。想一下,地址映射
    发表于 06-28 10:05

    Linux内存管理的基础知识科普

    Linux内存管理可谓是学好Linux的必经之路,也是Linux的关键知识点,有人说打通了内存管理的知识,也就打通了Linux的任督二脉,这一点不夸张。有人问网上有很多Linux内存管理的内容
    的头像 发表于 06-08 15:24 1112次阅读

    Linux内存的分配管理内存回收基本框架

    内存对计算机系统来说是一项非常重要的资源,直接影响着系统运行的性能。最初的时候,系统是直接运行在物理内存上的,这存在着很多的问题,尤其是安全问题。后来出现了虚拟内存,内核和进程都运行在虚拟内存
    的头像 发表于 06-01 16:02 1358次阅读

    Linux内核虚拟内存管理中的mmu_gather操作

    本文讲解Linux内核虚拟内存管理中的mmu_gather操作,看看它是如何保证刷tlb和释放物理页的顺序的,又是如何将更多的页面聚集起来统一释放的。
    的头像 发表于 05-20 14:37 946次阅读

    Linux内存管理之页面回收

    请求调页机制,只要用户态进程继续执行,他们就能获得页框,然而,请求调页没有办法强制进程释放不再使用的页框。因此,迟早所有空闲内存将被分配给进程和高速缓存,Linux内核的页面回收算法(PFRA)采取从用户进程和内核高速缓存“窃取”页框的办法不从伙伴系统的空闲块列表。
    发表于 05-19 14:09 604次阅读
    <b>Linux</b><b>内存</b><b>管理</b>之页面回收

    Linux内存管理之伙伴系统

    在内核初始化完成之后, 内存管理的责任就由伙伴系统来承担. 伙伴系统基于一种相对简单然而令人吃惊的强大算法.
    发表于 05-16 09:01 289次阅读
    <b>Linux</b><b>内存</b><b>管理</b>之伙伴系统

    Linux内存管理是什么,Linux内存管理详解

    Linux内存管理 Linux内存管理是一个非常复杂的过程,主要分成两个大的部分:内核的内存管理和进程虚拟内存。内核的内存管理Linux内存管理的核心,所以我
    的头像 发表于 05-11 17:54 3681次阅读
    <b>Linux</b>的<b>内存</b><b>管理</b>是什么,<b>Linux</b>的<b>内存</b><b>管理</b>详解

    关于RT-Thread内存、时钟与中断管理学习总结

    内存管理学习过程 。任何操作系统的运行,都离不开时间。因为操作系统需要有一个界定标准,去规划各种进程或线程的运行,时间就是这个统一的标准。操作系统通过时间的流逝,定期去检查线程是否已经达到调度标准
    发表于 03-18 16:10

    Linux内核源码分析-进程的哪些内存类型容易引起内存泄漏?

    Linux内核主要学习内容可以分为三大块:进程、内存及协议栈。今天就说说内存泄露的问题。相信你在平时的工作中,应该遇到过下面这些场景: 伴随着服务器中的后台任务持续地运行,系统中可用内存越来越少
    发表于 01-14 13:02 6次下载
    <b>Linux</b>内核源码分析-进程的哪些<b>内存</b>类型容易引起<b>内存</b>泄漏?

    STM32学习心得三十六:内存管理实验

    记录一下,方便以后翻阅~主要内容:1) 内存管理概述及原理;2)相关实验代码解读。官方资料:《STM32中文参考手册_V10》-第19章 灵活的静态存储器控制器(FSMC)。实验要求:系统启动后
    发表于 12-29 19:24 2次下载
    STM32<b>学习</b>心得三十六:<b>内存</b><b>管理</b>实验

    STM32内存管理

    内存管理详解1、介绍内存管理,是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。内存管理的实现方法有很多种,他们其实最终都是
    发表于 12-24 19:37 12次下载
    STM32<b>内存</b><b>管理</b>

    初识Linux系统学习内容

    学习目标:初识Linux系统学习内容:掌握一些简单的Linux语句学习时间:1 周一下午2 周二上午3 周三下午学习产出:CSDN 技术博客 1 篇学习内容cd:进入/:根目录cd …:返回上一级
    发表于 12-22 06:37

    Linux虚拟内存管理技术的相关资料分享

    嵌入式系统开发嵌入式系统开发工具进程控制Linux虚拟内存管理技术嵌入式系统开发工具进程控制1、定义:(1)、进程是可并发执行的程序,是一个在数据集合上的运行过程。(2)、当一个程序开始执行之后,在
    发表于 12-22 06:33

    Linux是什么意思

    嵌入式入门学习笔记3编译Linux是什么意思? Linux内核是Linux操作系统的核心,也是整个Linux功能体现的核心,就如同发动机在汽车中的重要性。内核主要功能包括进程管理内存管理、文...
    发表于 12-17 07:42

    如何使用嵌入式的内存分配管理技术

    嵌入式---内存分配管理嵌入式的内存一般都非常的小,最进在学习LWIP协议栈的移植,在正点原子的学习资料中找到了许多关于怎么移植协议栈的东西,其中使用到了内存的分配管理技术,能够高效的管理和使用内存
    发表于 12-17 06:41

    Linux系统编程重点学习标准I/O库

    Makefile脚本编写等知识,嵌入式开发环境的搭建。3Linux系统编程重点学习标准I/O库,Linux多任务编程中的多进程和多线程,以及进程间通信(pipe、FIFO、消息队列、共享内存、signal、信号量等),同步与互斥对共享资源访问控制等重要知识,主要提升对L
    发表于 12-15 06:45

    STM32CubeMX的内存管理是什么?

    STM32CubeMX的内存管理是什么?
    发表于 12-10 06:10

    浅析SoC中断与Linux内存管理

    什么是SoC中断?Linux内存管理包括哪些?linux的进程调度时机有哪些?
    发表于 11-30 06:18

    LINUX电源管理

    Linux的系统suspend和resumeLinux内核 runtime_PM 框架Linux内核电源管理综述
    发表于 11-07 19:36 8次下载
    <b>LINUX</b>电源<b>管理</b>

    嵌入式Linux中的内存管理是什么

    点击 嵌入式 Linux 中的内存管理
    发表于 11-05 07:01

    嵌入式 Linux 中的内存管理

    点击 嵌入式 Linux 中的内存管理
    发表于 11-02 10:36 12次下载
    嵌入式 <b>Linux</b> 中的<b>内存</b><b>管理</b>

    深入剖析Linux共享内存原理

    Linux系统中,每个进程都有独立的虚拟内存空间,也就是说不同的进程访问同一段虚拟内存地址所得到的数据是不一样的,这是因为不同进程相同的虚拟内存地址会映射到不同的物理内存地址上。 但有时候为了让
    的头像 发表于 10-30 09:52 1429次阅读
    深入剖析<b>Linux</b>共享<b>内存</b>原理

    探究Linux电源管理模型

    Linux电源管理/#more探究Linux电源管理模型,并为Tiny4412的LCD驱动添加电源管理。这是2018的第一篇博客,选了一个几乎没有接触过的角度作为开篇,希望2018年学习更多,记录更多。1.电源管理...
    发表于 10-29 06:04

    Linux电源管理

    /#more探究Linux电源管理模型,并为Tiny4412的LCD驱动添加电源管理。这是2018的第一篇博客,选了一个几乎没有接触过的角度作为开篇,希望2018年学习更多,记录更多。1.电源管理...
    发表于 10-21 20:21 4次下载
    <b>Linux</b>电源<b>管理</b>

    linux内存管理

    公交,地铁,睡前必备,方便大家查阅,持续更新,敬请期待!---更新于2020-02-12linux 内存管理Linux内存初始化CPU是如何访问...
    发表于 07-22 08:41

    Linux的虚拟内存究竟是什么?

    前不久组内又有一次我比较期待的分享:”Linux 的虚拟内存”。
    的头像 发表于 06-21 16:41 1168次阅读
    <b>Linux</b>的虚拟<b>内存</b>究竟是什么?

    glibc内存管理存在的共性问题及解决方法

    glibc内存分配原理、内存站岗问题形成原因展开讨论,并对glibc缓存大量内存(高达几十个 G甚至上百 G)且不释放的问题给出一种解决方案。 笔者遇到的问题是基于glibc进行内存管理的64 位Linux系统。具体现象如下:设备32G物理内存,在大规格打流情况
    的头像 发表于 06-18 14:50 1429次阅读

    Linux在HugeTLB的管理上存在什么问题呢?

    GB HugeTLB。相信不少云厂商也注意到HugeTLB的内存管理上存在一定的问题。既然有问题,为何upstream上迟迟看不到相关的优化patch呢? 答案很简单:问题棘手。 Linux内存管理
    的头像 发表于 06-11 16:40 1281次阅读
    <b>Linux</b>在HugeTLB的<b>管理</b>上存在什么问题呢?

    浅析物理内存与虚拟内存的关系及其管理机制

    本文主要介绍内存管理机制:物理内存与虚拟内存的关系,Linux内存管理机制,Python内存管理机制,Nginx内存管理机制,环形缓冲区机制,以及TC-malloc内存分配器的Andriod
    的头像 发表于 04-12 09:55 2910次阅读
    浅析物理<b>内存</b>与虚拟<b>内存</b>的关系及其<b>管理</b>机制

    分析Linux操作系统的内存

    前言:在Linux上不像在Windows上看内存那样方便,而且还有Swap这个新的概念,所以知道如何来看Linux内存还是有一定意义的
    的头像 发表于 03-31 16:43 758次阅读

    什么是内存管理?如何进行内存管理?及内存管理的方案与分析

    前面已经将所有的硬件驱动实现,验证了硬件功能。但是每一个硬件都是单独测试的,而且并不完善。下一步,我们需要对各个驱动进行整合完善。在整合之前,需要做一些基础工作。其中之一就是实现内存管理。什么叫内存管理呢?为什么要做内存管理
    的头像 发表于 03-26 13:38 4500次阅读
    什么是<b>内存</b><b>管理</b>?如何进行<b>内存</b><b>管理</b>?及<b>内存</b><b>管理</b>的方案与分析

    嵌入式Linux内存管理知识点

    这个内存管理的知识点还真的需要我们专门的去理解一下,今天大家一起来学习学习嵌入式Linux内存管理的知识。
    发表于 03-04 06:22

    Linux内核新增的异构内存管理会带来什么不一样?

    Linux 内核新增的异构内存管理(HMM)会带来什么不一样?
    发表于 02-24 07:20

    嵌入式Linux内存管理的知识

    这个内存管理的知识点还真的需要我们专门的去理解一下,今天大家一起来学习学习嵌入式Linux内存管理的知识。
    发表于 02-03 06:30

    Linux kernel内存管理模块结构分析

    基于上面章节的需求,Linux kernel从虚拟内存(VM)、DMA mapping以及DMA buffer sharing三个角度,对内存进行管理.
    发表于 09-19 11:55 989次阅读
    <b>Linux</b> kernel<b>内存</b><b>管理</b>模块结构分析

    一文解析Linux内存系统

    Linux 内存是后台开发人员,需要深入了解的计算机资源。合理的使用内存,有助于提升机器的性能和稳定性。本文主要介绍Linux 内存组织结构和页面布局,内存碎片产生原因和优化算法,Linux 内核几种内存管理的方法,内存
    的头像 发表于 09-01 10:46 1625次阅读
    一文解析<b>Linux</b><b>内存</b>系统

    深入细节的详解,嵌入式必懂知识之Linux内存管理

    1 前言内存管理Linux内核中非常重要的部分,今天和大家一起学习一下。当我们要学习一个新知识点时,比较好的过程是先理解出现这个技术点的 背景原因,同期其他解决方案,新技术点解决了什么问题以及它
    发表于 08-28 10:34

    Linux内存系统---走进Linux 内存

    的运算数据· 2)硬盘等外部存储器交换的数据· 3)保障 cpu 计算的稳定性和高性能 二、 Linux 内存地址空间 1、Linux 内存地址空间 Linux 内存管理全貌 2、内存地址——用户态
    发表于 08-26 08:05

    FreeRTOS内存管理的算法解析?

    关于FreeRTOS内存管理,有人测试过它给定的算法么?会不会有内存碎片的出现,如果产品一直运行,会不会出现内存崩溃的情况。求证啊。目前用heap_2.c,但是这个算法是有碎片出现的。有没有好的方法,来管理内存呢?
    发表于 07-30 11:39

    Linux内存管理学习笔记-第2节课

    郝健 Linux内存管理学习笔记-第2节课
    发表于 06-11 15:56

    郝健Linux内存管理学习笔记分享

    郝健 Linux内存管理学习笔记-第3节课
    发表于 06-10 08:55

    linux内存释放操作

    Linux系统下,我们一般不需要去释放内存,因为系统已经将内存管理的很好。但是凡事也有例外,有的时候内存会被缓存占用掉,导致系统使用SWAP空间影响性能,此时就需要执行释放内存(清理缓存)的操作
    发表于 07-26 07:05

    Linux查看内存命令及解释

    我们通过Linux查看内存free命令查看机器空闲内存时,会发现free的值很小。下面我们就来了解学习Linux查看内存的命令和对这些命令的解释,这样大家更能够深刻理解我们的Linux查看内存命令
    发表于 07-24 06:18

    虚拟内存管理的地址是怎么分配的

    看书时看到了linux的虚拟内存管理:中间有用户虚拟地址,物理地址,总线地址,内核逻辑地址,内核虚拟地址等,这些地址是怎么分配的,有什么关系:;物理地址是sdram的地址空间吗?简单通俗讲讲内存管理吧,谢谢!
    发表于 05-22 05:45

    详细介绍Linux 内存使用方法

    Linux内存管理上份为两级,一级是线性区,类似于00c73000-00c88000,对应于虚拟内存,它实际上不占用实际物理内存;一级是具体的物理页面,它对应我们机器上的物理内存
    发表于 05-16 17:13 305次阅读

    需要了解Linux设备驱动的内存管理办法

    对于包含 MMU 的处理器而言, Linux 系统提供了复杂的存储管理系统,使得进程所能访问的内存达到 4GB。进程的 4GB 内存空间被分为两个部分—用户空间与内核空间。
    发表于 05-13 11:24 494次阅读
    需要了解<b>Linux</b>设备驱动的<b>内存</b><b>管理</b>办法

    适当了解Linux内存管理等问题

    linux内存管理还是比较复杂的,其中牵扯到很多方面的知识,这篇小博文算是自己对于内存管理的一点点的总结
    发表于 05-13 10:10 296次阅读
    适当了解<b>Linux</b><b>内存</b><b>管理</b>等问题

    了解并学习Linux内存模型

    model,其实就是从cpu的角度看,其物理内存的分布情况,在linux kernel中,使用什么的方式来管理这些物理内存
    发表于 05-12 09:44 359次阅读
    了解并<b>学习</b><b>Linux</b><b>内存</b>模型

    你知道linux kernel内存碎片防治技术?

    Linux kernel组织管理物理内存的方式是buddy system(伙伴系统),而物理内存碎片正式buddy system的弱点之一,为了预防以及解决碎片问题,kernel采取了一些实用技术,这里将对这些技术进行总结归纳。
    发表于 05-10 10:59 613次阅读

    你知道linux内存管理基础及方法?

    linux内存管理采取的分页存取机制,会将内存中不经常使用的数据块交换到虚拟内存中。linux会不时地进行页面交换操作,以保持尽可能多的空闲物理内存,即使并没有什么事需要内存linux也会交换出暂时不用的内存页面。
    发表于 04-28 17:12 783次阅读

    Linux内存管理的细节虚拟内存内存分页管理资料说明

    内存是计算机的主存储器。内存为进程开辟出进程空间,让进程在其中保存数据。我将从内存的物理特性出发,深入到内存管理的细节,特别是了解虚拟内存内存分页的概念。
    的头像 发表于 03-24 09:16 3376次阅读
    <b>Linux</b><b>内存</b><b>管理</b>的细节虚拟<b>内存</b>和<b>内存</b>分页<b>管理</b>资料说明

    Linux系统管理命令整理及使用方法介绍

    linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置S
    的头像 发表于 09-23 14:55 6112次阅读

    深度分析Linux内存使用方法

    一提到内存管理,我们头脑中闪出的两个概念,就是虚拟内存,与物理内存。这两个概念主要来自于linux内核的支持。
    的头像 发表于 08-20 09:00 6619次阅读

    如何管理Linux内存分页?

    内存是计算机的主存储器。内存为进程开辟出进程空间,让进程在其中保存数据。我将从内存的物理特性出发,深入到内存管理的细节,特别是了解虚拟内存内存分页的概念。
    的头像 发表于 07-28 08:24 3215次阅读
    如何<b>管理</b><b>Linux</b> 的<b>内存</b>分页?

    内存价格持续暴涨,新内存管理方案出台势在必行

    对于用户来说,想在想买内存简直是困难的,因为它的价格暴涨的已经离谱到难以接受的地步,更夸张的是,这个疯涨势头还在继续。
    发表于 07-25 16:55 704次阅读

    Linux内核内存管理问题

    当我们在终端启动一个程序时,终端进程调用 exec 函数将可执行文件载入内存,此时代码段,数据段,bbs 段,stack 段都通过 mmap 函数映射到内存空间,堆则要根据是否有在堆上申请内存来决定是否映射。
    的头像 发表于 05-04 10:29 4257次阅读
    <b>Linux</b>内核<b>内存</b><b>管理</b>问题

    如何避免Linux的物理内存碎片化

    Linux buddyy系统是linux kernel比较稳定的一个模块,但是并不是说它没有缺陷,Linux内存管理系统自诞生之日,就一直存在物理内存碎片化的问题:在系统启动并且运行很长一段时间后
    的头像 发表于 05-01 16:43 4630次阅读
    如何避免<b>Linux</b>的物理<b>内存</b>碎片化

    嵌入式Linux内存管理的知识汇总

    这个内存管理的知识点还真的需要我们专门的去理解一下,今天大家一起来学习学习嵌入式Linux内存管理的知识。 1.不涉及linux内核的汇编知识,仅C语言层面解析 1.回答:汇编主要处理的是寄存器地址
    发表于 04-09 05:58 774次阅读
    嵌入式<b>Linux</b><b>内存</b><b>管理</b>的知识汇总

    基于Linux内存管理与Android内存分配机制

    Android采取了一种有别于Linux的进程管理策略,有别于Linux的在进程活动停止后就结束该进程,Android把这些进程都保留在内存中,直到系统需要更多内存为止。这些保留在内存中的进程通常情况下不会影响整体系统的运行速度,并且当用户再次激活这些进程时,提升了进程的启动
    的头像 发表于 03-30 14:52 5488次阅读

    Linux资料汇总之内存管理

    网络上面有很多坑爹的文章,坑了不少人,很多人对Linux的很多误解可能来自于这些广泛流传的技术文章。下面我们推出一个系列来总结。先从内存管理开始。
    的头像 发表于 03-27 11:39 3748次阅读
    <b>Linux</b>资料汇总之<b>内存</b><b>管理</b>

    嵌入式Linux内存管理的一些知识点总结

    这个内存管理的知识点还真的需要我们专门的去理解一下,今天大家一起来学习学习嵌入式Linux内存管理的知识。1.不涉及linux内核的汇编知识,仅C语言层面解析1.回答:汇编主要处理的是寄存器地址
    发表于 03-24 09:31

    Linux系统内存管理的特点详解

    在Windows下资源管理器查看内存使用的情况,如果使用率达到80%以上,再运行大程序就能感觉到系统不流畅了,因为在内存紧缺的情况下使用交换分区,频繁地从磁盘上换入换出页会极大地影响系统的性能。
    的头像 发表于 12-01 14:38 3315次阅读

    嵌入式Linux内存管理的一些知识点总结

    感觉这个内存管理的知识点还真的需要专门的去理解一下,今天我们一起来学习学习。要求1.不涉及linux内核的汇编知识,仅C语言层面解析1.回答:汇编主要处理的是寄存器地址(包括内容)的计算,进行一部分
    发表于 11-20 14:46

    如何降低Linux 内存开销

    物理内存不足可能会严重影响 Linux 的性能。在本文中,我们将学习如何精确地度量 Linux 系统所使用的内存量。还将以 Ubuntu 系统为例学习有关降低内存需求的实践建议。 Linux 广受
    发表于 11-07 11:23 0次下载

    Linux磁盘存储区管理原理分析及技巧汇总

    Linux管理磁盘贮存区算的上一个技巧,很多朋友在这上面常常问我,今天我就把这方面的东西汇总一下,从Linux特有的交换分区的原理开始介绍Linux下如何管理磁盘。 原理篇 1. 交换空间
    发表于 11-07 10:14 0次下载

    linux内存管理

    linux内存管理
    发表于 10-24 11:12 3次下载
    <b>linux</b><b>内存</b><b>管理</b>

    如何学习Linux

    播放Mp4/广告机等播放)10、SD驱动开发11、RTC驱动开发12、电源管理方法第八部分:LINUX应用学习课程目标:嵌入式Linux应用开发和系统开发是嵌入式Linux中最重要的一部分,也是企业
    发表于 10-10 15:06

    linux驱动程序开发学习步骤

    block驱动, 加上read,write,ioctl,poll等各种函数实现。7. 简单学习内存管理, 这个是最难的,明白各种memoryalloc的函数实现细节。这是linux开发的基本功。8.
    发表于 08-07 10:58

    linux驱动程序开发学习步骤

    block驱动, 加上read,write,ioctl,poll等各种函数实现。7. 简单学习内存管理, 这个是最难的,明白各种memoryalloc的函数实现细节。这是linux开发的基本功。8.
    发表于 07-12 09:49

    《深入理解LINUX内存管理学习笔记

    《深入理解LINUX内存管理学习笔记1
    发表于 11-07 10:20

    全栈工程师学习Linux技术的忠告

    Linux内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理学习linux内核知识的同时,我们不仅仅要了解原理,而且还要实际操作相关命令,使我们的理论得到验证,这样我们就需要
    发表于 10-24 09:23

    嵌入式系统内存管理

    固定分配,而是根据系统需要而动态分配的,如果利用非虚拟内存管理机制,一般需要改造动态内存分配机制以提高性能。 4、内存管理的具体应用:A、Linux系统的内存管理机制Linux内存管理机制中,X86
    发表于 09-17 19:40

    Linux基础知识学习

    Linux基础知识学习1.Linux的构成Linux系统主要分为四个部分:内核、文件系统、shell、应用内核主要功能:对文件的管理、对内存管理、进程调度、进程间通讯和网络接口2.环境变量 系统
    发表于 03-20 21:42

    Linux 内存管理知识学习经验总结

    现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的。对于内存部分需要知道:地址映射内存管理的方式缺页异常先来看一些基本的知识,在进程看来,内存分为
    发表于 02-25 17:08

    嵌入式linux入门学习书籍推荐 

    ,ULK要深入全面得多。  前面这两本,一本提纲挈领,一本全面深入。  第四:《Linux设备驱动程序》  简称LDD,驱动开发者都要人手一本了。  第五:《深入理解Linux虚拟内存管理》  简称LVMM
    发表于 10-18 10:13

    嵌入式linux入门学习书籍推荐

    开发者都要人手一本了。  第五:《深入理解Linux虚拟内存管理》  简称LVMM,是一本介绍Linux虚拟内存管理机制的书。如果你希望深入的研究Linux内存管理子系统,仔细的研读这本书无疑是最好
    发表于 10-08 09:17

    如何学习LINUX驱动开发?

    向内核空间传递结构体的实现。 6. 写一block驱动, 加上read,write,ioctl,poll等各种函数实现。 7. 简单学习内存管理, 这个是最难的,明白各种memory
    发表于 05-07 12:17

    如何学习LINUX驱动开发?

    向内核空间传递结构体的实现。 6. 写一block驱动, 加上read,write,ioctl,poll等各种函数实现。 7. 简单学习内存管理, 这个是最难的,明白各种memory
    发表于 05-07 11:59

    内存管理

    stm32f103zet6的内存管理学习,这里是正点原子代码的讲解,有兴趣的可以看看,这个没有碎片的整理,不过感觉在stm32上碎片影响不大,
    发表于 09-11 15:55

    windows内存管理技术

    windows内存管理技术是怎么回事
    发表于 06-09 18:04

    LINUX源代码分析-内存管理

    操作系统管理系统所有的物理空间, 现代大多数操作系统都采取多级管理, 即页面级分配与内核内存分配。就LINUX2-2-5 版本而言,页面级的分配是采用Buddy 算法,而内核内存分配是采用面
    发表于 12-19 16:38 101次下载
    <b>LINUX</b>源代码分析-<b>内存</b><b>管理</b>

    linux内存管理机制浅析

    本内容介绍了arm linux内存管理机制,详细说明了linux内核内存管理,linux虚拟内存管理,arm linux内存管理等方面的知识
    发表于 12-19 14:09 72次下载
    <b>linux</b><b>内存</b><b>管理</b>机制浅析

    Linux内存管理导读

    Linux 内存管理导读 :1. 存储层次结构和 x86存储管理硬件(MMU) 1.1 存储层次 高速缓存(cache) 主存(main memory) 磁盘(disk) 理解存储层次结构的根源:CPU速度和存储器速度的差距。 层次结构可
    发表于 11-03 22:32 39次下载

    Linux系统管理技术手册—奈米斯

    本书为奈米斯所著的 Linux 系统管理技术手册第二版。共从二十四个章节讲述了Linux系统管理技术。适合Linux系统的入门者学习
    发表于 08-10 14:16 119次下载
    <b>Linux</b>系统<b>管理</b>技术手册—奈米斯

    Linux管理者指南

    本书为Linux管理者提供了指南,希望对 Linux 工作人员有所帮助,全书是英文版的,电子发烧友还有很多有关电子的资料,希望成为您工作学习的好帮手,好朋友!
    发表于 07-11 14:56 40次下载
    <b>Linux</b><b>管理</b>者指南

    μClinux内存管理分析

    laClinux内存管理采用非标准Linux内存模型。系统为进程分配连续内存区域,代码段、数据段和栈段间无空隙,且进程私有堆被取消,所有进程共享由操作系统管理的堆空间。最简单
    发表于 09-25 16:33 27次下载

    linux存储器管理

     linux存储器管理 本章主要讲解了存储器管理的基本方式,剖析了Linux 操作系统对内存管理模式。通过对本章学习,读者应该达到以下学习目标: 重
    发表于 04-28 15:01 0次下载

    Linux内存管理中的Slab分配机制

    早期Linux内存分配机制采用伙伴算法, 当请求分配的内存大小为几十个字节或几百个字节时会产生内存碎片, 严重消耗系统资源。现今采用Slab 机制可以缓存物理空间的申请和回
    发表于 04-24 10:49 11次下载

    linux学习资料下载

    linux学习资料有以下内容:Linux系统管理员指南,Linux基本教程,Linux扫描式教程等教程。
    发表于 10-07 11:22 48次下载
    <b>linux</b><b>学习</b>资料下载

    下载硬声App