Linux 跟踪进程对CPU的占用情况,对内存的占用情况

本文使用java进程来举例

1. 查看java进程及其线程对cpu的占用情况

首先使用ps -ef找到java进程id

# ps -ef|grep java

然后通过top -p pid命令查看该进程占用的cpu情况,例如:

[[email protected] ~]# top -p 23386
top - 11:10:52 up 124 days, 19:18,  2 users,  load average: 0.00, 0.00, 0.00
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  16294180k total,  1601480k used, 14692700k free,   262604k buffers
Swap:  8191992k total,        0k used,  8191992k free,   647004k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                              
23386 root      20   0 12.4g 299m  10m S  0.0  1.9   0:56.56 java

此时,若想查看线程占用cpu的情况,手动输入shift+h (Show threads On)进行显示线程的切换。

我们可以直接使用一个参数就默认打开线程占用CPU的跟踪,使用-H参数,例如:

[[email protected] ~]# top -p 23386 -H
top - 11:07:59 up 124 days, 19:15,  2 users,  load average: 0.00, 0.00, 0.00
Tasks: 185 total,   0 running, 185 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  16294180k total,  1601224k used, 14692956k free,   262596k buffers
Swap:  8191992k total,        0k used,  8191992k free,   646996k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                              
23386 root      20   0 12.4g 299m  10m S  0.3  1.9   0:00.02 java                                                 
23387 root      20   0 12.4g 299m  10m S  0.0  1.9   0:07.63 java                                                 
23388 root      20   0 12.4g 299m  10m S  0.0  1.9   0:00.08 java                                                 
23389 root      20   0 12.4g 299m  10m S  0.0  1.9   0:00.07 java                                                 
23390 root      20   0 12.4g 299m  10m S  0.0  1.9   0:00.08 java                                                 
23391 root      20   0 12.4g 299m  10m S  0.0  1.9   0:00.07 java                                                 
23392 root      20   0 12.4g 299m  10m S  0.0  1.9   0:00.08 java                                                 
23393 root      20   0 12.4g 299m  10m S  0.0  1.9   0:00.08 java                                                 
23394 root      20   0 12.4g 299m  10m S  0.0  1.9   0:00.08 java

说明:重点查看%CPU一项,查看哪个线程占用的cpu最多,然后找到对应的pid。

top命令的TIME/TIME+是指的进程所使用的CPU时间,不是进程启动到现在的时间,因此,如果一个进程使用的cpu很少,那即使这个进程已经存在N长时间,TIME/TIME+也是很小的数值。

2. 查看java进程占用内存情况

# cat /proc/23386/status
Name:   java
State:  S (sleeping)
Tgid:   23386
Pid:    23386
PPid:   1
TracerPid:      0
Uid:    0       0       0       0
Gid:    0       0       0       0
Utrace: 0
FDSize: 256
Groups: 0
VmPeak: 13003444 kB
VmSize: 13003444 kB
VmLck:         0 kB
VmHWM:    311496 kB
VmRSS:    307048 kB
VmData: 12846208 kB
VmStk:        88 kB
VmExe:        32 kB
VmLib:     14256 kB
VmPTE:      1704 kB
VmSwap:        0 kB
Threads:        194

说明:

VmRSS:  307048 kB    表示的就是占用的物理内存。

Threads: 194    表示目前一共打开194个线程。

时间: 2024-10-31 14:28:26

Linux 跟踪进程对CPU的占用情况,对内存的占用情况的相关文章

linux查看进程、cpu、内存

一.实时查看 电脑耗的一般是内存 用top命令查看,CPU.内存.使用率,实时数据:用 q 健退出或者 Ctrl +C退出 top 结果 解读 top - 01:47:27 up 6:00, 2 users, load average: 0.00, 0.03, 0.05Tasks: 154 total, 1 running, 153 sleeping, 0 stopped, 0 zombieCpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%

linux top cset schedtool 对于多核CPU,如何限制进程在一个CPU上运行

对于多核CPU,如何限制进程在一个CPU上运行呢? 如何察看某个进程在哪个CPU上运行: 在控制台中输入: #top -d 1 之后按下f.进入top Current Fields设置页面: 选中:j: P          = Last used cpu (SMP) 则多了一项:P 显示此进程使用哪个CPU. 经过试验发现:同一个进程,在不同时刻,会使用不同CPU Core.这应该是Linux Kernel SMP处理的. 本程序通过这个方法查看,将会在多个CPU上运行. 想要让它在一个CPU

18、Linux命令对服务器CPU进行监控

我刚开始做性能测试的时候,什么也不懂,就只知道压测.什么时候把系统压瘫痪什么时候结束.但是系统因为什么瘫痪却不是很清楚,后来开始研究服务器性能监控,运用到工作中,提高了不少生产力,下面就把我常用的命令或者工具分享给大家. 监控Linux 服务器CPU top 参数介绍 top - 10:38:29[当前系统时间], 194 days[系统已经运行了194天], 1 user[个用户当前登录], load average: 0.07, 0.03, 0.01[系统负载,即任务队列的平均长度] Tas

linux测试某进程占用oi、cpu、内存的使用情况

pidstat 概述 pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu.内存.线程.设备IO等系统资源的占用情况.pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息.用户可以通过指定统计的次数和时间来获得所需的统计信息. pidstat 安装 pidstat 是sysstat软件套件的一部分,sysstat包含很多监控linux系统状态的工具,它能够从大多数linux发行版的软件源中获得. 在Debia

关于linux的进程中的各个线程cpu占用情况的分析和查看

我们常常会在新开的服搭建一个游戏的server,有时候要进行压力測试,那么怎样来看呢,一般我们会通过top命令查看各个进程的cpu和内存占用情况,获得到了我们的进程id,然后我们或许会通过pstack命令查看里边的各个线程id以及相应的线程如今正在做什么事情,分析多组数据就能够获得哪些线程里有慢操作影响了server的性能,从而得到解决方式. 比方这种以组数据: [[email protected] bin]# pstack 30222 Thread 9 (Thread 0x7f729adc17

Linux中查看进程占用内存和系统资源情况的命令

用 'top -i' 看看有多少进程处于 Running 状态,可能系统存在内存或 I/O 瓶颈,用 free 看看系统内存使用情况,swap 是否被占用很多,用 iostat 看看 I/O 负载情况... 还有一种办法是 ps -ef | sort -k7 ,将进程按运行时间排序,看哪个进程消耗的cpu时间最多. top: 主要参数 d:指定更新的间隔,以秒计算. q:没有任何延迟的更新.如果使用者有超级用户,则top命令将会以最高的优先序执行. c:显示进程完整的路径与名称. S:累积模式,

linux ps命令,查看某进程cpu和内存占用率情况, linux ps命令,查看进程cpu和内存占用率排序。 不指定

背景:有时需要单看某个进程的CPU及占用情况,有时需要看整体进程的一个占用情况.一. linux ps命令,查看某进程cpu和内存占用率情况[[email protected] vhost]# ps auxUSER       PID  %CPU    %MEM    VSZ   RSS TTY      STAT    START   TIME COMMAND解释:linux 下的ps命令USER 进程运行用户PID    进程编号%CPU 进程的cpu占用率%MEM 进程的内存占用率VSZ

监控linux的系统资源和自定义进程的cpu 内存占用。

1 #coding=utf8 2 import time 3 import psutil 4 from pprint import pprint 5 6 from logger_until import LoggerUntil 7 logger = LoggerUntil(name="Monitor").getlog(logfilename='Monitor.log', loglevel=2, add_StreamHandler=1) 8 9 need_monitor_procces_

Linux下计算进程的CPU占用和内存占用的编程方法zz

https://www.cnblogs.com/cxjchen/archive/2013/03/30/2990548.html 查看RAM使用情况最简单的方法是通过/proc/meminfo.这个动态更新的虚拟文件实际上是许多其他内存相关工具(如:free / ps / top)等的组合显示./proc/meminfo列出了所有你想了解的内存的使用情况. 进程的内存使用信息也可以通过/proc/<pid>/statm 和 /proc/<pid>/status 来查看. #inclu