2013-10-23 98 views
7

我正在運行加載大文件的腳本。我在一臺核心OpenSuSe服務器和四核心PC上運行相同的腳本。正如我的電腦中預計的那樣,它比服務器上的要快得多。但是,腳本減慢了服務器的速度,並且無法執行其他任何操作。爲什麼系統CPU時間(%sy)很高?

我的劇本是

for 100 iterations 
Load saved data (about 10 mb) 

時間的MyScript(在PC)

real 0m52.564s 
user 0m51.768s 
sys 0m0.524s 

時間的MyScript(服務器)

real 32m32.810s 
user 4m37.677s 
sys 12m51.524s 

我不知道爲什麼 「SYS」 是如此之高時,我在服務器上運行代碼。我用top命令來檢查內存和CPU的使用情況。 enter image description here 看來還有空閒的內存,所以交換不是原因。 %sy是如此之高,它可能是服務器速度的原因,但我不知道是什麼導致%sy這麼高。使用最高百分比的CPU(99%)的過程是「myscript」。在屏幕截圖中%wa爲零,但有時會變得非常高(50%)。

當腳本運行時,平均負載大於1,但從來沒有看到高達2

我還檢查我的光盤:

strt:~ # hdparm -tT /dev/sda 

/dev/sda: 
Timing cached reads: 16480 MB in 2.00 seconds = 8247.94 MB/sec 
Timing buffered disk reads: 20 MB in 3.44 seconds = 5.81 MB/sec 

[email protected]:~> df -h 
Filesystem  Size Used Avail Use% Mounted on 
/dev/sda2  245G 102G 131G 44%/
udev   4.0G 152K 4.0G 1% /dev 
tmpfs   4.0G 76K 4.0G 1% /dev/shm 

我已經檢查了這些東西,但我仍然不確定我的服務器中存在的真正問題以及如何解決這個問題。任何人都可以找出緩慢的可能原因嗎?什麼可能是解決方案? 還有什麼我應該檢查?

謝謝!

+0

什麼「問題」?如果你要求系統做很多工作,它會很忙,直到完成。使用典型的腳本,幾乎所有的「工作」都將發生在子進程(或代表它們的內核空間任務,如I/O)中,而不是在解釋腳本的shell進程中。 –

+0

腳本運行時,服務器中的其他用戶得到的響應速度較慢。我想更快地運行腳本,也不會打擾其他用戶。如果添加一些資源是解決方案,我可以做到這一點。但是,我不知道會有什麼幫助。 – Abhishek

+0

如果你問什麼樣的系統購買/升級,以獲得更好的性能,這可能是一個超級用戶的問題。如果你想嘗試使任務本身更高效(拼湊在一起的解決方案可能有很大的改進空間),你將不得不更加具體地瞭解它的作用和方式 - 實際代碼,或者至少一個關閉的功能描述。 –

回答

1

您正在獲得較高的系統活動量,因爲您正在執行的數據負載需要發生在內核中的系統調用。解決您的慢速問題而不升級服務器可能是可能的。您可以修改調度優先級。看到好的和renice的手冊頁。請參閱here,尤其是:

好看度值範圍從-20(最高優先級,最低優先級)和19(最低優先級,最高優先級)。

$ PS -lp 941 五六UID PID PPIDÇPRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 941 1 0 70 -10 - 1713 poll_s? 00:00:00 sshd的

$不錯-n 19 ./test.sh 我的美好的事物值是19

$ renice只能-n 10 -p 941 941(進程ID)老優先-10,新優先級10

相關問題