我的python进程在自动脚本中的某个点开始在基于Linux的系统(Ubuntu)上咀嚼CPU。我正试图在GDB中调试此问题。我对GDB相当陌生。是否有任何GDB命令来提供有关哪个线程正在使用大部分cpu的信息。查看线程堆栈并不能真正揭示这一点。
在windows的windbg世界中命令'!"Runaway"确实给出了进程中每个线程所消耗的时间信息。这里有等价的命令吗?还有什么建议吗?
只是为了澄清诊断此问题所需的所有步骤。(感谢大家发帖):
下面的命令显示了进程的CPU/内存使用情况:
$ ps auxf
下面的命令给出了一个进程的所有线程的列表,按照CPU使用情况排序:
$ top -H -p [PID]
*PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND*
**1654** root 20 0 1416m 1.2g 24m t **100** 36.8 21:26.23 python
1687 root 20 0 1416m 1.2g 24m t 0 36.8 0:05.07 python
线程1654正在咀嚼CPU。将gdb
附加到进程:
$ gdb /path/of/executable [pid]
gdb
中的下列命令获取线程列表:
(gdb) info threads
2 Thread 0xa7bffb40 (LWP 20736) "python" 0xb7736424 in __kernel_vsyscall ()
1 Thread 0xb73a56c0 (LWP **1654**) "python" 0xb7736424 in __kernel_vsyscall ()
在gdb
切换到线程检查它的堆栈:
(gdb) thread 1
(gdb) bt
一个可能的解决方案是使用带有显示所有线程选项的命令top:
> top -H
任务默认按CPU占用率排序。
可以在前面的线程中找到替代解决方案。
简短回答
$ top -H
<表类= "年代桌子"> tbody> <PID 用户公关 倪VIRT RES 月 S CPU %>% MEM 时间+ <命令/th> 1654 根道明> 20道明> 0 1416 1.2 g td> 24 m td> R 100 36.821:26.23 td> tbody> 表>1687 根道明> 20道明> 0 1416 1.2 g td> 24 m td> S 0 36.80:05.07 td>
相关内容
- 如何在多个节点上分配多进程CPU使用率
- 如何使用python获得准确的进程CPU和内存使用情况
- 在python中获取进程CPU使用率(百分比)
- 防止Golang后台进程CPU过度使用
- Docker hyperkit进程CPU使用率疯狂.如何控制它
- 获取进程CPU使用率(百分比)
- 如何以编程方式获取任务管理器进程CPU使用率(不是PerfMon API)
- 如何按路径/命令提取当前进程 CPU 使用率并将其打印到控制台
- Powershell进程CPU检查
- 如何基于MIPS转换进程/ CPU内核
- 如何测量进程 CPU 消耗
- C# 测量多个处理器 Windows 服务器上的进程 CPU 使用率
- Winform 异步进程 CPU 增加到 50%
- Linux 线程和进程 - CPU 关联
- Linux 进程:CPU 密集型程序问题 [Bash Shell]
- 通过Python计算进程cpu使用情况
- .NET进程-CPU控制
- 批处理文件杀死一个卡住的进程(CPU利用率为零)
- 如何将进程cpu使用情况(以时钟节拍为单位)转换为百分比
- Java进程cpu使用率增加
最新更新
- 输入数据量变化;需要的建议
- 根据键合并两个数组,并使用mongo聚合添加新字段
- 显示头表,从数组的子列- Angular
- 如何上传AppendBlob/一个大于4mb限制的文件到Azure存储/Blob在Java?
- client_loop: send disconnect:长时间运行jenkins管道时管道破裂问题
- 使用 python 跟踪游戏不断更新的日志文件的最佳方法是什么?
- Gsutil 错误"Caught socket error, retrying: timed out "
- 如何在<h3>相同的高度制作
- #address 单元的 DTC 编译错误 = <2> 大小写
- 遵循Flutter web的重定向url
- 从数据库中获取值作为表
- 我们可以通过在一个应用程序中拥有更多(比用户机器上其他运行的应用程序)线程/进程来窃取更多的CPU时间/资源吗?<
- 如何在vue js中基于数组唯一id的选择选项中显示数据
- React中的 useRef语法
- 如何在react native图像滑动框中更改图像大小
- 绘制函数CustomPaint和PictureRecorder以不同的大小工作
- docker 无法连接到 docker 守护程序,但已创建套接字
- 无法解析Java程序中的@param注释
- 在互斥锁上使用多个std::unique_lock,所有线程在FIFO等待进程?
- Command error out with exit status 1: python setup.py egg_in
- 当NPM应用在子文件夹中时,NPM版本命令不创建git标签
- Prometheus导出器的正则表达式模式
- Lua代码构建具有重复功能的堡垒之夜问题
- JsonPath - Restrict To Research to One level
- 将列表的列表转换为映射列表
- CVXPY二次规划- ArpackNoConvergence error and AssertionError
- Xamarin Binding表达式中的格式文本
- 我需要调用两个api在Reactjs
- 库未加载:/opt/homebrew/opt/fmt/lib/libfmt.9.dylib
- (NestJS, TypeORM) Javascript承诺:在此之前调用Finally块
热门标签:
javascript python java c# php android html jquery c++ css ios sql mysql arrays asp.net json python-3.x ruby-on-rails .net sql-server django objective-c excel regex ruby linux ajax iphone xml vba spring asp.net-mvc database wordpress string postgresql wpf windows xcode bash git oracle list vb.net multithreading eclipse algorithm macos powershell visual-studio image forms numpy scala function api selenium