2014-06-01 16:02:38 wantong2005 阅读数 5838

(1)ps 命令查看:

gb@gb-virtual-machine:/proc/19204$ ps -O sz,rsz,vsz 19204
  PID       SZ       RSZ    VSZ       S TTY          TIME COMMAND
19204  78192  1004   312768 S ?            00:00:00 ./memcached -p 11211 -m 3096m -d


ps命令是Linux下常见的查看进程状况的程序,它有几个字段可以用来查看 进程内存使用情况:sz,rss,vsz。分别说明如下:

  • sz:进程映像所占用的物理页面数量,也就是以物理页面为单位表示的虚拟内存大小;
  • rss:进程当前所占用的物理内存大小,单位为kB;
  • vsz:进程的虚拟内存大小,单位为kB,它等于sz乘于物理页面大小(x86平台通常为4kB)。

上面的例子中,虚拟内存占用312768KB,实际占用物理内存为 1004 KB,物理页面数量为 78192 ,这里有 78192   * 4K = 312768 

(2)用/proc文件系统查看占用内存情况:

通过/proc/<pid>/status可以查看进程的内存使用情况,包括虚拟内 存大小(VmSize),物理内存大小(VmRSS),数据段大小(VmData),栈的大小 (VmStk),代码段的大小(VmExe),共享库的代码段大小(VmLib)等等。

gb@gb-virtual-machine:/proc/19204$ cat /proc/19204/status
Name:   memcached
State:  S (sleeping)
Tgid:   19204
Ngid:   0
Pid:    19204
PPid:   1
TracerPid:      0
Uid:    1000    1000    1000    1000
Gid:    1000    1000    1000    1000
FDSize: 64
Groups: 4 24 27 30 46 108 124 1000 
VmPeak:   312768 kB
VmSize:   312768 kB
VmLck:         0 kB
VmPin:         0 kB
VmHWM:      1004 kB
VmRSS:      1004 kB
VmData:   304052 kB
VmStk:       136 kB
VmExe:       108 kB
VmLib:      2280 kB
VmPTE:        72 kB
VmSwap:        0 kB
Threads:        6
SigQ:   0/31457
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001001
SigCgt: 0000000180000002
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 0000001fffffffff
Seccomp:        0
Cpus_allowed:   f
Cpus_allowed_list:      0-3
Mems_allowed:   00000000,00000001
Mems_allowed_list:      0
voluntary_ctxt_switches:        2315
nonvoluntary_ctxt_switches:     0

这里 VmRSS:      1004 kB为占用物理内存大小,虚拟内存大小为: VmSize:   312768 kB



2013-05-16 09:03:52 yingbin920 阅读数 123

我们使用top命令来查看CPU使用状况。

top不会产生输出,屏幕内容保持不变。它刷新屏幕以显示新信息。因此,如果您只执行top并保持屏幕一直开启,则屏幕始终显示最新信息。退出top的命令为q,或者按下Ctrl-C.



top - 17:03:45 up 58 days,  4:01,  1 user,  load average: 0.00, 0.02, 0.00 
Tasks: 172 total,  1 running, 171 sleeping,  0 stopped,  0 zombie
Cpu(s):  0.2% us,  0.1% sy,  0.0% ni, 99.7% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:  4037036k total,  4007280k used,    29756k free,    93384k buffers
Swap:  8385888k total,    71536k used,  8314352k free,  3068240k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                              
27167 oracle    16  0 2011m 490m 483m S    1 12.4  0:46.93 oracle                                                                
27175 oracle    15  0 2011m 517m 510m S    1 13.1  0:49.78 oracle                                                                
5003 oracle    15  0 2021m  33m  29m S    0  0.9  3:56.10 oracle                                                                
    1 root      16  0  4756  552  460 S    0  0.0  0:09.31 init                                                                  
    2 root      RT  0    0    0    0 S    0  0.0  0:00.47 migration/0                                                            
  ...............................



第一行(top):

top - 17:03:45 up 58 days,  4:01,  1 user,  load average: 0.00, 0.02, 0.00 
    “17:03:45”为系统当前时刻;
    “58 days,  4:01”为系统启动后到现在的运作时间;
    “1 user”为当前登录到系统的用户,更确切的说是登录到用户的终端数--同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目;
    “load average”为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过CPU数目时,CPU将比较吃力的负载当前系统所包含的进程;

第二行(Tasks):
    “172 total”为当前系统进程总数;
    “1 running”为当前运行中的进程数;
    “171 sleeping”为当前处于等待状态中的进程数;
    “0 stoped”为被停止的系统进程数;
    “0 zombie”为僵死的进程数;

第三行(Cpus):
  显示CPU利用率的详细信息,如果有多个CPU,屏幕将在每行显示一个CPU的信息。



第四行(Mem):
  显示可用的和已利用的内存



第五行(Swap):
    表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。

  其余的显示内容以表格格式显示进程。下面对各列进行解释:

列描述

PID            进程的进程ID

USER          运行该进程的用户

PRI          进程的优先级

NI            nice值:该值越高,任务的优先级越低

SIZE          该进程使用的内存(代码+数据+堆栈)

RSS          该进程使用的物理内存

SHARE        该进程使用的共享内存

STAT  该进程的状态,用代码显示。一些主要的状态代码包括:
R— 正在运行
S— 正在休眠
Z— 迟滞
T— 已停止

您还会看到第二个和第三个字符,它们表示:
W— 已换出的进程
N— 正nice值

%CPU          该进程使用的CPU百分比

%MEM          该进程使用的内存百分比

TIME          该进程使用的总CPU时间

CPU          如果这是一个多处理器系统,该列指明正在其上运行进程的CPU的ID。

COMMAND        该进程发出的命令



top运行中可以通过top的内部命令对进程的显示方式进行控制。内部命令如下:

  s -改变画面更新频率
  l -关闭或开启第一部分第一行top信息的表示
  t -关闭或开启第一部分第二行Tasks和第三行Cpus信息的表示
  m -关闭或开启第一部分第四行Mem和第五行Swap信息的表示
  N -以PID的大小的顺序排列表示进程列表

    P -以CPU占用率大小的顺序排列进程列表  

  M -以内存占用率大小的顺序排列进程列表
  h -显示帮助
  n -设置在进程列表所显示进程的数量
  q -退出top

 

 

---------------------------------------------------------

动态查看一个进程的内存使用

  1. 1、top命令  
  2. top -d 1 -p pid [,pid ...]  //设置为delay 1s,默认是delay 3s   
  3. 如果想根据内存使用量进行排序,可以shift + m(Sort by memory usage)  

 

 

 

静态查看一个进程的内存使用

 

  1. 1、pmap命令  
  2. pmap pid  
  3.   
  4. 2、ps命令  
  5. ps aux|grep process_name  
  6.   
  7. 3、查看/proc/process_id/文件夹下的status文件  
  8. Name:   php  
  9. State:  R (running)  
  10. SleepAVG:       0%  
  11. Tgid:   21574  
  12. Pid:    21574  
  13. PPid:   10005  
  14. TracerPid:      0  
  15. Uid:    1000    1000    1000    1000  
  16. Gid:    100     100     100     100  
  17. FDSize: 256  
  18. Groups: 16 100   
  19. VmPeak:   161740 kB  
  20. VmSize:   161740 kB  
  21. VmLck:         0 kB  
  22. VmHWM:    107144 kB  
  23. VmRSS:    107144 kB  
  24. VmData:   106192 kB  
  25. VmStk:        84 kB  
  26. VmExe:      5588 kB  
  27. VmLib:      7884 kB  
  28. VmPTE:       268 kB  
  29. Threads:        1  
  30. SigQ:   0/69632  
  31. SigPnd: 0000000000000000  
  32. ShdPnd: 0000000000000000  
  33. SigBlk: 0000000000000000  
  34. SigIgn: 0000000000001000  
  35. SigCgt: 00000001818040a7  
  36. CapInh: 0000000000000000  
  37. CapPrm: 0000000000000000  
  38. CapEff: 0000000000000000  
  39. Cpus_allowed:   00000000,00000000,00000000,0000000f  
  40. Mems_allowed:   1  
  41.   
  42. 任务虚拟地址空间的大小 VmSize  
  43. 应用程序正在使用的物理内存的大小 VmRSS  
2019-06-22 19:15:08 cuifan5176 阅读数 4

在HPUX中可以通过 kmeminfo 这个系统命令来查看当前各进程占用的内存的多少


[root]/# /usr/contrib/Q4/bin/kmeminfo -u|more
kmeminfo (5.03)
unix: /stand/vmunix 11.11 64bit PA2.0
core: /dev/kmem live
link: Wed May 30 15:51:54 EAT 2007
boot: Wed May 30 16:06:23 2007
dump: Tue Nov 20 15:24:20 2007
nbpg: 4096 bytes
count_shared_refcnt: unexpected p_type 9

----------------------------------------------------------------------
Summary of processes memory usage:

List sorted by physical size, in pages/bytes:

virtual physical swap
pid ppid pages / bytes pages / bytes pages / bytes command
15496 1 235965 921.7m 88707 346.5m 89956 351.4m pss_pcs.64bit
16268 20404 166388 650.0m 64362 251.4m 74031 289.2m java
14302 1 98127 383.3m 26443 103.3m 32355 126.4m java
14592 1 82697 323.0m 25684 100.3m 37406 146.1m java
14050 1 80167 313.2m 24630 96.2m 32980 128.8m java
12521 1 81270 317.5m 23824 93.1m 32401 126.6m java

.........................

20475 1 439 1.7m 1 4.0k 69 276.0k caps_launcher
22210 1 439 1.7m 1 4.0k 69 276.0k caps_launcher
20404 1 439 1.7m 1 4.0k 69 276.0k caps_launcher
20644 1 439 1.7m 1 4.0k 69 276.0k caps_launcher
26308 1 76 304.0k 0 0.0k 29 116.0k grmd
physical swap
pages / bytes pages / bytes
Total: 804463 3.1g 1156883 4.4g
[root]/#

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29987/viewspace-52044/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29987/viewspace-52044/

2005-06-01 17:39:00 vcbear 阅读数 7380

UNIX内存占用基本检查

1: 使用top指令.

  top指令是按cpu占用率排序的,如果想一次获得所有进程的快照,使用命令

top -n [最大进程数] -f 输出到文件,比如top -n 1000 -f topsnapshot.log

  top指令输出内存的统计信息包括

Memory: 2614368K (2249100K) real, 5838616K (5264696K) virtual, 113028K free  Page# 1/1
其中没有括号起来的是总数,括号括起来的部分是活动进程使用的内存数,free则是真实空闲的物理内存数.

进程信息的列包括

CPU TTY  PID USERNAME PRI NI   SIZE    RES STATE    TIME %WCPU  %CPU COMMAND

和内存相关的只有SIZE和RES

SIZE:任务的代码加上数据再加上栈空间的大小。
RES:任务使用的物理内存的总数量

要检查进程是否有内存泄露,和实际占用的内存大小,看RES列即可.

2:检查共享内存占用的内存容量

使用ipcs -m -b命令,-m表示检查共享内存,-b表示输出每个内存的字节数,得到的共享内存信息输出列包括:

T         ID     KEY        MODE        OWNER     GROUP      SEGSZ

SEGSZ列则是字节数.把每列相加则是共享内存占用的内存总数.

3: 调整内核动态高速缓冲区参数

HP-UX某些型号的服务器运行的时候需要几乎1G的内存维持系统运行,比如作为设备缓冲什么的.

可以用kmtune命令检查内核配置参数,动态高速缓冲区参数dbc_min_pct 和 dbc_max_pct参数表示一个高速缓冲区允许的可用内存的最小和最大百分比,dbc_max_pct的缺省值是50,一般设置为10即可.

4:在HP-UX上还可以使用glance

glance是个很强的工具,可惜不是免费的....

2014-05-03 10:50:42 twobrushes 阅读数 104

文章来源:http://www.itnose.net/detail/6034126.html 更多文章:http://www.itnose.net/type/44.html

用 'top -i' 看看有多少进程处于 Running 状态,可能系统存在内存或 I/O 瓶颈,用 free 看看系统内存使用情况,swap 是否被占用很多,用 iostat 看看 I/O 负载情况...

还有一种办法是 ps -ef | sort -k7 ,将进程按运行时间排序,看哪个进程消耗的cpu时间最多。

top:
主要参数 
d:指定更新的间隔,以秒计算。 
q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。 
c:显示进程完整的路径与名称。 
S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。 
s:安全模式。 
i:不显示任何闲置(Idle)或无用(Zombie)的行程。 
n:显示更新的次数,完成后将会退出to 
显示参数: 
PID(Process ID):进程标示号。 
USER:进程所有者的用户名。 
PR:进程的优先级别。 
NI:进程的优先级别数值。 
VIRT:进程占用的虚拟内存值。 
RES:进程占用的物理内存值。 
SHR:进程使用的共享内存值。 
S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。 
%CPU:该进程占用的CPU使用率。 
%MEM:该进程占用的物理内存和总内存的百分比。 
TIME+:该进程启动后占用的总的CPU时间。 
Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。 
top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。 
<空格>:立刻刷新。 
P:根据CPU使用大小进行排序。 
T:根据时间、累计时间排序。 
q:退出top命令。 
m:切换显示内存信息。 
t:切换显示进程和CPU状态信息。 
c:切换显示命令名称和完整命令行。 
M:根据使用内存大小进行排序。 
W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。 
free
1.作用 
free命令用来显示内存的使用情况,使用权限是所有用户。 
2.格式 
free [-b-k-m] [-o] [-s delay] [-t] [-V] 
3.主要参数 
-b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。 
-s delay:显示每隔多少秒数来显示一次内存使用情况。 
-t:显示内存总和列。 
-o:不显示缓冲区调节列。 

uptime

18:59:15 up 25 min, 2 users, load average: 1.23, 1.32, 1.21 
现在的时间 
系统开机运转到现在经过的时间 
连线的使用者数量 
最近一分钟,五分钟和十五分钟的系统负载 
参数: -V 显示版本资讯。 

vmstat

procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---- 
r b swpd free buff cache si so bi bo in cs us sy id wa 
0 1 24980 10792 8296 47316 5 19 205 52 1161 698 26 3 1 70 
1 观察磁盘活动情况 
磁盘活动情况主要从以下几个指标了解: 
bi:表示从磁盘每秒读取的块数(blocks/s)。数字越大,表示读磁盘的活动越多。 
bo:表示每秒写到磁盘的块数(blocks/s)。数字越大,表示写磁盘的活动越多。 
wa:cpu等待磁盘I/O(未决的磁盘IO)的时间比例。数字越大,表示文件系统活动阻碍cpu的情况越严重,因为cpu在等待慢速的磁盘系统提供数据。wa为0是最理想的。如果wa经常大于10,可能文件系统就需要进行性能调整了。
2 观察cpu活动情况 
vmstat比top更能反映出cpu的使用情况: 
us:用户程序使用cpu的时间比例。这个数字越大,表示用户进程越繁忙。 
sy: 系统调用使用cpu的时间比例。注意,NFS由于是在内核里面运行的,所以NFS活动所占用的cpu时间反映在sy里面。这个数字经常很大的话,就需要注 意是否某个内核进程,比如NFS任务比较繁重。如果us和sy同时都比较大的话,就需要考虑将某些用户程序分离到另外的服务器上面,以免互相影响。 
id:cpu空闲的时间比例。 
wa:cpu等待未决的磁盘IO的时间比例。 

iostat

用于统计CPU的使用情况及tty设备、硬盘和CD-ROM的I/0量 
参数: 
-c 只显示CPU行 
-d 显示磁盘行 
-k 以千字节为单位显示磁盘输出 
-t 在输出中包括时间戳 
-x 在输出中包括扩展的磁盘指标 
avg-cpu: %user %nice %sys %iowait %idle 
20.25 0.18 2.61 76.39 0.57 
%iowait 等待本地I/O时CPU空闲时间的百分比 
%idle 未等待本地I/O时CPU空闲时间的百分比 
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn 
hda 9.86 284.34 84.48 685407 2036 
每秒传输数(tps)、每秒512字节块读取数(Blk_read/s)、每秒512字节块写入数(Blk_wrtn/s)和512字节块读取(Blk_read)和写入(Blk_wrtn)的总数量。

系统
# uname -a # 查看内核/操作系统/CPU信息 
# head -n 1 /etc/issue # 查看操作系统版本 
# cat /proc/cpuinfo # 查看CPU信息 
# hostname # 查看计算机名 
# lspci -tv # 列出所有PCI设备 
# lsusb -tv # 列出所有USB设备 
# lsmod # 列出加载的内核模块 
# env # 查看环境变量 
资源
# free -m # 查看内存使用量和交换区使用量 
# df -h # 查看各分区使用情况 
# du -sh # 查看指定目录的大小 
# grep MemTotal /proc/meminfo # 查看内存总量 
# grep MemFree /proc/meminfo # 查看空闲内存量 
# uptime # 查看系统运行时间、用户数、负载 
# cat /proc/loadavg # 查看系统负载 
磁盘和分区
# mount | column -t # 查看挂接的分区状态 
# fdisk -l # 查看所有分区 
# swapon -s # 查看所有交换分区 
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备) 
# dmesg | grep IDE # 查看启动时IDE设备检测状况 
网络
# ifconfig # 查看所有网络接口的属性 
# iptables -L # 查看防火墙设置 
# route -n # 查看路由表 
# netstat -lntp # 查看所有监听端口 
# netstat -antp # 查看所有已经建立的连接 
# netstat -s # 查看网络统计信息 
进程
# ps -ef # 查看所有进程 
# top # 实时显示进程状态 
用户
# w # 查看活动用户 
# id # 查看指定用户信息 
# last # 查看用户登录日志 
# cut -d: -f1 /etc/passwd # 查看系统所有用户 
# cut -d: -f1 /etc/group # 查看系统所有组 
# crontab -l # 查看当前用户的计划任务 
服务
# chkconfig --list # 列出所有系统服务 
# chkconfig --list | grep on # 列出所有启动的系统服务 
程序
# rpm -qa # 查看所有安装的软件包

 

没有更多推荐了,返回首页