最近在研究 Linux 性能问题时,碰到一个难以理解的术语 Load Averages。有很多文章和书籍对此做了解释,但是看完之后仍是不甚明白。
我研读了一些文章,下面总结出来,希望对大家有所帮助。
Load Averages 的意义
Linux 里的 w
、top
和 uptime
等命令都能够显示 Load Averages 信息。
$ uptime
22:21 up 7 days, 4:51, 3 users, load averages: 0.87 1.05 0.93
# top
top - 17:04:58 up 2 days, 17:17, 4 users, load average: 0.23, 0.11, 0.08
Tasks: 257 total, 1 running, 256 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.5%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8173440k total, 8118352k used, 55088k free, 193856k buffers
Swap: 4104596k total, 195272k used, 3909324k free, 3981668k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
16784 root 15 0 12860 1248 840 R 1 0.0 0:00.43 top
4157 root 16 0 10252 708 608 S 0 0.0 1:15.50 hald-addon-stor
...
这里的 Load Averages 指的是系统平均负载(System Load Averages),包括正在运行的进程和正在等待的进程对于系统的压力,不仅包括正在运行的进程和正在等待的进程对 CPU 的压力,也包括正在运行的进程和正在等待的进程对磁盘的压力(I/O);或者可疑简单的理解为非完全空闲进程的测量度值。它测量三个时间段,即 1 分钟、5 分钟和 15 分钟。
- 如果所有值为 0, 说明系统很空闲
- 如果 1 分钟的值比 5 分钟、15 分钟的大,说明系统负载在上升
- 如果 1 分钟的值比 5 分钟、15 分钟的小,说明系统负载在下降
- 如果所有值大于 CPU 个数,那么系统有可能存在性能问题
第一个结果里显示,1 分钟的负载均值为 0.87, 5 分钟的负载均值为 1.05,15 分钟的负载均值为 0.93。对于多核系统,负载是相对于可用处理器的核数而言的。负载均值为 1,对于单核系统意味着 100% 的资源使用率,而对于双核系统仅意味着 50% 的资源使用率。
在多核系统上,负载最好不要超过可用核数。此外,“核就是核”,核如何分布在 CPU 上无关紧要。比如,两个四核=四个双核=八个单核。
如何获得系统的核数?
执行 cat /proc/cpuinfo
获取处理器信息,或者直接运行 grep 'model name' /proc/cpuinfo | wc -l
获得个数。
网友评论