首页 > 系统相关 >linux 性能自我学习 ———— 关于内存 [七]

linux 性能自我学习 ———— 关于内存 [七]

时间:2023-06-04 20:55:23浏览次数:52  
标签:缓存 oom 自我 内存 linux 进程 磁盘 分配

前言

内存的基本知识,将在操作系统篇中详细介绍,这里只说明如何排查问题。

正文

内存的分配和回收:

在malloc 是c 标准库中的内存分配函数,对应到系统调用上,有两种实现方式,一种是brk()和 mmap()

对于小块内存,小于128k 使用brk来分配,也就是通过移动堆栈的位置来分配内存。这些内存释放后,不会立即归还给系统,而是缓存起来。

大块内存,使用mmap()分配,在文件映射段找一块空闲内存分配出去。

brk() 方式的缓存,可以减少缺页异常的发生,提高内存访问效率。不过这些内存没有归还系统,在内存工作繁忙时, 频繁的内存分配和稀释会造成内存碎片。

而mmap() 方式分配的内存,会释放时直接规划系统,所以每次mmap 都会发生缺页异常。在内存工作繁忙时,频繁的内存分配导致大量的缺页异常,使内核的管理负担增大。

那么就到了内存不足的情况:

  1. 回收缓存,比如使用lru算法,回收最近使用最少的内存页面

  2. 回收不常用访问的内存,把不常用的内存通过交互分区直接写道磁盘中。

  3. 杀死进程,内存紧张时,系统会通过oom,直接杀死占用大量内存的进程。

第一种好理解,就是回收内存,在操作系统篇会介绍的比较详细。

第二种,回收不常用的内存,会用到交换分区。swap 其实就是把一块磁盘空间当作内存来用。它可以把进程暂不用的磁盘写入到内存中。

第三种是oom。

  1. 一个进程消耗的内存越大,oom_score 就越大。

  2. 一个进程运行占用的cpu越多,oom_score 就越小。

oom_adj 的范围 是[-17,15],数值越大,表示进程越容易被oom杀死。数值越小,表示进程越不容易被oom杀死,-17表示禁用oom。

一般情况下,查看内存的方式为

标签:缓存,oom,自我,内存,linux,进程,磁盘,分配
From: https://www.cnblogs.com/aoximin/p/17455460.html

相关文章

  • Linux的I/O复用之epoll:EPOLLONESHOT事件
        即使我们使用ET模式,一个socket上的某个事件还是可能被触发多次,这在并发程序中就会引起一个问题,比如一个线程在读取某个socket上的数据后开始处理这些数据,而在数据的处理过程中该socket上又有新的数据可读,此时另外一个线程被唤醒来读取这些新的数据,于是就出现两个线程同......
  • linux zImage 自解压
    顶层的vmlinux:elf文件,反汇编得到的是未压缩的内核的反汇编文件,这个vmlinux才是真正的Linux内核。arch/arm/boot/compressed/vmlinux:elf文件,包含解压缩程序、Image二进制代码的压缩版;反汇编,从指令执行地址可知,只有解压缩程序的汇编代码。 zImage包含了自解压程序和内核镜像......
  • Linux下高并发socket最大连接数所受的各种限制
    1、修改用户进程可打开文件数限制在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。可使用ulim......
  • Linux shell command cut All In One
    LinuxshellcommandcutAllInOnecut截取指定符号等号后面的字符串cut截取等号后面的字符串#获取env$env#获取登录当前用户信息$env|grepUSER$env|grepUSER|cut-d"="-f2#获取登录当前用户信息$whomai$echo$USERdemos#!/usr/bin/env......
  • 自我的创建
    分享下今天看到的一些知识,也不算是知识吧.更多的是对自己的一种认识.我从自身的经历来划分的几个阶段,来展示自我的发展方式,这个只是针对在幼年时的状态之所以称为完美的,是因为各种方向基本可以确定,很容易找到边界,成长起来相对稳定这种缺失,影响并不是很大,缺失一条边界......
  • VB6程序内存泄漏诊断
    生成dump文件如果要分析32bit程序问题,需要使用32-bitdump文件,比如taskmgr.exe32bit版,DebugDiag工具.taskmgr.exe32bit版路径是""C:\Windows\SysWOW64\Taskmgr.exe如果要分析64bit程序,需要使用64-bitdump文件,有很多可用的dump文件生成工具,比如t......
  • Linux & Window挂着网络磁盘
    :[url]http://feixiang123.blog.51cto.com/285543/137406[/url]在Windows与Linux下Samba共享文件夹以及映射的详细使用[url]http://wenku.baidu.com/view/2ab6906e58fafab069dc02ad.html[/url]][b]在linux下挂载windows系统的网络共享磁盘:[/b]mount-t......
  • linux操作
    vim的工作模式vim一般有6种工作模式。普通模式:使用vim打开一个文件时默认模式,也叫命令模式,允许用户通过各种命令浏览代码、滚屏等操作。插入模式:也可以叫做编辑模式,在普通模式下敲击i、a或o就进入插入模式,允许用户通过键盘输入、编辑。命令行模式:在普通模式下,先输入冒号:,接着......
  • 【Linux文件系统】文件描述符fd是什么?
    fd是什么?fd是Filedescriptor的缩写,即文件描述符,fd是一个非负证书,本质是一个索引值。当打开一个文件时,内核向进程返回一个文件描述符(open系统调用返回得到),后续read、write这个文件时,只需要用这个文件描述符来标识这个文件,将其作为参数传入read、write。fd的不同值代表什么?0......
  • 《Linux就该这么学》--本书组织结构
    部署虚拟环境安装Linux系统:新手必须掌握的Linux命令:管道符、重定向与环境变量:Vim编辑器与Shell命令脚本:用户身份与文件权限:存储结构与磁盘划分:使用RAID与LVM磁盘阵列技术:iptables与firewalld防火墙:使用ssh服务管理远程主机:使用Apacha服务部署静态网站:使用vsftpd服务传......