Linux

Linux:查找位於頂部的系統程序

  • November 13, 2012

我在我的 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 - 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      

這是執行核心程式碼的時間,但這並不意味著它已被系統呼叫觸發。例如,可能花時間閱讀大型目錄,但也可能花時間處理iptables規則或其他東西。

您可以安裝相關的軟體包(它可以命名為linux-tools-2.6,但這取決於您的發行版)並用於perf top查看核心正在執行的程式碼。在這裡閱讀更多關於perf.

首先。man top 這裡有些例子

CPU 使用率從最高到最低,反之亦然SHIFT+r

記憶體使用 SHIFT+m

k = kill a process by it's pid

引用自:https://serverfault.com/questions/448125