我正在運行加載大文件的腳本。我在一臺核心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的使用情況。 看來還有空閒的內存,所以交換不是原因。 %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
我已經檢查了這些東西,但我仍然不確定我的服務器中存在的真正問題以及如何解決這個問題。任何人都可以找出緩慢的可能原因嗎?什麼可能是解決方案? 還有什麼我應該檢查?
謝謝!
什麼「問題」?如果你要求系統做很多工作,它會很忙,直到完成。使用典型的腳本,幾乎所有的「工作」都將發生在子進程(或代表它們的內核空間任務,如I/O)中,而不是在解釋腳本的shell進程中。 –
腳本運行時,服務器中的其他用戶得到的響應速度較慢。我想更快地運行腳本,也不會打擾其他用戶。如果添加一些資源是解決方案,我可以做到這一點。但是,我不知道會有什麼幫助。 – Abhishek
如果你問什麼樣的系統購買/升級,以獲得更好的性能,這可能是一個超級用戶的問題。如果你想嘗試使任務本身更高效(拼湊在一起的解決方案可能有很大的改進空間),你將不得不更加具體地瞭解它的作用和方式 - 實際代碼,或者至少一個關閉的功能描述。 –