Linux工作流程 : 1.POST加电自检2.加载BIOS, BIOS 加载 CMOS , 取得硬件信息和自我检测,取得第一个可启动设备3.读取第一个启动设备内 MBR(MasterBoot Record,主引导分区) 的 Boot Loader4.Boot Loader(主引导程序,识别操作系统的文件格式,决定装载哪个内核)5.加载内核,内核检测硬件和加载驱动程序6.内核驱动成功后,调取 init 进程,init 取得 run-level 信息7.init 执行 /etc/rc.d/rc.sysinit 准备软件执行的环境, /etc/inittab8.init 执行 run-level 的各个服务的启动9.init 执行 /etc/rc.d/rc.local 文件10.init 执行终端模拟程序mingetty启动login进程,等待用户登录有2种方式查看内核引导和运行诊断信息:1.查看内核系统日志文件,/var/log/kern.log2.执行dmesg 命令内核初始化的顺序如下:1.检查cpu2.检查内存3.发现设备总线4.发现设备5.辅助内核子系统启动6.挂载根目录7.用户空间启动文件 /proc/cmdline 记录了内核启动参数查看运行级别:
who -r  //run-level 3  2017-11-27 18:00用户空间启动顺序:1.init2.必要的底层服务,如 :udevd 和 syslog3.网络配置4.中高层服务,如 cron, printing5.登录提示,图形界面以及其他高层次应用天字第一号进程:init(initialization 的缩写)是Unix和类Unix系统中用来产生其他所有进程的程序。它也守护进程的方式存在,其进程号为1.Linux系统开机时加载Linux内核后,便由Linux内核加载init程序,由init程序完成剩余的开机过程,比如加载运行级别,加载服务,引导shell/图形化界面等等。在Linux发行版中,init有3种主要的实现形式:1.System V init : 传统的System V init 存在一个启动序列,同一时间只能启动一个任务,在这种架构下,很容易解决依赖问题,但性能方面要受到一些影响。2.systemd : 所有主流Linux发行版中标准的initSystemd is goal oriented : 针对System V init 的不足,systemd 所有的服务都并发启动。systemd 基于目标的,需要定义要实现的目标,以及它的依赖项。systemd 将所有的过程都抽象为一个配置单元,即unit。可以认为一个服务是一个配置单元,一个挂载点是一个配置单元。3.Upstart : UbuntuUpstart 是基于事件的,Upstart的事件驱动模型允许它以异步方式对生成的事件作出回应。
内存管理:内存是计算机中与cpu进行沟通的桥梁,用于暂时存放cpu中的运算数据。在早期的Unix系统中,fork启动新进程的时候,由于父进程往子进程复制内存信息需要消耗一定的时间,因此启动多个进程存在性能瓶颈。现在的Linux内核则通过'写时复制'等机制提高了创建进程的效率;也正是因为如此,关于Linux内存分配,计算,空闲判断有一些特别需要注意的地方。内存异常:out of memory(OOM) killer最常见的内存管理异常就是 Out of memory 问题。通常是因为某个应用程序大量请求内存导致系统内存不足造成的,触发内核里的Out of memory killer, OOM killer 会杀掉某个进程以释放内存给系统内核用。它实际上是一种保护机制,不至于让系统立即崩溃。内核检测到内存利用不足,就会选择杀掉某个 'bad'进程。如何判断和选择一个'bad'进程呢?算法和思路非常简单:最bad的那个及承诺函就是占用内存最多的进程。我的内存利用率为什么特别高?1.内存利用率(概括):free2.内核利用率(进程):top内存空闲率 = (total - used)/total '真实的'内存空闲率 = (free + shared + buffers + cached)/total 按照用户,内存可以划分为 '内核内存'和'用户内存'(用户进程及磁盘高速缓存),包括内核本身在内,程序在访问物理内存时,并不直接指定物理地址,而是指定逻辑地址。cpu上搭载的硬件MMU(memory management unit)会参照物理--逻辑地址对应关系表实现对映射后物理地址上的数据访问。Linux内存的分类:用户内存的分类有2组概念比较重要:匿名内存和file-backed 内存;active 和 inactive。它们的区别如下:1.匿名内存:用来存储用户进程计算过程中间的数据,与物理磁盘的文件没有关系2.file-backed内存:用作磁盘高速缓存,其物理内存与磁盘上的文件是对应的3.active:刚刚被使用过的数据的内存空间4.inactive:包含有长时间未被使用过的数据的内存空间shmem(shared memory) 指的就是 tmpfs 所使用的内存---一个机遇内存的文件系统,提供可以接近于零延迟的快速存储区域。Linux可以将空闲内存用于缓冲,并且在应用程序需要的时候回收。'/ + buffers/cache' : 提供了关于内存利用率更加准确的数值。buffers:buffer cache,用于块设备IOcached : page cache,用于文件系统Linux内存的计算:各类内存的计算公式如下:shmem = 磁盘高速缓存(buffers/cached) - File-backed内存(file) = 匿名内存(anon) - AnonPages 用户内存 = Active(file) + inactive(file) + active(anon) +inactive(anon) + unevictable = buffers + cached + AnonPages内核内存 = Memtotal - (MemFree + Active + Inactive + unevictable)Linux 进程的内存:执行 'ps aux' 后输出的各个进程的RSS(resident set size),表示进程占用内存的大小,单位是kb。需要注意的是,RSS值实际上是基于 pmap命令,表示'该进程正在使用的物理内存的总和'。pmap提供了进程的内存映射,也可以支持多个额进程的内存状态显示。与 ldd 命令类似,pmap 命令可以查看到程序调用的路径。如果查看一个已经运行,但是又不知道路径的程序,使用pmap更快捷。/proc/PID/status 支持的选项有:1.VmData:  data 段大小2.VmExe:   text 段大小3.VmLib : 共享库的使用量4.VmRSS : 物理内存的使用量5.VmSwap : 交换空间的使用量

4.Linux性能诊断 --- Linux工作流程内存管理相关推荐

  1. linux性能诊断,linux下跟性能相关的命令以及系统性能诊断

    linux下和性能相关的命令以及系统性能诊断 4.网络性能识别与分析 可以通过命令netstat,iptraf命令来识别 可以通过ifconfig,netstat连接网络基本情况 ifconfig   ...

  2. 必备的 Linux 性能诊断分析工具!(文末送书)

    阅读本文大概需要 8.8 分钟. 作者:董西孝 来源:http://t.cn/Ehs6xfz 福利:文末留言送 3 本Linux系统安全相关书籍<Linux系统安全:纵深防御.安全扫描与入侵检测 ...

  3. Linux性能优化之CPU、内存、IO优化

    Linux 的性能进行监测,以下是 VPSee 常用的工具: 工具    简单介绍 top    查看进程活动状态以及一些系统状况 vmstat    查看系统状态.硬件和系统信息等 iostat   ...

  4. linux+性能排查,Linux系统性能排查基础

    此文已由作者李晶授权网易云社区发布. 欢迎访问 上一期运维季刊中,我们重点从CPU方面分析了Linux系统性能瓶颈,除了CPU之外,内存.IO和网络也是常见的造成系统出现问题的根源,本篇我们继续介绍如 ...

  5. 嵌入式Linux驱动笔记(二十九)------内存管理之伙伴算法(Buddy)分析

    你好!这里是风筝的博客, 欢迎和我一起交流. 我们知道,在一个通用操作系统里,频繁申请内存释放内存都会出现一个非常著名的内存管理问题:内存碎片. 学过操作系统的都知道,有很多行之有效的方法(比如:记录 ...

  6. linux 性能教程,Linux系统下常见性能分析工具的使用

    在前面的文章中,我简单介绍了影响linux性能的几个方面以及如何解决这些方面的问题,但是如何才能从系统上发现是某个方面或某几个方面出现问题了呢,这就需要使用linux系统提供的几个常用性能分析工具,下 ...

  7. Linux内核源码分析之内存管理

    本文站的角度更底层,基本都是从Linux内核出发,会更深入.所以当你都读完,然后再次审视这些功能的实现和设计时,我相信你会有种豁然开朗的感觉. 1.页 内核把物理页作为内存管理的基本单元. 尽管处理器 ...

  8. 《Linux内核设计与实现》内存管理札记

    1.页 芯作为物理页存储器管理的基本单元,MMU(内存管理单元)中的页表,从虚拟内存的角度来看,页就是最小单位. 内核用struct page结构来标识系统中的每个物理页.它的定义例如以下: flag ...

  9. 《深入理解Linux内核》笔记5:内存管理

    本文介绍内核如何给自己分配物理内存并管理.对应<深入>第8章. 在<深入>第2章"内存寻址"(或者是我博客中的这篇文章,点这里)中,已经介绍了内核如何给自己 ...

  10. linux内核编程13期:内存管理

    内管管理子系统是Linux内核中比较复杂的一个模块,也是很多Linux开发者的"梦魇",无论是Linux新手.运维.应用开发者,还是有多年经验的驱动工程师,在学习内存管理时,面对错 ...

最新文章

  1. breakContinue标签使用
  2. mysql 5.5半同步复制_MySQL5.5配置安装半同步复制
  3. c++11 string u8_深入理解C++11:C++11新
  4. java学习(104):字符串equals,charAt,endwith,startwith方法
  5. functools.partial()==>预先设置参数,使得之后调用的时候,减少函数的参数
  6. 实战生产环境vCenter HA配置(VCSA6.5)
  7. Python之定义默认参数
  8. python自动化写作_50行代码让python自动生成文章
  9. 24岁女孩与30岁男人的精彩对白
  10. 【POJ 2482】【扫描线问题】Stars in Your Window【包星星问题】
  11. 网络安全实验---防火墙实验
  12. 解决Wireshark安装Npcap组件失败
  13. 指纹识别算法c++实现
  14. linux 如何重建mbr,重建mbr要不要勾选
  15. 国外问卷调查好做吗?
  16. oracle的em能干什么,Oracle中EM的配置
  17. matlab的颜色映射colormap
  18. 前端小白写了个网页版五子棋游戏,使用原生 JS + Canvas 实现绘制棋子、棋盘
  19. 如何给excel的单元格添加斜线并在对角线
  20. Java的API(Scanner\Object\Date区\Math\Random\Arrays\String区\regex\包装类...)一般是parse(String)

热门文章

  1. 2018.12.2 中国石油大学第一次新生训练赛题解
  2. HDU.4352.XHXJ's LIS(数位DP 状压 LIS)
  3. day73 中间件 以及模板引擎
  4. SQLServer性能优化专题
  5. 易普优APS 5.0高级计划排程系统助力工业4.0智能工厂建设
  6. spring mvc 基础学习
  7. 《锋利的jQuery》随笔(一)
  8. MyEclipse 6.0 注册码
  9. Egret入门学习日记 --- 第八篇(书中 2.0~2.6节 内容)
  10. Centos7 下Jenkins 安装