我正在运行一个加载大文件的脚本。我在单核OpenSuSe服务器和四核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”如此之高。我使用top命令检查内存和CPU使用情况。 似乎仍然有免费记忆,所以交换不是原因。 %sy是如此之高,它可能是服务器速度的原因,但我不知道是什么导致%sy这么高。使用最高CPU百分比(99%)的过程是“myscript”。
当脚本运行时,平均负载大于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
我已经检查了这些东西,但我仍然不确定我的服务器中的真正问题是什么以及如何解决它。任何人都可以找出缓慢的可能原因吗?可能是什么解决方案? 或者还有什么我应该检查的吗?
谢谢!
答案 0 :(得分:2)
您正在获得高sys活动,因为您正在执行的数据加载需要在内核中进行系统调用。无需升级服务器即可解决您的慢速问题。您可以修改计划优先级。有关nice和renice的信息,请参阅手册页。请参阅here,尤其是:
Niceness值的范围从-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 我的好心值是19
$ renice -n 10 -p 941 941(进程ID)旧优先级-10,新优先级10