内核:内核是管理系统的程序,包括设备(硬件)、内存和cpu调度,运行在
cpu的特权模式,允许直接访问硬件,称为内核态
进程:是用来是执行程序的环境。程序通常运行在用户模式。通过系统调用
或者自陷来进入内核模式
线程:可被调用的运行在cpu上的可执行上下文,内核有个线程,一个进程有
一个或多个线程。
内核空间:内核的内存地址空间
用户空间:进程的内存地址空间
上下文切换:内核程序切换cpu让其在不同的地址空间上操作
系统调用:一套定义明确的协议。为用户程序请求内核执行特权操作,包括
设备i/o
自陷:信号发送到内核,请求执行一段系统程序,自陷类型包括系统调用、
处理器异常,以及中断。
中断:由物理设备发送给内核的信号,通常是请求i/o服务。中断是自陷的一种类型
线程状态分析
线程分析目的:分辨应用程序相称的时间用在了什么地方
on-CPU:执行
off-CPU:等待下一轮上cpu,或者等待i/o。锁、换也、
off-CPU的六种线程状态
1.执行:在cpu上
可运行:等待轮到上cpu
匿名换页:可运行,但是因为等待匿名换页而受阻
睡眠:等待包括网络、块设备和数据/文本页换入在内的i/o
锁:等待获取同步锁
空闲:等待工作
执行:检查执行的是用户态时间还是内核态时间,用部析来做cpu资源消耗
可运行:在这状态上耗时意味着应用程序需要更多的cpu资源,接茬整个系统的
cpu负载,以及所有对该应用程序做的cpu限制,例入资源控制
匿名换页:引用程序缺少可用的主存会引起换页和延时,检查整个系统的内存使用
情况,和所有对该程序做的内存限制
睡眠:分析阻塞应用程序的资源
锁:识别锁和持有该锁的线程,确定线程持锁这么长时间的原因。原因可能是持锁线
程阻塞在另一个锁上,这就需要进一步的梳理。
花在等待 CPU 运行上的时间又被称为运行队列延时或者分发器队列延时
地址空间:内存上下文,每个进程和内核都有对应的虚拟地址空间
OOM;内存耗尽,内核检测到可用内存低
换页:将页面换入和调出主存,他们分别被称为页面换入和页面换出
允许运行部分载入的程序、运行大于主存的程序、高效地在主存和存储设备间
迁移
匿名换页: 当应用程序访问被调出的页时,会被读页的磁盘i/o阻塞,这就是
是匿名换页换入,它给应用程序带来同步延时。性能在没有换页的情况下处于
最佳状态,做到这一点,可以通过配置应用程序常住于内存并且监控页面扫描
内存使用率和匿名换页,来确保不存在内存短缺的迹象。