内核的动态与静态特征
内核其实并不抽象,它是一个具体的东西,静态地来看,内核是一组资源的集合;从动态来看,内核是一组内核线程。
也就是说内核本身就是管理资源的,如内存、CPU、设备资源,内核以管理这些资源的方式来提供服务,实际上这些管理动作
都可以认为是一些内核线程。
内核的线程或进程的调度
线程或进程使用CPU的方式可以看出,线程要么是轮询的方式来占有CPU,要么是让出CPU,进入等待状态。
上下文切换的频繁与否,都是反映了线程在CPU上的切换,可能是IO引起的(可以通过vm的wa列看出),可能是线程过多导致的(vmstat的cs列指出的),这个具体的原因可以看IO的次数(vmstat中的bi/bo列)。还有一个指标就是进程的排队时时间(vmstat的r列表现出来的)。当然交换(swap)这个术语一般用来描述磁盘与内存的交互,也有一定的参考价值(vmstat的si/so可以显出端倪)。
内核态与用户态的说法
本来这些数据是全局的,系统上所有的进程的统计数据,但是对于逻辑结构与部署结构关系紧密的情况下,也可以用来分析应用系统。可以看到应用系统在内核态的占用时间和用户态占用的时间来分析(vmstat的us,sy列的数据),所谓内核态的时间,主要是应用系统中系统调用的频繁程度的一个体现,用户态的时间,主要是非系统调用的代码的执行时间,也就是自己写的那些代码的执行时间或频繁程度。
内存交换
内存交换的概念是虚拟内存写到磁盘,并不是物理内存写到磁盘。
最重要的是,对于进程来说,内存是否交换,它是无法知道的,这个只有内核知道,内核知道特定的虚拟地址是否已经映射到物理内存还是磁盘。在内存交换对用户进程不可知的情况下,很多系统程序是没法知道当前的数据是在内存还是磁盘。
对于大型的服务器而言,希望内存的交换越少越好,当然这是一个系统级的特性,可以通过vmstat的si/so列获知。
内存交换其实还有另外一种含义,也就是操作系统的交换分区,当虚拟内存不足的时候,可以使用交换分区。
阅读(1310) | 评论(0) | 转发(0) |