我正在运行一个加载大文件的脚本。我在单核OpenSuSe服务器和四核PC上运行了相同的脚本。正如我的PC所期望的,它比服务器快得多。但是,该脚本会降低服务器的速度,并使其无法执行其他任何操作。
我的脚本是
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”这么高。我使用了最高命令来检查内存和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
john@strt:~> 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
我已经检查了这些内容,但是我仍然不确定服务器中的真正问题是什么以及如何解决。谁能确定这种缓慢的可能原因?有什么解决方案?还是我需要检查的其他内容?
谢谢!
您得到了很高的sys活动,因为您正在处理的数据负载需要发生在内核中的系统调用。在不升级服务器的情况下解决慢速问题是可能的。您可以修改计划优先级。有关man
和nice
的信息,请参见renice
页面。参见here,尤其是:
尼斯值的范围是-20(最高优先级,最低优先度)和19(最低优先级,最高优先度)。
$ ps -lp 941
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 941 1 0 70 -10 - 1713 poll_s ? 00:00:00 sshd
$ nice -n 19 ./test.sh
My niceness value is 19
$ renice -n 10 -p 941
941 (process ID) old priority -10, new priority 10