首页 > 系统相关 >随笔-调试-观察CPU和内存

随笔-调试-观察CPU和内存

时间:2024-05-12 19:57:23浏览次数:14  
标签:stat name data pid cpu 内存 随笔 proc CPU

目录

观察应用CPU、内存使用情况

实时打印(一般用于观察变化)

$xpid=$(pidof gdb);top -p $xpid -b -d 1 | awk '/(^\s*[0-9])/{print strftime("%H:%M:%S",systime()),$0}'

打印应用占用CPU大于阈值的线程

top -H -p $(cat /var/run/$1.pid) -o PPID -d 1 -b -w 512 | awk -F' ' '/(^top)|(^\s*[0-9])/{
            if ($1~/[0-9]/) {
                if ($9 > 90) arr[$1]=$12"["$9"]";
            } else {
                for (i in arr) line=line sep arr[i];
                if (line != "") print $3,line;
                delete arr;line="";
            }
        }'

观察应用内存使用情况(通过/proc采集):

function proc_mem_usage_total() {
    local statm=($(cat /proc/$ppid/statm))
    metric_list+="proc_mem_usage_total{name=\"$proc_name\", pid=\"$ppid\"} $((statm[1]*4))\n"
}

配合prometheus使用观察应用cpu变化情况(通过/proc采集):

function proc_cpu_usage_total() {
    local stat=
    local data=

    stat=$(cat /proc/$ppid/stat)

    # cpu time: utime stime cutime cstime
    data=(${stat#*)})

    # return lables
    metric_list+="proc_cpu_usage_total{name=\"$proc_name\", pid=\"$ppid\"} $((data[11]+data[12]+data[13]+data[14]))\n"
}

function task_cpu_usage_total() {
    local pid=$1
    local stat=
    local name=
    local data=

    stat=$(cat /proc/$ppid/task/$pid/stat)

    # name
    name=${stat%)*}
    name=${name#*\(}

    # cpu time: utime stime cutime cstime
    data=(${stat#*)})

    # return lables
    metric_list+="task_cpu_usage_total{name=\"$name\", pid=\"$pid\"} $((data[11]+data[12]+data[13]+data[14]))\n"
}

观察系统cpu、内存使用最多的应用

一般方式

top -o %CPU
top -o +%MEM

其他方式

查看系统cpu使用最多的应用:

将上面的脚本-p去掉即可

查看系统内存使用最多的应用

watch "ps -eo pid,ppid,cmd,%mem --sort=-%mem | head"
ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' --sort -rsz | head -10 其中rsz是是实际内存

标签:stat,name,data,pid,cpu,内存,随笔,proc,CPU
From: https://www.cnblogs.com/stellar-liyanbin/p/18188105

相关文章

  • 日本联合研究团队发布 Fugaku-LLM——证明大型纯 CPU 超算也可用于大模型训练
    相关:https://mbd.baidu.com/newspage/data/landingsuper?context={"nid"%3A"news_10139665591063236146"}研究团队表示其充分挖掘了富岳超算的性能,将矩阵乘法的计算速度提高了6倍,通信速度也提升了3倍,证明大型纯CPU超算也可用于大模型训练。Fugaku-LLM模型参数规模......
  • Windows 下 PyTorch 入门深度学习环境安装(CPU版本)
    Windows下PyTorch入门深度学习环境安装(CPU版本)一、安装Anaconda二、虚拟环境配置2.1基础命令列出虚拟环境condaenvlist创建虚拟环境https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/maincondacreate-n虚拟环境名字python=版本-c镜像地址激活环境conda......
  • 「云渲染教程」3D渲染时GPU内存不足怎么解决?
    在进行三维场景渲染时,如果遇到模型较为复杂,用户们可能会面临图形处理单元(GPU)内存不足的挑战。这种情况通常意味着现有的硬件配置不足以满足渲染任务的需求。为了缓解GPU的工作压力,可以采取一些策略来优化资源的分配和使用。比如,可以通过调整渲染的设置参数,或者考虑使用云端渲染服......
  • 通过内存映射的方式向lcd屏幕输出几个圆
    /***************************************************filename:color.c*author:[email protected]*date:2024/05/11*brief:通过内存映射的方式向lcd屏幕输出几个圆*note:None**CopyRight(c)[email protected]......
  • 8-cpu性能评估工具
    8.cpu性能评估工具8.cpu性能评估工具vmstat用于对操作系统的内存信息,进程状态,cpu活动进行监视每3秒显示1次,共显示5次vmstat35Procs  r: cpu队列中进程数量,一般小于等于cpu的核心数,当该值经常大于cpu核心数时,表示cpu负载高  b:等待IO的进程数量,一般为0,当经常不为......
  • 9-内存评估工具
    9.内存评估工具9.内存评估工具freelinux中内存使用分5部分usedfreesharedbuffercache在linux中打开的任何文件都会被缓存(放到cache),即使文件被关闭也不会释放内存,目的是为了提供更快的访问速度,这一点有别于windows。缓存的原则是:缓存最近最经常使用的文件,例如一个文件被打......
  • EDAC工具助力检测服务器内存故障
    介绍EDAC工具前我们先知道什么是EDACEDAC(ErrorDetectionAndCorrection错误检测与纠正),是Linux系统的错误检测和纠正的框架,它的目的是在linux系统运行过程中,当错误发生时能够发现并且报告出硬件错误。内存有两种错误类型分别是CE和UE,CE是CorrectableError的简称,UE是Uncor......
  • jvm内存模型、垃圾回收机制
    JVM内存模型JVM内存模型包括:线程计数器、本地方法栈、栈、堆、方法区(元空间),类装载子系统,字节码执行引擎。线程计数器线程启动时,程序技术会分配一小块空间分配给当前线程,每个线程都会独享一块程序计数器空间,用于存储下条指令的单元地址程序计数器是一块较小的内存空间,用于......
  • 带你熟悉CCE集群增强型CPU管理策略enhanced-static
    本文分享自华为云社区《华为云CCE集群增强型CPU管理策略enhanced-static》,作者:可以交个朋友。背景开源Kubernetes默认提供的CPU管理策略有none和static两种:none:不开启CPU管理策略,默认值。static:开启静态绑核的CPU管理策略,允许为节点上具有某些资源特征的Pod(Guaranteedpod......
  • (EDAC) 内存错误检测与纠正
    EDAC即errordetectionandcorrection(错误检测与纠正),是Linux系统内部的机制。在上面的日志中,可以清楚地看出是内存读错误。MC即memorycontroller(内存控制器)。CE则代表correctableerror,是ECC内存中可以纠正的错误,相对地还有UE(uncorrectableerror)。为了摸清是哪些内存出了问题,找......