开发实战之CPU使用100%怎么办

CPU使用100%怎么办?

总的原则是:先止损解决问题,然后再分析原因进行复盘。

先用top或ps查看CPU使用情况,找到占用过大的进程,然后用perf top实时显示占用 CPU 时钟最多的函数或者指令,因此可以用来查找热点函数。

需要重点关注的几个指标:

  • 用户 CPU 和 Nice CPU 高,说明用户态进程占用了较多的 CPU,所以应该着重排查进程的性能问题。
  • 系统 CPU 高,说明内核态占用了较多的 CPU,所以应该着重排查内核线程或者系统调用的性能问题。
  • I/O 等待 CPU 高,说明等待 I/O 的时间比较长,所以应该着重排查系统存储是不是出现了 I/O 问题。
  • 软中断和硬中断高,说明软中断或硬中断的处理程序占用了较多的 CPU,所以应该着重排查内核中的中断服务程序。

ps命令:查看正在运行的进程

模糊查找

  • ps aux:查看系统中所有的进程;

  • ps -ef | grep pid/进程名
    ps查找,grep过滤
    -e:显示系统内所有进程的信息
    -f:使用完整格式显示进程信息
    |是管道,使ps和grep能共同使用

准确查询:

  • ps -p pid/进程名
  • top -pid pid/进程名

top命令详解:持续监听进程运行状态

top 命令可以动态地持续监听进程地运行状态,而ps只输出当前进程运行状态

top 命令的基本格式:top [选项]
选项:
-d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒;
-b : 使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到指定的文件中;
-n 次数:指定 top 命令执行的次数。
-p 进程PID:仅查看指定 ID 的进程;
-s: 使 top 命令在安全模式中运行,避免在交互模式中出现错误;
-u 用户名: 只监听某个用户的进程;

比如:

 top -b -n 1 > /root/top.log #让top命令只执行一次,然后把执行结果保存到top.log文件中,这样就能看到所有的进程了

输出信息详解
我们看看 top 命令的执行结果,如下:
在这里插入图片描述
第一部分: 显示的是整个系统的资源使用状况,我们就是通过这些输出来判断服务器的资源使用状态的;
第二部分:显示的是系统中进程的信息;

第一部分
第一行 :任务队列信息
在这里插入图片描述
第二行: 进程信息
在这里插入图片描述
第三行: CPU 信息
在这里插入图片描述
第四行:物理内存信息
在这里插入图片描述
第五行为交换分区(swap)信息
在这里插入图片描述

我们通过 top 命令的第一部分就可以判断服务器的健康状态

  • 如果 1 分钟、5 分钟、15 分钟的平均负载高于 1,则证明系统压力较大。

  • 如果 CPU 的使用率过高或空闲率过低,则证明系统压力较大。如果物理内存的空闲内存过小,则也证明系统压力较大。

这时,我们就应该判断是什么进程占用了系统资源

  • 如果是不必要的进程,就应该结束这些进程;
  • 如果是必需进程,那么我们该増加服务器资源(比如増加虚拟机内存),或者建立集群服务器。

第二部分
主要是系统进程信息,各个字段的含义如下:
PID:进程的 ID。
USER:该进程所属的用户。
PR:优先级,数值越小、优先级越高。
NI:优先级,数值越小、优先级越高。
VIRT:该进程使用的虚拟内存的大小,单位为 KB。
RES:该进程使用的物理内存的大小,单位为 KB。
SHR:共享内存大小,单位为 KB。
S:进程状态。
%CPU:该进程占用 CPU 的百分比。
%MEM:该进程占用内存的百分比。
TIME+:该进程共占用的 CPU 时间。
COMMAND:进程的命令名。

kill:进程通信

kill 并不是杀死进程的意思,kill 命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的。

原理
kill 命令会向操作系统内核发送一个信号和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作。

kill命令常用信号及其含义

信号编号信号名含义
0EXIT程序退出时收到该信息
1HUP该信号让进程立即关闭.然后重新读取配置文件之后重启
2INT表示结束进程,但并不是强制性的,同 "Ctrl+C"
3QUIT退出 同 Ctrl + \
9SIGKILL用来立即结束程序的运行。本信号不能被阻塞、处理和忽略。一般用于强制中止进程
11SEGV段错误
14SIGALRM时钟定时信号,计算的是实际的时间或时钟时间。alarm 函数使用该信号
15SIGTERM正常结束进程的信号,kill 命令的默认信号。如果进程已经发生了问题,那么这个信号是无法正常中止进程的,这时我们才会尝试 SIGKILL 信号,也就是信号 9
18SIGCONT该信号可以让暂停的进程恢复执行。本信号不能被阻断
19SIGSTOP该信号可以暂停前台进程,同 Ctrl+Z 。本信号不能被阻断

vmstat

vmstat命令,是 Virtual Meomory Statistics(虚拟内存统计)的缩写,可用来监控 CPU 使用、进程状态、内存使用、虚拟内存使用、硬盘输入/输出状态等信息。此命令的基本格式有如下 2 种:

[root@localhost ~]# vmstat [-a] [刷新延时 刷新次数]# -a 的含义是用 inact/active(活跃与否) 来取代 buff/cache 的内存输出信息。
[root@localhost ~]# vmstat [选项] 

下表罗列出了 vmstat 命令的第二种基本格式中常用的选项及各自的含义。
在这里插入图片描述

[root@localhost proc]# vmstat 1 3
#使用vmstat检测,每隔1秒刷新一次,共刷新3次
procs ——memory—— swap —io system ——cpu——
r b swpd free buff cache si so bi bo in cs us sy id wa st
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 407376 55772 84644 0 0 5 2 9 10 0 0 100 0 0

该命令输出信息中,各个字段以及含义如下表 :
在这里插入图片描述
如果服务器上的资源占用率比较高,我们就需要手工进行干预。如果是非正常进程占用了系统资源,则需要判断这些进程是如何产生的,不能一杀了之;如果是正常进程占用了系统资源,则说明服务器需要升级了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《FPGA Verilog开发实战指南》PDF是一本很好的书籍,它详细介绍了FPGA开发的基础知识,包括Verilog语言的基础知识、数字电路的基础知识和FPGA的基础知识等。 这本书也给予开发人员很棒的建议,例如使用Verilog语言进行开发和如何对FPGA进行编程和调试等。此外,本书还提供了实际应用的案例,让读者可以更好地理解和应用FPGA技术。 此书的另一个优点是它简单易懂,对于初学者来说非常友好。本书的作者通过简单的语言和图表使读者能够快速掌握FPGA的基础知识。 最后,我认为,《FPGA Verilog开发实战指南》PDF是FPGA开发人员应该阅读的一本好书。 它提供了开发FPGA的基础知识,给予实用的建议,并提供了丰富的案例来实现FPGA技术。如果你想学习FPGA开发,我强烈建议你阅读这本书。 ### 回答2: “FPGA Verilog开发实战指南”是一本经典的FPGA入门教材,全书共分为13章,覆盖了FPGA、Verilog和ASIC设计的基本概念,以及FPGA的基本设计工具和开发流程。本书采用真实案例来介绍FPGA的设计过程,以便读者能够更好地理解和掌握FPGA的基础知识和开发技术。 本书第一章介绍了FPGA的概念和应用,第二章讲解了数字逻辑设计的基础知识,第三章介绍了Verilog语言的基本语法和应用,第四章讲解了FPGA开发流程,第五章介绍了基于Xilinx Vivado的FPGA设计技术,第六章从案例出发讲解了Verilog语言的应用,接下来的几章讲解了数字电路设计的应用和如何实现高级功能。 本书还有章节涉及到有关CPU、存储器和微处理器系统的应用,以及如何将FPGA用于调试和性能优化。总之,这本书是一本非常实用的FPGA设计指南,适合于初学者和有一定基础的人士。读者可以通过本书学习到FPGA的设计基础和进阶技术,同时也可以在实践中掌握FPGA的开发流程和相关工具的使用。本书描述详细,案例讲解清晰,适合学习者从理论到实践的全面掌握FPGA开发知识。 ### 回答3: 《FPGA Verilog开发实战指南》是一本面向FPGA开发者、工程师和爱好者的实践指南,在实际开发中深入讲解了Verilog语言的使用、FPGA的设计思路和常用的开发工具。本书内容全面、系统,从初始的FPGA结构、时序概念到最后的精确设计和仿真,包括了常见功能模块的设计和应用,结合大量实例和图形引导,极具实用性和可操作性。 本书分为九个章节,从搭建FPGA开发环境开始,一步一步地引领读者深入学习FPGA设计的方法和技巧。其中,第一章介绍了数字电路设计基础知识,包括二进制运算、布尔代数、逻辑门等,为后续学习打下了坚实的基础。后续章节分别介绍了Verilog语言的语法特点和常用控制语句、模块的设计和调试方法、时序约束的分析和实现等,内容全面、细致,易于理解。 此外,本书还详细讲解了FPGA设计中的模块库和IP核的使用方法、仿真调试技巧、高速总线的设计原理和应用示例等内容。同时,每个章节都配有大量实例程序和仿真波形图,方便读者理解和掌握书中所学内容。 总之,《FPGA Verilog开发实战指南》是一本非常实用的FPGA开发指导书,对于想要深入学习FPGA设计和Verilog语言的读者来说必将受益匪浅。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值