我有一個perl程序(/usr/bin/ckbcomp
)在新安裝的debian v8服務器上執行非常緩慢。我在調試啓動時間很長的時候發現了它。非常慢的Perl腳本執行時間
我比較了這個腳本在另一個沒有這個問題的服務器上的執行情況,我最終得出結果他們有確切的內核空間執行,並且問題似乎來自用戶級代碼,寫在perl的。
# slow execution
$ uptime
14:54:16 up 3:19, 1 user, load average: 0.00, 0.01, 0.05
$ time ckbcomp -backspace bs -model pc105 us
real 0m1.927s
user 0m1.900s
sys 0m0.016s
# normal execution
$ uptime
14:49:31 up 12 days, 17:19, 1 user, load average: 0.00, 0.03, 0.09
$ time ckbcomp -backspace bs -model pc105 us
real 0m0.381s
user 0m0.376s
sys 0m0.000s
你可以看到時間花在用戶空間上。 strace
輸出大致相同,並確認time
輸出(相同數量的系統調用,相同的開銷和在內核空間中花費的時間幾乎相同)。 uptime
是用來顯示你的CPU負載,所以這不是一個過載問題。
所以我假設問題來自perl執行本身,ltrace
大多證實它,給花費在perl_run()
。
我現在不知道如何進一步調試debian v8上的perl程序。類似ltrace的解決方案應該足夠了解時間花在哪裏。
perl解釋器在兩臺機器上都是一樣的。也許它來自安裝的庫...
謝謝您的幫助
谷歌「perl探查器」,看看那裏的perl的一些分析軟件包... –
不可能是硬件問題嗎?祝你好運。 – shellter