本文主要是介绍linux下查看系统资源和负载,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
linux uptime命令主要用于获取主机运行时间和查询linux系统负载等信息。uptime命令过去只显示系统运行多久。现在,可以显示系统已经运行了多长时间,信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。
uptime命令用法十分简单:直接输入
# uptime
即可。
输入样例:
18:02:41 up 41 days, 23:42, 1 user, load average: 0.00, 0.00, 0.00
1可以被认为是最优的负载值。负载是会随着系统不同改变得。单CPU系统1-3和SMP系统6-10都是可能接受的。
另外还有一个参数 -V ,是用来查询版本的。 (注意是大写的字母v)
[linux @ localhost]$ uptime -V
procps version 3.2.7
[linux @ localhost]$ uptime
显示结果为:
10:19:04 up 257 days, 18:56, 12 users, load average: 2.10, 2.10,2.09
显示内容说明:
10:19:04 //系统当前时间
up 257 days, 18:56 //主机已运行时间,时间越大,说明你的机器越稳定。
12 user //用户连接数,是总连接数而不是用户数
load average // 系统平均负载,统计最近1,5,15分钟的系统平均负载
那么什么是系统平均负载呢? 系统平均负载是指在特定时间间隔内运行队列中的平均进程数。
如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能是良好的。如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。
如果你的linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被充分使用了。
查看cpu负载
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 4 329796 26040 4528 3379824 1 1 50 160 36 17 2 10 85 3 0
r 列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。
b 列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。
cpu 表示cpu的使用状态
us 列显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。
sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。
wa 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。
id 列显示了cpu处在空闲状态的时间百分比
system 显示采集间隔内发生的中断数
in 列表示在某一时间间隔中观测到的每秒设备中断数。
cs列表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。
memory
swpd 切换到内存交换区的内存数量(k表示)。如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常
free 当前的空闲页面列表中内存数量(k表示)
buff 作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。
cache: 作为page cache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。
swap
si 由内存进入内存交换区数量。
so由内存交换区进入内存数量。
IO
bi 从块设备读入数据的总量(读磁盘)(每秒kb)。
bo 块设备写入数据的总量(写磁盘)(每秒kb)
这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。
1,查看磁盘
df -h
2,查看内存大小
free
free [-m|g]按MB,GB显示内存
vmstat
3,查看cpu
cat /proc/cpuinfo
只看cpu数量grep "model name" /proc/cpuinfo | wc -l
4,查看系统内存
cat /proc/meminfo
5,查看每个进程的情况
cat /proc/5346/status 5347是pid
6,查看负载
w
uptime
7,查看系统整体状态
top
最后一些输出信息的解释:
load average: 0.09, 0.05, 0.01
三个数分别代表不同时间段的系统平均负载(一分钟、五 分钟、以及十五分钟),它们的数字当然是越小越好。“有多少核心即为有多少负荷”法则: 在多核处理中,你的系统均值不应该高于处理器核心的总数量
进程使用的内存可以用top,有3个列VIRT RES SHR, 标示了进程使用的内存情况, VIRT标识这个进程可以使用的内存总大小, 包括这个进程真实使用的内存, 映射过的文件, 和别的进程共享的内存等. RES标识这个这个进程真实占用内存的大小. SHR标识可以和别的进程共享的内存和库大小.
8,性能监视sar命令
sar -u输出显示CPU信息。-u选项是sar的默认选项。该输出以百分比显示CPU的使用情况
CPU
CPU编号
%user
在用户模式中运行进程所花的时间
%nice
运行正常进程所花的时间
%system
在内核模式(系统)中运行进程所花的时间
%iowait
没有进程在该CPU上执行时,处理器等待I/O完成的时间
%idle
没有进程在该CPU上执行的时间
sar 5 10 sar以5秒钟间隔取得10个样本
sar -u -p ALL 5 5 分cup显示
sar -n { DEV | EDEV | NFS | NFSD | SOCK | ALL }
sar 提供六种不同的语法选项来显示网络信息。-n选项使用6个不同的开关:DEV | EDEV | NFS | NFSD | SOCK | ALL 。DEV显示网络接口信息,EDEV显示关于网络错误的统计数据,NFS统计活动的NFS客户端的信息,NFSD统计NFS服务器的信息,SOCK显示套接字信息,ALL显示所有5个开关。它们可以单独或者一起使用。
sar -n DEV 各参数含义
IFACE
LAN接口
rxpck/s
每秒钟接收的数据包
txpck/s
每秒钟发送的数据包
rxbyt/s
每秒钟接收的字节数
txbyt/s
每秒钟发送的字节数
rxcmp/s
每秒钟接收的压缩数据包
txcmp/s
每秒钟发送的压缩数据包
rxmcst/s
每秒钟接收的多播数据包
9,查看命令历史(含时间戳)
export HISTTIMEFORMAT='%F %T ';history| more
10,查看文件夹和文件大小
du -h --max-depth=0 dm 查看dm目录大小
du -h --max-depth=1 dm 查看dm目录大小,以及dm各文件文件夹的大小
du -h --max-depth=0 查看当前文件夹大小
1. Top命令 是能够比较全面实时展示进程的资源占用状况,详解参见Linux 系统监控负载top命令详解 见 http://www.linuxidc.com/Linux/2012-10/72756.htm
2. uptime 不需其他参数,提供使用者下面的信息:
现在的时间 系统开机运转到现在经过的时间 连线的使用者数量 最近一分钟 、五分钟和十五分钟的系统负载 参数。
17:09:52 up 30 days, 23:55, 7 users, load average: 4.03, 4.10, 4.17
对于单核cpu(1个核心),一般维持在0.7左右,负荷 1.00 说明系统已经没有剩余的资源了,大于1.00说明已经服务器超负荷运行了,对于一台24核 的上述负载值来说,系统资源还是有很大的空闲可用。
从性能的角度上理解,一台主 机拥有多核心的处理器与另台拥有同样数目的处理性能基本上可以认为是相差无几。当然实际 情况会复杂得多,不同数量的缓存、处理器的频率等因素都可能造成性能的差异。
但即便这些因素造成的实际性能稍有不同,其实系统还是以处理器的核心数量计算负载均值 。这使我们有了两个新的法则:
「有多少核心即为有多少负荷」法则: 在多核处理中,你的系统均值不应该高于处理器核心的总数量。
「核心的核心」法则: 核心分布在分别几个单个物理处理中并不重要,其实两颗四核的处理器 等于 四个双核处理器 等于 八个单处理器。所以,它应该有八个处理器内核。
在 Linux 下,可以使用
cat /proc/cpuinfo
获取你系统上的每个处理器的信息。如果你只想得到数字,那么就使用下面的命令:
grep 'model name' /proc/cpuinfo | wc -l
3. free用来监控内存信息的使用状况
- [xubc@node1 log]$ free -m -s 2 -c 3
- total used free shared buffers cached
- Mem: 32219 30986 1233 0 1740 25455
- -/+ buffers/cache: 3789 28430
- Swap: 16386 0 16386
参数:-m 是以MB来显示内存信息大小的
-s 每隔2秒刷新内存信息数据
-c 显示次数
Mem: total 物理内存总数: 32219M
used 已经使用的内存数: 30986M
free 空闲的内存数: 1233M
shared 当前已经废弃不用,总是0
buffers 即Buffer Cache内存数: 1740M
cached 即Page Cache内存数: 25455M
-/+ buffers/cache:
used = Mem.used-buffers-cache
free = Mem.used+buffers+cache
-buffers/cache反映的是被程序实实在在占用掉的内存,而+buffers/cache反映的是可以挪用的内存总数。
操作系统来讲buffers/cached 都是属于被使用,所以它认为free只有1233.
应用程序来讲是(-/+ buffers/cach).buffers/cached 是等同可用的,因为buffer/cached是为了提高程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。
page cache用来缓存文件数据,buffer cache用来缓存磁盘数据。
Page cache实际上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到page cache;
Buffer cache是针对磁盘块的缓存,也就是在没有文件系统的情况下,直接对磁盘进行操作的数据会缓存到buffer cache中,例如,文件系统的元数据都会缓存到buffer cache中。
这篇关于linux下查看系统资源和负载的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!