单核双核四核的区别 单核处理器是什么意思


单核双核四核的区别 单核处理器是什么意思

文章插图

前言做为一个性能测试工程师 , 每当我们发现计算机变慢的时候 , 我们通常的标准姿势就是执行 uptime 或 top 命令 , 来了解系统的负载情况 。
比如像下面这样 , 我在命令行里输入了 uptime 命令 , 系统会返回一行信息 。
appletekimbp:~ apple$ uptime20:44up 21 days,6:41, 2 users, load averages: 2.85 2.33 2.91但我想问的是 , 各位同学知道以上每列输出的含义吗?
20:44# 当前时间up 21 days,6:41# 系统运行时间2 users# 正在登录用户数# 系统的平均负载 , 分别是1分钟、5分钟、15分钟内系统的平均负载load averages: 2.85 2.33 2.91 这行信息的后半部分 , 显示 “load average” , 它的意思是”系统的平均载荷” , 里面有三个数字 , 我们可以从中判断系统负载是大还是小 。
什么是系统平均负载?我猜一定会有同学会说 , 平均负载不就是单位时间的 CPU 使用率吗?上面 2.85 , 就代表 CPU 使用率是 285% 。其实不是这样的 。
CPU 负载值在 Linux 系统中表示正在运行 , 处于可运行状态的平均作业数(读取一组与流程执行线程对应的机器语言的程序指令) , 或者非常重要 , 休眠但不可中断(不可交错的休眠状态)) 。也就是说 , 要计算 CPU 负载的值 , 只考虑正在运行或等待分配 CPU 时间的进程 。不考虑正常的休眠过程(休眠状态) , 僵尸或停止的过程 。
简单来说 , 平均负载是指单位时间内 , 系统处于可运行状态和不可中断状态的平均进程数 , 也就是平均活跃进程数 , 它和 CPU 使用率并没有直接关系 。
进程状态代码 R 正在运行或可运行(在运行队列中) D 不间断休眠(通常为IO) S 可中断休眠(等待事件完成) Z 失效/僵尸 , 终止但未被其父 T 停止 , 由作业控制停止信号或因为它被追踪 […]
这里先解释下 , 可运行状态和不可中断状态 。
可运行状态的进程 , 指的是正在使用CPU或者正在等待CPU的进程 , 也就是我们常用 ps 命令看到处于 R 状态(Running 或 Runnable)的进程 。
不可中断状态的进程 , 指的是正处于内核态关键流程中的进程 , 并且这些流程是不可打断的 , 比如常见是等待硬件设备的 I/O 响应 。也就是我们在Ps 命令看到的D状态(Uninterruptible Sleep , 也称为 Disk Sleep)的进程 。比如 , 当一个进程向磁盘读写数据时 , 为了保证数据的一致性 , 在得到磁盘回复前 , 它是不能被其他进程或者中断打断的 , 这个时间的进程就处于不可中断状态 。如果此时的进程被打断 , 就容易出现磁盘数据与进程数据不一致的问题 。所以 , 不可中断状态实际上是系统对进程和硬件设备的一种保护机制 。因此 , 我们可以简单理解为 , 平均负载其实就是平均活跃进程数 。平均活跃进程数 , 直观上的理解就是单位时间内的活跃进程数 。既然平均的是是活跃进程数 , 那么理想的是 , 每个CPU上都刚好运行着一个进程 , 这样每个CPU都得到了充分利用 。
以下是单核处理器计算机中不同负载值的含义: