linux监控服务器进程CPU、GPU等损耗
前提条件:在做性能测试的时候,往往需要对服务器进行监控,比如稳定性变化图。当我们没有任何工具监控,或者使用比较复杂的内容监控导致不方便等,可以试试裸linux监控
1、监控CPU,内存
第一步 - 首选部署服务成功,拿到服务端口,可以查看到服务的进程号
// 用来查看8000端口的进程号,使用其他方式也可比如 ps
# lsof -i:8000
第二步 - 使用top查看进程的运行状态
然后使用top组合命令查看进程的详细情况
//服务器进程命令
# top
//查看单个进程运行数据变化图,34341为进程id
# top | grep 34341
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
34341 root 20 0 0.100t 8.532g 281260 S 500.0 3.4 6301:18 java
第三步 - 把数据结果写入到txt文件
// 使用写入,此命令一直在linux前台运行,但是前台断掉会导致写入终止
# top | grep 34341 > cpu_34341.txt
//使用nohup写入,后台运行写入数据
# nohup top | grep 34341 > cpu_34341.txt &
为了更好的找到nohup后台运行进程,方便关闭数据采集工作,建议使用脚本
// vim 新建cpu.sh脚本,脚本内添加写入命令 top | grep 34341 > cpu_34341.txt,保存(若发现后面使用nohup采集不成功可以试试在命令中加参数,top | grep 34341 改为top -b | grep 34341 )
# vim cpu.sh
--保存脚本,推出,然后授权
# chmod 755 cpu.sh
//再使用nohup执行,即可后台运行采集数据
# nohup sh cpu.sh &
// 采集完成可以通过脚本名称查看进程,用来关闭进程,进程不关闭会导致txt文件变大
# ps -ef | grep cpu.sh
// 找到脚本的进程号,杀掉进程,即可关闭
# kill -9 xxxx
第四步,下载采集的txt文本文档,把数据转换到excel表中,可以导出内存和cpu折线图,一般导出 VIRT RES %CPU // 虚拟内存 物理内存 cpu百分比
2、监控GPU
第一步 - 先查看gpu状态,确定当前进程所在卡位置,以一类gpu为例
// 查看gpu
# nvidia-smi
第二步 - 查看gpu运行状态,确保卡只有这一个进程被占用,因为此命令统计的是卡的维度数据
// -i 0 代表监控0卡;-d 1代表1秒采集一次
nvidia-smi dmon -i 0 -s mutc -d 1 -o TD
#Date Time gpu fb bar1 sm mem enc dec rxpci txpci mclk pclk
#YYMD H:M:S Idx MB MB % % % % MB/s MB/s MHz MHz
20230204 11:12:43 0 4904 8 0 0 0 0 65 32 877 1380
20230204 11:12:44 0 4904 8 89 57 0 0 49 0 877 1380
20230204 11:12:45 0 4904 8 55 16 0 0 60 20 877 1380
第三步 - 确定上面采集数据正确后,把数据保存到txt文件中
// 保存到txt
# nvidia-smi dmon -i 0 -s mutc -d 1 -o TD > gpu_0.txt
也可以同cpu采集方式,新建gpu.sh,输入第三步命令,使用nohup采集
第四步 - 找到进程号,关闭进程,导出txt文件,转换到excel导出折线图即可
// 找到脚本的进程号
# ps -ef | grep gpu.sh
// 杀掉进程,即可关闭
# kill -9 xxxx
// 下载txt
# sz xxx.txt
然后修饰数据导出gpu数据,转换为折线图,通常导出显卡内存占用和占比 fbMB mem%