首页 > 系统相关 >linux load排查脚本

linux load排查脚本

时间:2023-02-01 15:22:56浏览次数:44  
标签:load LANG 负载 interval 排查 linux bin proc CPU

Load average的值来源

在使用top命令检查系统负载的时候,可以看到Load averages字段,但是这个字段并不是表示CPU的繁忙程度,而是度量系统整体负载。

Load averages采样是从/proc/loadavg中获取的:

0.00 0.01 0.05 1/161 29703
每个值的含义依次为:
lavg_1 (0.00) 1-分钟平均负载
lavg_5 (0.01) 5-分钟平均负载
lavg_15(0.05) 15-分钟平均负载
nr_running (1) 在采样时刻,运行队列的任务的数目,与/proc/stat的procs_running表示相同意思,这个数值是当前可运行的内核调度对象(进程,线程)。
nr_threads (161) 在采样时刻,系统中活跃的任务的个数(不包括运行已经结束的任务),即这个数值表示当前存在系统中的内核可调度对象的数量。
last_pid(29703) 系统最近创建的进程的PID,包括轻量级进程,即线程。
假设当前有两个CPU,则每个CPU的当前任务数为0.00/2=0.00

如果你看到load average数值是10,则表明平均有10个进程在运行或等待状态。有可能系统有很高的负载但是CPU使用率却很低,或者负载很低而CPU利用率很高,因为这两者没有直接关系。

 

找出系统中load高时处于运行队列的进程

脚本统计出来处于运行队列的进程

#!/bin/bash
LANG=C
PATH=/sbin:/usr/sbin:/bin:/usr/bin
interval=1
length=86400
for i in $(seq 1 $(expr ${length} / ${interval}));do
date
LANG=C ps -eTo stat,pid,tid,ppid,comm --no-header | sed -e 's/^ \*//' | perl -nE 'chomp;say if (m!^\S*[RD]+\S*!)'
date
cat /proc/loadavg
echo -e "\n"
sleep ${interval}
done

查CPU使用率比较高的线程脚本

#!/bin/bash
LANG=C
PATH=/sbin:/usr/sbin:/bin:/usr/bin
interval=1
length=86400
for i in $(seq 1 $(expr ${length} / ${interval}));do
date
LANG=C ps -eT -o%cpu,pid,tid,ppid,comm | grep -v CPU | sort -n -r | head -20
date
LANG=C cat /proc/loadavg
{ LANG=C ps -eT -o%cpu,pid,tid,ppid,comm | sed -e 's/^ *//' | tr -s ' ' | grep -v CPU | sort -n -r | cut -d ' ' -f 1 | xargs -I{} echo -n "{} + " && echo ' 0'; } | bc -l
sleep ${interval}
done
fuser -k $0

  

标签:load,LANG,负载,interval,排查,linux,bin,proc,CPU
From: https://www.cnblogs.com/ltlinux/p/17082928.html

相关文章

  • [Linux]fork与exec
    写这篇文章的原因是看到了一段与Linux下进程复制有关的代码,感觉很神奇,不甚理解,所以找了一些相关的资料想要弄明白Linux的fork、进程复制到底是怎么工作的,于是有了这篇......
  • Linux使用gtest测试so文件
    我使用的环境是Ubuntu22.04.1LTSgoogletest的下载链接:https://github.com/google/googletest/archive/refs/tags/v1.13.0.zip下载下来之后解压,cd到解压的文件夹里面......
  • Linux+libusb开发用户USB无驱通讯
    0.libusb的介绍:参考[1]1.环境:vmware_fedora_10(linux-2.6.x)2.获取源代码:http://sourceforge.net/projects/libusb/(最好选择libusb-1.0.9版本,下载次数最多,自是有它的......
  • TBOX故障排查
    1.网络检测-Ping大法使用ADB去ping以下地址。若使用baidu.com,则需要配置dns对IP进行转换(注意TBOX网络与WIFI网络的优先级问题)192.168.47.10(TBOX盒子地址)8.8.8.......
  • Linux 安装 CentOS7
    1、linux下载http://mirrors.aliyun.com/centos/7/isos/x86_64/centos-7-isos-x86_64安装包下载_开源镜像站-阿里云(aliyun.com)选择绝大多数人下载的版本就可以了,使......
  • spl_autoload_register装在函数的正确写法
    AutoLoading\loading<?phpnamespaceAutoLoading;classLoadind{publicstaticfunctionautoload($className){//根据PSR-O的第4点把\转换层(目录风格......
  • Linux逻辑卷
    Linux逻辑卷架构与相关命令1.为什么要设计逻辑卷(lvm)Linux操作系统中的存储/文件系统,一般都是基于磁盘分区策略来实现的。这过程类似聚会上切蛋糕,一块蛋糕切出来,再分给......
  • linux
    linuxubantu中放大终端窗口的字体显示ctrl+shift+=缩小ctrl+-自动补全tab曾经使用的命令向上键另起一行ctrl+c常见命令命令作用ls查看当前文件......
  • Linux设置动态链接库so的默认搜索路径
    众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib,64位系统是/lib64和/usr/lib64。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库,并且该动态库......
  • centos6报错ls: error while loading shared libraries: libc.so.6: cannot open shar
    生产环境由于误删了libc-2.12.so和libc.so.6文件导致报错如下:现在复现此过程:1.移除这2个文件mvlibc-2.12.solibc.so.6/opt/此时再次执行命令就会报错,错误信息如下:ls:er......