2011-10-10 27 views
0

有沒有可能在Linux的指定進程中顯示發生了什麼?Linux進程活動

例如,我運行SQL查詢 - >select evil_function(); 並注意Linux下的進程使用全部cpu。

所以有什麼我能看到的在這個過程中發生了什麼

我想要看看在這個過程下運行的查詢。

謝謝!

回答

0

strace會告訴你什麼系統調用該過程正在進行。

要查看所謂的例程佔用的CPU最多,您需要運行一個分析工具,並確保您正確編譯的進程的可執行文件(有時需要在編譯時進行配置,以便進行性能分析,有時它只是需要使用調試符號進行編譯,或者在編譯後不會被剝離)。

你可能想看看oprofile,valgrind,gprof和免費工具的初學者 - 也有商業產品可用。

這裏有幾個環節:

http://www.pixelbeat.org/programming/profiling/

http://en.wikipedia.org/wiki/List_of_performance_analysis_tools

0

你在混合一大堆東西。

如果你正在談論的MySQL做:

show processlist; 

對於信息特別是約Linux進程,你可以strace過程中得到它調用系統功能的列表。除非你對Linux有經驗,否則這對你來說將毫無用處。

如果進程暫停,那麼您可以找出停止的功能,但這可能不是您想要的功能,因爲您說該進程正在運行。

還有各種工具可以爲您提供有關進程正在讀取的磁盤的哪些部分以及它分配多少內存的信息。

最後,您可以使用gdb打入流程和單步完成您的過程,以確切瞭解它在做什麼。這對你來說也可能是無用的,因爲SQL服務器做了很多事情 - 很多人通過這種方法來理解。