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 - 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