[转帖]CPU性能优化基本篇:一定要了解Linux CPU哪些基本概念

news/2024/11/16 19:55:21/文章来源:https://www.cnblogs.com/jinanxiaolaohu/p/18201102
https://heapdump.cn/monographic/detail/20/4103469

 

目录

第一篇:CPU性能优化基础篇:一定要了解Linux CPU哪些基本概念 
第二篇:CPU 优化高级篇:Linux系统中CPU占用率较高问题排查思路与解决方法
第三篇:CPU 优化高级篇:Java  CPU 高的原因和排查方法  :如何定位Java  消耗CPU最多的线程
第四篇:CPU 优化高级篇:Java  CPU 高的原因和排查方法  :学会Java死锁和CPU 100% 问题的排查技巧
第五篇:CPU 优化线上实战篇:Java 生产环境 CPU 跑满 & 大量长耗时的问题排查 & 解决
第六篇:CPU 优化线上实战篇:Java   JVM  频繁 GC的原因和排查方法

导语

实际项目中,我们常常遇到一些CPU高的问题,本次专题由浅入深,从基本概念到线上实践,带着大家重新系统学习一些Linux CPU,Java CPU调优 基本知识和方法。本文适合对象

  • 中高级Java工程师:重温Linux CPU常见的基本概念,比如Load。学习线上CPU优化和排查思路
  • 架构师:线上CPU优化和排查案例分享

 

正文

进入正题:

典型的救火场景
 
Java进程CPU使用率很高
Jstack、Btrace、Arthas分析堆栈
 
Mysqld进程CPU使用率很高
show full processlist 分析慢查询,看连接数和QPS等
 
面向底层基础软件系统的开发者
直接定位函数代码,perf(文本) + flamegraph(火焰图)
 

常见的疑问

load值多少算高呢?
load值超过CPU核数都代表CPU繁忙负载比较重了,也要看趋势
 
上下文切换多少算高? 这个取决于CPU自身的性能。几百到几千都正常,暴增那种就需要警惕
什么会导致过多的上下文切换?运行队列多少算正常?
 
过多的进程/线程、中断、系统调用等。每个CPU core不超过3个线程 Java应用CPU使用率很高通常是什么原因?
死循环、数据结构与算法(复杂度高)、复杂的正则匹配、 频繁GC(us高)、锁竞争激烈(sy高)、线程主动切换频繁等
 

小结

平均负载高,可能是CPU密集型应用进程导致 平均负载高并不代表CPU使用率高,也有可能I/O繁忙 通常,I/O密集型应用可能导致平均负载高但是CPU使用率不高 iowait高可能导致load高 ,可能存在频繁写入或I/O瓶颈,结合iostat分析 内核态CPU高,应该优先排查内核线程和系统调用情况(strace) 计算密集型场景CPU us/sy比至少90/10,I/O密集型约70/30(仅供参考) CPU缓存命中率也很重要,可以通过perf stat -e 看到 USE方法:使用率(繁忙情况)、饱和度(可运行队列等待CPU)、错误 调优:静态/动态优先级、调度器、进程CPU亲和性绑定、编译器优化 …

 

大家有什么想了解和疑问,欢迎下面给我留言。谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/709027.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nodejs的require流程

nodejs的require流程 . 一、require简单流程 nodejs的require流程大致如下:原图:https://images.cnblogs.com/cnblogs_com/blogs/668717/galleries/2013323/o_240518085412_require流程探索.png . 二、hook require的简单模板 function makeRequireFunction(_module_) {const…

2024-05-20 通达信选股 不破放量大阴底

AA:=HHVBARS(V,21); AB:=REF(C,AA)<REF(O,AA);AC:=REF(C,AA)/REF(C,AA+1)<0.9;AD:=C>REF(C,AA);AE:= C>1;AXG: AB AND AC AND AD AND AE;不破底,说明主力吸筹,就可以考虑区间的高抛低吸

OpenXR™Loader-设计和操作

OpenXR™Loader-设计和操作 介绍 本文档包含了解如何为OpenXR加载程序进行开发以及与之交互的必要信息。本文档的预期用途是作为详细的设计文档和学习一般OpenXR加载程序行为的工具。 如果本文档与OpenXR规范之间存在任何差异,则以该文档为准。 OpenXR™和OpenXR标志是Khronos…

Win10电脑怎么调整光标闪烁速度

1.按键盘上的win键,呼出开始菜单 2.在开始菜单中输“键盘”,单击控制面板中的键盘设置。3.在弹出的界面中,调整光标闪烁速度

04--JS04--进阶

JavaScript04:拓展进阶 一. jsonp 为了解决浏览器跨域问题,jQuery提供了jsonp请求 在网页端如果见到了服务器返回的数据是: ​ xxxxxxxxxxdjsfkldasjfkldasjklfjadsklfjasdlkj( { json数据 } ) ​ 在Preview里面可以像看到json一样去调试 这就是jsonp,依然是Ajax jsonp的逻辑…

.NET 中 Channel 类简单使用

Channel 是干什么的 The System.Threading.Channels namespace provides a set of synchronization data structures for passing data between producers and consumers asynchronously. The library targets .NET Standard and works on all .NET implementations. Channels …

第五周-云计算运维作业

1. 总结openssh服务安全加固和总结openssh免密认证原理,及免认证实现过程。 1.仅使用SSHv2 协议 2.关闭或者延迟压缩 Compression no 3.限制身份验证最大尝试次数 MaxAuthTries 3 4.禁用root账户登录 PermitRootLogin no 5.显示最后一次登录的日期和时间 PrintLastLog yes #用…

深入掌握service

深入掌握Service Service是Kubernetes实现微服务架构的核心概念,通过创建Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求负载分发到后端的各个容器应用上。 Service定义 Service用于为一组提供服务的Pod抽象一个稳定的网络访问地址,是Kuberne…

uniapp-webview获取h5页面加载错误信息及自定义错误页面(捕获uniapp中webview加载error)

问题描述uniapp中需要加载H5页面,使用了webview,但是在某些情况下,页面加载出现错误,但是官方文档里给出的捕获错误信息的回调函数,只适用部分平台,某些平台无法获取@error异常信息,这种情况如何处理呢? 解决uniapp web-view组件的@load @error事件无效,事件不触发的问…

物联网在智慧园区的八大应用

物联网在智慧园区领域有许多应用。以下是一些常见的应用场景: 智能安防系统: 通过物联网技术,可以实现智能监控、入侵检测、视频监控、智能门禁等安防功能,提高园区的安全性和管理效率。 能源管理: 物联网可以用于实时监测和控制园区内的能源消耗,包括电力、水、气等,通…