进程内存分配,一个4G内存机器,内核会把物理内存用Page Frame形式分配给每个进程,最大3G,所以,每个进程都一位自己是除了内核唯一的进程,进程中的数据分为两大类。
进程状态 :
ps有3种显示风格
UNIX风格,选项带一个 -
BSD风格 选项不带 -
GNU 带两个-的长选项
常用选项
a:所有与终端相关的进程;
x:所有与终端无关的进程;
u:以用户为中心组织进程状态信息显示;
[root@node1 ~]# ps axu
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 193700 6848 ? Ss 12:28 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
USER
PID
%CPU cputime/realtime cpu使用时间 除 进程累计运行时间
%MEM 占整个内存比率
VSZ 虚拟内存集 虚拟内存集中可能包含很多共享库 单位是kb
RSS 常驻内存集 (resident set size, the non-swapped physical memory that a task has used (in kiloBytes).(alias rssize, rsz).)单位是kb
STAT
R:running
S:interruptable sleeping
D:uninterruptable sleeping
T:Stopped
Z:zombie
+:前台进程
l:多线程进程
N:低优先级进程
<:高优先级进程
s:session leader
TIME 累计cpu使用时间
常用选项
-e:显示所有进程
-f:显示完整格式的进程信息
-F:显示完整格式的进程信息;
C: cpu utilization cputime/realtime cpu使用时间 除 进程累计运行时间
PSR:运行于哪颗CPU之上
-H:以层级结构显示进程的相关信息;
[root@node1 ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 12:28 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root 2 0 0 12:28 ? 00:00:00 [kthreadd]
UID
PID
PPID 父pid
C cputime/realtime cpu使用时间 除 进程累计运行时间
STIME 启动时间
TTY 相关终端
TIME cpu累计时间
CMD
自定义选项,o field1, field2,...,个人觉得非常好用
常用自定义字段
uid
uname
group
fuid filesystem access user ID
fuser
gid
%cpu pcpu
%mem pmem
psr processor that process is currently assigned to 运行于哪颗CPU之上
pid
ppid
tty
rtprio realtime priority 实时优先级 越大优先级越高
priority 用户优先级 (pri不一样算法)
ni nice nice value. This ranges from 19 (nicest) to -20 (not nice to others)
vsz vsize 虚拟内存
rss rssize rsz 常驻内存
s stat 状态
start 命令开始时间
args cmd command
[root@node1 ~]# ps axo uname,pid,ppid,tty,pcpu,pmem,rtprio,priority,ni,vsz,rsz,s,start,cmd,pri
USER PID PPID TT %CPU %MEM RTPRIO PRI NI VSZ RSZ S STARTED CMD PRI
root 1 0 ? 0.0 0.3 - 20 0 193700 6848 S 12:57:49 /usr/lib/systemd/systemd -- 19
top - display Linux processes
top - 01:51:36 up 13:22, 3 users, load average: 0.00,0.01,0.05
当前时间 运行时常 3个用户 平均负载 过去1分钟、5分钟和15分钟的平均负载;cpu*(0-0.7表示顺畅 1满负载 5将近死机)
Tasks: 112 total, 2 running, 110 sleeping, 0 stopped, 0 zombie
总共多少进程 2个在跑 110在睡眠 0个停止 0个僵死
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
用户空间占用百分比 内核占用 用户进程改变过优先级的进程占用 空闲idle 等待(io) 硬件中断hardware interrupt 软件中断 被偷走steal
KiB Mem : 1867048 total, 1383244 free, 166956 used, 316848 buff/cache
内存 总空间 空闲空间 使用 可回收buffer待写入 cache读取缓存
KiB Swap: 2097148 total, 2097148 free, 0 used. 1501796 avail Mem
交换分区
PID USER PR优先级 NI VIRT虚拟内存集 RES常驻内存 SHR共享内存 S %CPU %MEM TIME+(cpu累计占用时间) COMMAND
607 root 20 0 305100 6168 4800 S 0.3 0.3 0:48.91 vmtoolsd
交互
M 根据内存排序
T cpu累计占用时间 time排序
P:以占据CPU百分比排序;
首部信息:
uptime信息:l命令
tasks及cpu信息:t命令
1 分别显示每个cpu
内存信息:m命令
修改刷新时间间隔:s
终止指定的进程:k
退出命令:q
说完top,在介绍一款升级版top htop,相比top,htop提供更多的鼠标方便操作,更直观的可视化。
[root@node1 yum.repos.d]# yum install htop
帮助说明
/ search
p 详细/简洁 程序路径
t 树状显示 可查看进程关系
u 根据user筛选
K 显示/隐藏 内核线程 而在top是显示的
H 显示/隐藏 用户线程
F 光标跟踪程序
P 根据cpu排序 M 根据内存排序 T根据cpu占时间排序
I 逆序
自定义字段排序
space 下一个经常
K 结束进程
a 绑定进程在哪个cpu
l 显示进程打开的文件
s 查看当前进程发起的系统调用
i 涉及优先级
] 增加优先级
[ 减少优先级选项:
-d #:指定延迟时间间隔;
-u UserName:仅显示指定用户的进程;
-s COLUME:以指定字段进行排序;
子命令:
l:显示选定的进程打开的文件列表;
s:跟踪选定的进程的系统调用;
t:以层级关系显示各进程状态;
a:将选定的进程绑定至某指定的CPU核心;
versatile tool for generating system resource statistics,非常强大系统监测工具
安装
[root@node1 ~]# yum install dstat
常用选项?
-c, --cpu cpu信息
-C 0,3,total 哪块cpu
-d, --disk 磁盘读写
-D total,sda 显示磁盘的相关信息
-g, --page 显示page相关的速率数据;
-i, --int 终端
-l, --load enable load average stats (1 min, 5 mins, 15mins)
-m, --mem Memory的相关统计数据
-n, --net 网络的相关统计数据;
-N eth1,total
-p, --proc 进程状态
-r: --io 显示io请求的相关的统计数据;
-s --swap: 显示swapped的相关统计数据;
-t, --time 当前时间
-y, --sys cpu中断 切换
--aio 异步io
--fs, --filesystem 文件数量和inodes
--ipc 队列信号量共享内存
--raw 全部socket
--socket tcp udp等
--tcp --udp
--output file
--top-cpu 最高cpu使用
--top-cputime
--top-io: 最占用io的进程;
--top-mem: 最占用内存的进程;
--top-latency: 延迟最大的进程;
dstat delay count
[root@node1 ~]# dstat 1 2
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int中断 csw-上下文切换
0 0 100 0 0 0|3413B 4582B| 0 0 | 0 0 | 87 64
0 0 100 0 0 0| 0 0 | 120B 818B| 0 0 | 71 53
0 0 100 0 0 0| 0 0 | 60B 338B| 0 0 | 48 41
查看cpu
[root@node1 ~]# dstat -c 1 1
----total-cpu-usage----
usr用户占用比率 sys内核 idl空闲 wai等待 hiq硬件中断 siq软件中断
0 0 100 0 0 0
0 0 100 0 0 0
查看内存
[root@node1 ~]# dstat -m 1 1
------memory-usage-----
used buff cach free
294M 2080k 472M 1055M
294M 2080k 472M 1055M
磁盘读写
[root@node1 ~]# dstat -d 1 1
-dsk/total-
read writ
3406B 4573B
0 0
平均负载 过去1,5,15分钟负载 ,0-0.8顺畅,1是满负载 超过5是快不行了
[root@node1 ~]# dstat -l 1 1
---load-avg---
1m 5m 15m
0 0.01 0.05
0 0.01 0.05
网络io速度
[root@node1 ~]# dstat -n 1 1
-net/total-
recv接收 send发送
0 0
60B 194B
进程状态
[root@node1 ~]# dstat -p 1 1
---procs---
run(运行) blk(阻塞 不可中断) new(新)
0.0 0 0.2
0 0 0
socket状态
[root@node1 ~]# dstat --socket 1 1
------sockets------
tot tcp udp raw frg
574 4 3 0 0
574 4 3 0 0
tcp状态
[root@node1 ~]# dstat --tcp 1 1
----tcp-sockets----
lis监听 act确认 syn同步 tim等待 clo关闭
4 2 0 0 0
4 2 0 0 0
最高使用cpu
[root@node1 ~]# dstat --top-cpu 1 1
-most-expensive-
cpu process
vmtoolsd 0.0
最多使用cpu时间
[root@node1 ~]# dstat --top-cputime 1 1
--highest-total--
cputime process
vmtoolsd 1055
vmtoolsd 635
最多io
[root@node1 ~]# dstat --top-io 1 1
----most-expensive----
i/o process
bash 34k 3198B
sshd: root@ 146B 180B
最多内存
[root@node1 ~]# dstat --top-mem 1 1
--most-expensive-
memory process
firewalld 27.0M
firewalld 27.0M
最高延迟
[root@node1 ~]# dstat --top-latency 1 1
--highest-total--
latency process
vmtoolsd 85
kworker/1:1 60
非内核进程默认priority=120,为了方便读取很多场景使用20
nice值范围在-20-19
调优后 0<=priority<=39
增加优先级
[root@node1 yum.repos.d]# nice -n -5 htop
[root@node1 14511]# cat /proc/13828/sched
htop (13828, #threads: 1)
-------------------------------------------------------------------
......
prio : 115
.......
降低优先级
[root@node1 yum.repos.d]# nice -n 5 htop
[root@node1 ~]# ps axo uname,pid,ppid,tty,pcpu,pmem,rtprio,priority,ni,vsz,rsz,s,start,cmd|grep htop
root 13851 2368 pts/1 0.2 0.1 - 25 5 122432 2116 S 08:42:53 htop
运行中的程序可以用renice进行调优
#renice [-n] NICE PID...
[root@node1 ~]# renice -n -3 13851
13851 (进程 ID) 旧优先级为 5,新优先级为 -3
原文地址:http://blog.51cto.com/marvin89/2110394