zl程序教程

linux内存池

  • linux 监控网络IO、磁盘、CPU、内存

    linux 监控网络IO、磁盘、CPU、内存

    linux 监控网络IO、磁盘、CPU、内存CPU:vmstat ,sar –u,top磁盘IO:iostat –xd,sar –d,top网络IO:iftop -n,ifstat,dstat –nt,sar -n DEV 2 3磁盘容量:df –h 内存使用:free –m,top1.查看什么进程占用端口:  netstat -antp | fgrep <port> 2.查看进程资

    日期 2023-06-12 10:48:40     
  • 利用 Shell 脚本实现邮件监控 Linux 系统的内存

    利用 Shell 脚本实现邮件监控 Linux 系统的内存

    一、安装Linux下面的一个邮件客户端Msmtp软件(类似于一个Foxmail的工具)下载列表地址下载安装:https://marlam.de/msmtp/releases/msmtp-1.4.32.tar.bz2 tar jxvf msmtp-1.4.16.tar.bz2 cd msmtp-1.4.16 ./configure --prefix=/usr/local/msm

    日期 2023-06-12 10:48:40     
  • Linux监测进程cpu使用率、内存使用率的工具 - WGCLOUD

    Linux监测进程cpu使用率、内存使用率的工具 - WGCLOUD

    WGCLOUD是一款优秀的开源运维监控平台,安装部署方便,轻量实用,分布式,自动化,高性能,对主流平台兼容性好言归正传,我们今天主要介绍它怎么监控进程(Linux和windows进程都可以监控)首先我们要先部署好WGCLOUD,然后再进行下面的操作在登录WGCLOUD后,左侧菜单有【资源管理】->【进程管理】我们点击【添加】监测进程有三种方式,如下刚添加完成进程,PID显示获取中,这是因为a

    日期 2023-06-12 10:48:40     
  • 谁再说搞不懂 Linux 的内存、Swap、Cache、Buffer,就把这个给他扔过去!

    谁再说搞不懂 Linux 的内存、Swap、Cache、Buffer,就把这个给他扔过去!

    通过free命令看Linux内存total:总内存大小。used:已经使用的内存大小(这里面包含cached和buffers和shared部分)。free:空闲的内存大小。shared:进程间共享内存(一般不会用,可以忽略)。buffers:内存中写完的东西缓存起来,这样快速响应请求,后面数据再定期刷到磁盘上。cached:内存中读完缓存起来内容占的大小(这部分是为了下次查询时快速返回)。-/+

    日期 2023-06-12 10:48:40     
  • Linux进程间通信——使用共享内存

    Linux进程间通信——使用共享内存

    下面将讲解进程间通信的另一种方式,使用共享内存。 一、什么是共享内存 顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果

    日期 2023-06-12 10:48:40     
  • linux多进程与进程间通信_linux共享内存进程间通信

    linux多进程与进程间通信_linux共享内存进程间通信

    内存共享最新整理:Linux下进程间通信-共享内存 – 码到城攻共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式https://www.codecomeon.com/posts/109/共享内存:一、概念: 共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看

    日期 2023-06-12 10:48:40     
  • Linux内存分析与清理

    Linux内存分析与清理

    1 Linux中查看内存的命令为free,命令如下:free -h total used free shared buff/cache available Mem: 15G 11G 3.0G 36M 563M 3.3G Swap:0B 0B 0B复制每一列的解释如下:t

    日期 2023-06-12 10:48:40     
  • 细说|Linux内存泄漏检测实现原理与实现

    细说|Linux内存泄漏检测实现原理与实现

    在使用没有垃圾回收的语言时(如 C/C++),可能由于忘记释放内存而导致内存被耗尽,这叫 内存泄漏。由于内核也需要自己管理内存,所以也可能出现内存泄漏的情况。为了能够找出导致内存泄漏的地方,Linux 内核开发者开发出 kmemleak 功能。下面我们来详细介绍一下 kmemleak 这个功能的原理与实现。kmemleak 原理首先来分析一下,什么情况会导致 内存泄漏。1. 造成内存泄漏的原因内存

    日期 2023-06-12 10:48:40     
  • 图解|Linux内存碎片整理

    图解|Linux内存碎片整理

    我们知道物理内存是以页为单位进行管理的,每个内存页大小默认是4K(大页除外)。申请物理内存时,一般都是按顺序分配的,但释放内存的行为是随机的。随着系统运行时间变长后,将会出现以下情况:如上图所示,当用户需要申请地址连续的 3 个内存页时,虽然系统中空闲的内存页数量足够,但由于空闲的内存页相对分散,从而导致分配失败。这些地址不连续的内存页被称为:内存碎片。要解决这个问题也比较简单,只需要把空闲的内存

    日期 2023-06-12 10:48:40     
  • Linux 查看占用内存前10的命令

    Linux 查看占用内存前10的命令

    Linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合:ps aux|head -1;ps aux|grep -v PI|sort -rn -k +3|headLinux下获取占用内存资源最多的10个进程,可以使用如下命令组合:ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head命令组合解析(针对CPU的,MEN也同样道理):拍摄

    日期 2023-06-12 10:48:40     
  • Linux查看CPU、内存和机器型号等硬件信息

    Linux查看CPU、内存和机器型号等硬件信息

    1. 查看CPU信息(型号) # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 8  Intel(R) Xeon(R) CPU            E5410   @ 2.33GHz (看到有8个逻辑CPU, 也知道了CPU型号)# cat /proc/cpuinfo | grep physical | uniq -c 4 p

    日期 2023-06-12 10:48:40     
  • Linux内存管理:memblock

    Linux内存管理:memblock

    内存管理是操作系统内核中最复杂的部分之一, start_kernel函数在内核启动第一个init进程前初始化了所有的内核特性(包括那些依赖于不同架构的特性),你也许还记得引导时创立的临时页表,但复杂的内存管理部分还没有开始,当start_kernel函数被调用时,我们会看到初期内存管理到更复杂的内存管理数据结构和技术的转变,为了更好的理解内核的初始化过程,我们需要对这些技术有更清晰的理解,今天我们

    日期 2023-06-12 10:48:40     
  • Linux性能调优之内存负载调优的一些笔记

    Linux性能调优之内存负载调优的一些笔记

    写在前面整理一些Linux内存调优的笔记,分享给小伙伴博文没有涉及的Demo,理论方法偏多,可以用作内存调优入门博文内容涉及:Linux内存管理的基本理论寻找内存泄露的进程内存交换空间调优不同方式的内存回收食用方式需了解Linux基础知识理解不足小伙伴帮忙指正「 原谅和忘记就意味着扔掉了我们获得的最贵经验 -------《人生的智慧》叔本华」讲内存之前,简单介绍下调优的一些方法论,一般调优首先需要

    日期 2023-06-12 10:48:40     
  • Linux源码学习笔记day4 操作系统怎么把自己弄到内存里的?

    Linux源码学习笔记day4 操作系统怎么把自己弄到内存里的?

    上次已经学到了 CPU为访问内存做好了准备,把一些重要寄存器的值都设置好了。今天我们主要一起学习,操作系统是如何把自己从硬盘给弄到内存里的?现在的状态已经把ds,es,cs设置好了,从CPU的角度看,已经知道如何访问内存了。其它的操作系统代码我们接着看下面的代码load_setup: mov $0x0000, %dx # drive 0, head 0 mov $0x0002, %cx #

    日期 2023-06-12 10:48:40     
  • Linux源码学习笔记day5 内存0地址处放的都是些什么玩意儿?

    Linux源码学习笔记day5 内存0地址处放的都是些什么玩意儿?

    上一次我们已经说到,操作系统的代码从硬盘复制到内存里了。今天我们一起来看看,setup.s 都做了啥?_start: mov %cs,%ax mov %ax,%ds mov %ax,%es # ##print some message # mov $0x03, %ah xor %bh, %bh int $0x10 mov %dx, %ds:0 # it from 0x90000.

    日期 2023-06-12 10:48:40     
  • 一文读懂 | Linux共享内存原理

    一文读懂 | Linux共享内存原理

    第一时间看干货文章 1在Linux系统中,每个进程都有独立的虚拟内存空间,也就是说不同的进程访问同一段虚拟内存地址所得到的数据是不一样的,这是因为不同进程相同的虚拟内存地址会映射到不同的物理内存地址上。但有时候为了让不同进程之间进行通信,需要让不同进程共享相同的物理内存,Linux通过 共享内存 来实现这个功能。下面先来介绍一下Linux系统的共享内存的使用。共享内存使用1. 获取共享内存要使用共

    日期 2023-06-12 10:48:40     
  • Linux 内存中的缓冲区(Buffer)与缓存(Cache)

    Linux 内存中的缓冲区(Buffer)与缓存(Cache)

    Buffer 和 Cache 的定义:Buffer:是原始磁盘块的临时存储,即将缓存数据写入磁盘。它通常不会很大(大约 20MB)。这样,内核就可以将分散的写入集中起来,从而对磁盘写入进行统一优化。例如,多个小的写入可以合并为一个大的写入等。Cache:是用于从磁盘读取文件的页面缓存,用于缓存从文件中读取的数据。这样,下次访问这些文件数据时,可以直接从内存中快速取回,而无需再次访问缓慢的磁盘。但

    日期 2023-06-12 10:48:40     
  • Linux - Linux内存管理

    Linux - Linux内存管理

    文章目录概念物理内存和虚拟内存内存的监控从内核的角度来查看内存的状态从应用层的角度来看系统内存的使用状态缓冲区(buffer)与缓存(cache)的异同交换空间的使用创建交换空间激活和使用交换空间移除交换空间概念内存管理是Linux系统重要的组成部分。为了解决内存紧缺的问题,Linux引入了虚拟内存的概念。为了解决快速存取,引入了缓存机制、交换机制等。物理内存和虚拟内存直接从物理内存读写数据要比从

    日期 2023-06-12 10:48:40     
  • Linux |  内存分配之malloc->brk

    Linux | 内存分配之malloc->brk

    ~/Downloads/research/linux-5.15.4/mm/mmap.cSYSCALL_DEFINE1(brk, unsigned long, brk) { unsigned long newbrk, oldbrk, origbrk; struct mm_struct *mm = current->mm; struct vm_area_struct *next;

    日期 2023-06-12 10:48:40     
  • 【Linux修炼】16.共享内存

    【Linux修炼】16.共享内存

    共享内存一.共享内存的原理二.共享内存你的概念2.1 接口认识2.2演示生成key的唯一性2.3 再谈key三.共享资源的查看3.1 如何查看IPC资源3.2 IPC资源的特征3.3 进程之间通过共享内存进行关联四.共享内存的特点五.共享内存的内核结构六.共享内存函数的总结 共享内存是为通信而诞生的。除了上一节中讲到的公共文件的方案,还有什么其他方案呢?----以共享内存的方式 一.共享内存的原

    日期 2023-06-12 10:48:40     
  • 【Linux 内核】Linux 操作系统结构 ( Linux 内核在操作系统中的层级 | Linux 内核子系统及关系 | 进程调度 | 内存管理 | 虚拟文件系统 | 网络管理 | 进程间通信 )

    【Linux 内核】Linux 操作系统结构 ( Linux 内核在操作系统中的层级 | Linux 内核子系统及关系 | 进程调度 | 内存管理 | 虚拟文件系统 | 网络管理 | 进程间通信 )

    文章目录一、Linux 内核在操作系统中的层级二、Linux 内核子系统三、Linux 内核子系统之间的关系一、Linux 内核在操作系统中的层级Linux 内核 所在层级 : 整个计算机系统中 , 由下到上介绍 :计算机硬件 处于最底层 ;计算机硬件 上面一层是 Linux 内核 , 计算机的所有硬件操作都要经过内核 , 内核是 抽象资源操作 与 具体硬件操作细节 之间的接口 ;Linux 内

    日期 2023-06-12 10:48:40     
  • 【Linux 内核 内存管理】优化内存屏障 ② ( 内存屏障 | 编译器屏障 | 处理器内存屏障 | 内存映射 I/O 写屏障 )

    【Linux 内核 内存管理】优化内存屏障 ② ( 内存屏障 | 编译器屏障 | 处理器内存屏障 | 内存映射 I/O 写屏障 )

    文章目录一、内存屏障二、编译器屏障三、处理器内存屏障一、内存屏障内存屏障 , 又称为 " 屏障指令 " , 用于保证 " 编译器 “ 或 ” CPU “ 访问内存时 , 保证 按照顺序执行 , 即 ” 内存屏障 之前 “ 的指令 与 ” 内存屏障 之后 " 的指令 不会犹豫 编译器 和 CPU 优化导致 顺序混乱 ;" 指令 " 优化主要

    日期 2023-06-12 10:48:40     
  • 【Linux 内核 内存管理】优化内存屏障 ③ ( 编译器屏障 | 禁止 / 开启内核抢占 与 方法保护临界区 | preempt_disable 禁止内核抢占源码 | 开启内核抢占源码 )

    【Linux 内核 内存管理】优化内存屏障 ③ ( 编译器屏障 | 禁止 / 开启内核抢占 与 方法保护临界区 | preempt_disable 禁止内核抢占源码 | 开启内核抢占源码 )

    文章目录一、禁止 / 开启内核抢占 与 方法保护临界区二、编译器优化屏障三、preempt_disable 禁止内核抢占 源码四、preempt_enable 开启内核抢占 源码一、禁止 / 开启内核抢占 与 方法保护临界区如果要使用 " 内存屏障 " , 如 : 禁止 内核 抢占 " 方法保护临界区 " :首先 , 声明 preempt_disable()

    日期 2023-06-12 10:48:40     
  • 【Linux 内核 内存管理】内存管理架构 ⑤ ( sbrk 内存分配系统调用代码示例 | 在 /proc/pid/maps 中查看进程堆内存详情 )

    【Linux 内核 内存管理】内存管理架构 ⑤ ( sbrk 内存分配系统调用代码示例 | 在 /proc/pid/maps 中查看进程堆内存详情 )

    文章目录一、sbrk 内存分配系统调用代码示例二、在 /proc/pid/maps 中查看进程堆内存详情本篇博客调用 sbrk 系统调用函数 , 申请并修改 堆内存 , 并在 /proc/pid/maps 中查看该进程的 堆内存 ;一、sbrk 内存分配系统调用代码示例sbrk 系统调用函数 , 作用是 修改程序 BSS 段大小 ;函数原型如下 :#include <unistd.h>

    日期 2023-06-12 10:48:40     
  • 【Linux 内核 内存管理】虚拟地址空间布局架构 ⑤ ( Linux 内核中对 “ 虚拟地址空间 “ 的描述 | task_struct 结构体源码 )

    【Linux 内核 内存管理】虚拟地址空间布局架构 ⑤ ( Linux 内核中对 “ 虚拟地址空间 “ 的描述 | task_struct 结构体源码 )

    文章目录一、Linux 内核中对 " 虚拟地址空间 " 的描述二、task_struct 结构体源码一、Linux 内核中对 " 虚拟地址空间 " 的描述进程 的 " 虚拟地址空间 " 由 mm_struct 和 vm_area_struct 两个数据结构描述 ;mm_struct 是 “最高层次 " 上描述 ” 整个虚拟地址空

    日期 2023-06-12 10:48:40     
  • 【Linux 内核 内存管理】内存映射原理 ① ( 物理地址空间 | 外围设备寄存器 | 外围设备寄存器的物理地址 映射到 虚拟地址空间 )

    【Linux 内核 内存管理】内存映射原理 ① ( 物理地址空间 | 外围设备寄存器 | 外围设备寄存器的物理地址 映射到 虚拟地址空间 )

    文章目录一、物理地址空间二、外围设备寄存器三、外围设备寄存器物理地址 映射到 虚拟地址空间一、物理地址空间" 物理地址空间 “ 是 CPU 处理器 在 ” 总线 " 上 访问内存的地址 ,RISC 处理器 只能访问 物理地址空间 , 系统的 外围设备 与 物理内存 都使用 统一的物理地址空间 访问 ;RISC 全称 " Reduced Instruction Set

    日期 2023-06-12 10:48:40     
  • 【Linux 内核 内存管理】内存映射相关数据结构 ② ( vm_area_struct 结构体成员分析 | vm_mm 成员 | vm_page_prot 成员 | vm_flags 成员 )

    【Linux 内核 内存管理】内存映射相关数据结构 ② ( vm_area_struct 结构体成员分析 | vm_mm 成员 | vm_page_prot 成员 | vm_flags 成员 )

    文章目录一、vm_area_struct 结构体成员分析1、vm_mm 成员2、vm_page_prot 成员3、vm_flags 成员二、vm_area_struct 结构体完整源码在之前的博客 【Linux 内核 内存管理】虚拟地址空间布局架构 ⑦ ( vm_area_struct 结构体成员分析 | vm_start | vm_end | vm_next | vm_prev |vm_rb)

    日期 2023-06-12 10:48:40     
  • 【Linux 内核 内存管理】mmap 系统调用源码分析 ② ( sys_mmap_pgoff 系统调用函数执行流程 | sys_mmap_pgoff 函数源码 )

    【Linux 内核 内存管理】mmap 系统调用源码分析 ② ( sys_mmap_pgoff 系统调用函数执行流程 | sys_mmap_pgoff 函数源码 )

    文章目录一、sys_mmap_pgoff 系统调用函数执行流程二、sys_mmap_pgoff 系统调用函数源码调用 mmap 系统调用 , 先检查 " 偏移 " 是否是 " 内存页大小 " 的 " 整数倍 " , 如果偏移是内存页大小的整数倍 , 则调用 sys_mmap_pgoff 函数 , 继续向下执行 ;一、sys_mmap_pg

    日期 2023-06-12 10:48:40     
  • 【Linux 内核 内存管理】munmap 系统调用源码分析 ① ( munmap 系统调用函数执行流程 | munmap 函数源码 | vm_munmap 函数源码 )

    【Linux 内核 内存管理】munmap 系统调用源码分析 ① ( munmap 系统调用函数执行流程 | munmap 函数源码 | vm_munmap 函数源码 )

    文章目录一、munmap 系统调用函数执行流程二、munmap 系统调用函数源码三、vm_munmap 函数源码一、munmap 系统调用函数执行流程munmap 系统调用函数 的作用是 " 删除内存映射 " , 该函数有 2 个参数 , 分别是 unsigned long addr 和 size_t, len , 前者是 内存映射 的 起始地址 , 后者是 内存映射 的 长度

    日期 2023-06-12 10:48:40     
  • 【Linux 内核 内存管理】munmap 系统调用源码分析 ② ( do_munmap 函数执行流程 | do_munmap 函数源码 )

    【Linux 内核 内存管理】munmap 系统调用源码分析 ② ( do_munmap 函数执行流程 | do_munmap 函数源码 )

    文章目录一、do_munmap 函数执行流程二、do_munmap 函数源码munmap 系统调用函数 调用了 vm_munmap 函数 , 在 vm_munmap 函数 中 , 又调用了 do_munmap 函数 , do_munmap 函数 是 删除 内存映射 的 核心函数 ;一、do_munmap 函数执行流程do_munmap 函数执行流程 :根据 unsigned long start

    日期 2023-06-12 10:48:40     
  • 【Linux 内核 内存管理】物理内存组织结构 ③ ( 内存管理系统三级结构 | 内存节点描述 | 内存节点 pglist_data 结构体 | pglist_data 结构体源码 )

    【Linux 内核 内存管理】物理内存组织结构 ③ ( 内存管理系统三级结构 | 内存节点描述 | 内存节点 pglist_data 结构体 | pglist_data 结构体源码 )

    文章目录一、内存节点描述二、内存节点 pglist_data 结构体三、pglist_data 结构体源码内存管理系统 3级结构 :① 节点 Node ,② 区域 Zone ,③ 页 Page ,Linux 内核中 , 使用 上述 3 级结构 描述 和 管理 " 物理内存 " ;一、内存节点描述Linux 内核中 , 内存节点 ( Node ) 是 " 内存管理 &q

    日期 2023-06-12 10:48:40