为什么系统CPU时间(%sy)高?

我正在运行加载大文件的脚本。 我在一台核心的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 

我不知道为什么“系统”是如此之高,当我在服务器上运行的代码。 我用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 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 

我已经检查过这些东西,但是我仍然不确定服务器中的真正问题,以及如何解决这个问题。 任何人都可以找出缓慢的可能原因吗? 什么可能是解决scheme? 或者还有什么我应该检查?

谢谢!

你得到一个很高的系统活动,因为你正在做的数据的负载需要在内核中发生的系统调用。 要解决您的慢速问题,而不升级服务器可能是可能的。 您可以修改调度优先级。 看到好的和renice的手册页。 看到这里 ,特别是:

尼斯值范围从-20(最高优先级,最低最佳)和19(最低优先级,最高最佳)。

$ ps -lp 941 FS 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我的niceness值是19

$ renice -n 10 -p 941 941(进程ID)旧的优先级-10,新的优先级10