Linux:查找位于顶部的系统进程

Linux:查找位于顶部的系统进程

我在 8 核处理器上运行一个多线程程序。top命令显示有 8 个进程正在运行,每个进程都 100% 利用了一个核心。问题是只有 21% 被标记为用户 CPU我的应用程序运行得很慢:

Cpu(s): 20.6%us, 79.4%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

如何找到有关占用了 79% CPU 时间的系统进程的更多信息?具体来说,我想知道这些系统调用是什么。

提前致谢!

编辑:这是 top 返回的内容:

top - 11:23:04 up 83 days,  1:20, 10 users,  load average: 8.00, 8.00, 8.00
Tasks: 267 total,  10 running, 257 sleeping,   0 stopped,   0 zombie
Cpu(s): 40.6%us, 17.4%sy,  0.0%ni, 41.9%id,  0.0%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:  16324640k total,  5645008k used, 10679632k free,   285368k buffers
Swap:  2047992k total,    32064k used,  2015928k free,  4584140k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                         
27262 ahmad     20   0  308m  32m  18m R 102.2  0.2   5022:32 Espresso                                                       
26872 ahmad     20   0  176m  12m 4540 R 100.0  0.1   5087:05 Espresso                                                       
27263 ahmad     20   0  175m  13m 4824 R 100.0  0.1   5022:35 Espresso                                                       
27265 ahmad     20   0  175m  12m 4508 R 100.0  0.1   5022:35 Espresso                                                       
26869 ahmad     20   0  308m  31m  18m R 98.3  0.2   5086:20 Espresso                                                        
26870 ahmad     20   0  175m  13m 4864 R 98.3  0.1   5087:05 Espresso                                                        
26871 ahmad     20   0  176m  12m 4592 R 98.3  0.1   5086:58 Espresso                                                        
27264 ahmad     20   0  176m  12m 4552 R 98.3  0.1   5022:06 Espresso                                                        
    1 root      20   0 19404 1164  940 S  0.0  0.0   0:02.12 init                                                            
    2 root      20   0     0    0    0 S  0.0  0.0   0:02.81 kthreadd      

答案1

这是执行内核代码所花费的时间,但这并不意味着它是由系统调用触发的。例如,它可能是读取大型目录所花费的时间,但也可能是处理iptables规则所花费的时间,或者其他事情。

您可以安装相关软件包(可以命名为linux-tools-2.6,但这取决于您的发行版)并使用它perf top来查看内核正在运行的代码。阅读更多这里关于perf

答案2

首先。man top 以下是一些示例

CPU 利用率从最高到最低或从最低到最高SHIFT+r

MEM 使用情况 SHIFT+m

k = kill a process by it's pid

相关内容