谦让度与进程优先级的调整_设置进程的优先级

其他范文 时间:2020-02-26 21:01:48 收藏本文下载本文
【www.daodoc.com - 其他范文】

谦让度与进程优先级的调整由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“设置进程的优先级”。

实验:进程和线程的应用

实验目的:

1.向进程发送信号以控制进程。2.调整进程优先级。

实验内容:

设置进程的谦让度来调整进程的优先级

实验步骤:

一、谦让度与进程优先级的调整

由于CPU资源的有限性造成了进程间需要轮流使用CPU,而操作系统更倾向于让优先级更高的进程获得CPU资源。谦让度反映了进程对CPU资源要求的迫切程度,用户可以通过设置进程的谦让度来调整进程的优先级,从而让目标进程在CPU资源竞争中更具优势或者相反。

本案例将通过实验演示进程谦让度是如何调整进程的优先级并以此影响进程在竞争CPU资源时的表现。实验的思路是编写一个对CPU资源要求较高的脚本,通过同时启动若干个关于该程序的测试进程,并且对这些进程分别设置不同的谦让度,以此观察它们CPU竞争中是处于优势还是劣势。以下是本案例的操作步骤:

1、编写并执行测试脚本。

编写测试脚本的目的是创建一个大量消耗CPU时间的进程,测试脚本proce.sh的代码如下:

#!/bin/sh count = $1 while [ $count-gt 0] do count = $[ $count-1] sleep 0.001 done echo “proce $$ finish.”

脚本根据用户所给的第一个参数执行若干次循环,每次循环内部通过sleep命令延迟0.001秒。为简化脚本代码,这里并没有检查用户输人参数的合法性

2、测试和检查硬件情况。

在测试脚本proce.sh中设定脚本需要一个参数来设置脚本执行的循环次数,然而脚本的执行时间不仅取决于所设参数,还与当前执行脚本的CPU硬件条件有关。为了在后面设置一个较为合理的参数,建议用以下命令测试到前硬件条件下脚本的执行速度,其中设置了系统时间的显示格式为“分钟:秒”:

[ root@ localhost ~] # date + “%M: %S”;./proce.sh 1000;date + “%M: %S”

57:02 Proce 12401 finish.57:10 从测试结果可知当给定参数为1000时脚本执行时间约为8~10秒。注意不同CPU硬件条件下脚本执行的速度会略有所不同,在后面的实验中可以根据实际情况设定合适的参数值。

此外,值得注意的是为了突出实验效果,应在VMware中设置虚拟机的CPU个数仅为1 个(CPU核心),这样能够避免向虚拟机提供过多的CPU资源而导致了进程间竞争不明显。

3、启动两个测试进程并观察竞争结果。一个进程的谦让度设为“-20”,而另一进程的谦让度设为“19”,也即设置两个测试进程之间在谦让度上差异最大。

以下是启动进程的命令:

[ root@ localhost ~]#(nice-n-20./proce.sh 100000 &);(nice-n 19./proce.sh 100000 &);top-d 10 top – 21:58:02 up 1 day, 20:40, 4 users, load average: 0.98, 1.69, 1.02 Tasks: 162 total, 2 running, 160 sleeping, 0 stopped, 0 zombie Cpu(s): 8.5% us, 88.0% sy, 1.4% ni, 2.0% id, 0.0% wa, 0.1% hi, 0.0% si, 0.0% st Mem: 15511512k total, 770104k used, 781408k free, 84368k buffers Swap: 4161528k total,0k used, 4161528k free, 365980k cached

PID USER PR NI VIRT RES SHR S % CPU %MEN TIME + COMMAND 23120 root 0-20 6636 1156 1020 S 14.1 0.1

0:01.87

proce.sh 23122 root 39 19

6636 1156 1020 S 3.9

0.1

0:00.58

proce.sh

从CPU占用率(字段%CPU)以及累计使用的CPU时间(字段TIME+)的结果上可见,谦让度“-20”的进程在竞争中明显优于谦让度为“19”的进程。注意记录两个测试进程的PID后及时进人第4步操作。

4、暂停两个测试进程并调整谦让度。记录下两个测试进程PID后,需要在其他终端上向两个测试进程发送SIGSTOP信号让它们暂停运行,然后缩小两个进程在谦让度上的差距:

[ root@ localhost ~]# kill-SIGSTOP 2312023122 [ root@ localhost ~]# renice-n-5 23120 231200: old priority-20, new priority-5 [ root@ localhost ~]# renice-n-5 23122 23122: old priority 19, new priority 5

5、恢复执行两个测试进程并观察竞争结果。调整好两个进程的谦让度后,继续输入如下命令:

[ root@ localhost ~]# kill-SIGSTOP 2312023122

继续观察原来启动两个测试进程的终端,经过一段时间后可发现两个进程在CPU占比上的差距缩小了:

top-22:03:20 up 1 day, 20 : 45,4 users, load average: 1.30,1.07, 0.92 Tasks: 161 total, 1 running, 160 sleeping, 0 stopped, 0 zombie

Cpu(s): 4.5% us, 90.9% sy, 2.3% ni, 2.3% id, 0.0% wa,0.0% hi, 0.0% si, 0.0% st Mem: 1551512k total, 772732k used, 778780k free, 84576k buffers Swap: 4161528k total,0k used, 4161528k free, 365996k cached

PID USEER PRNI VIRT RES SHR S% CPU%MEM TIME+ COMMAND 23120 root 15-5 6636 11561020 S 11.40.10:14.98 proce.sh 23122 root 2556636 11641020 S 6.80.10:05.74 proce.sh

6、暂停两个测试进程并在另一个终端上将两者的谦让度调整为0,然后重新恢复执行进程:

[ root@ localhost ~]# kill-SIGSTOP 2312023122

继续在原来启动测试进程的终端上观察调整后的结果:

top-22:03:20 up 1 day, 20 : 53,4 users, load average: 0.97,0.72, 0.79 Tasks: 163 total, 3 running, 160 sleeping, 0 stopped, 0 zombie

Cpu(s): 8.5% us, 89.6% sy, 0.0% ni, 1.9% id, 0.0% wa,0.0% hi, 0.0% si, 0.0% st Mem: 1551512k total, 773128k used, 778384k free, 84808k buffers Swap: 4161528k total,0k used, 4161528k free, 365996k cached

PID USEER PRNI VIRT RES SHR S% CPU%MEM TIME+ COMMAND 23120 root2006636 11561020 S 9.30.10:31.07 proce.sh 23122 root 2006636 11641020 S 9.30.10:16.76proce.sh

7、按照上述操作反复调整进程谦让度并观察进程在竞争CPU时的表现。完成练习后可直接发送信号终止两个进程的运行: [ root@ localhost ~]# kill-SIGKILL 2312023122

进一步,在练习上述操作步骤时,可以同时启动两个以上的进程并分别设置不同的优先级,以此观察进程间竞争的情况

二、理解平均负载

在前一个案例的基础上,本案例将讨论系统的平均负载(Load Average)这一概念。首先,系统的负载是指系统所要承担的计算工作量,而平均负载是指系统在一段时间内的负载情况。在Linux中平均负载被表示为一组3个数字,它们分别反映了5分钟、10分钟和15分钟之内的系统负载情况。可以通过查看/proc/loadavg获知系统当前的平均 负载:

[ root@ localhost ~] #cat / proc/loadavg 0.000.610.76l/2618152

也可以通过top命令获知系统的平均负载: [ root@ localhost ~] # top top – 15:42:25 up 2 days, 10: 10, 4 users, load average: 0.00, 0.40, 0.66(省略部分显示结果)

为进一步从实际中理解平均负载这一概念并实现更有效地监控系统,这里利用前一案例中的测试脚本进行实验,通过观察实验结果的变化讨论平均负载中3个数字的具体含义进行如下操作步骤时需要注意首先设置VMware中进行实验的虚拟机具有的CPU数量应为1个(核心)

1、启动一个测试进程,观察平均负载的变化直至进程执行完毕,期间可同时观察CPU使用率的占比。以如下结果为例CPU使用占比上仍有21.8%为空闲(idel)时间,注意为不影响实验结果,应设置较长的lop命令更新时间间隔(如10秒)

[ root@ localhost ~] #./proce.sh 10000 & [2] 2891

[ root@ localhost ~] # top-d 10

top – 16:36:37 up 2 days, 11: 04, 4 users, load average: 0.24, 1.09, 1.28 Tasks: 168 total, 1 running, 160 sleeping, 7 stopped, 0 zombie

Cpu(s): 6.6% us, 71.5% sy, 0.0% ni, 21.8% id,0.0% wa,0.1% hi, 0.0% si, 0.0% st Mem: 1551512k total, 1114864k used, 436648k free, 223040k buffers Swap: 4161528k total,0k used, 4161528k free, 563436k cached

PID USEER PRNI VIRT RES SHR S% CPU%MEM TIME+ COMMAND 2891 root2006636 1160 1020 S 11.50.10:10.41 proce.sh

2、待上一步的进程执行完毕后再启动两个测试进程,观察平均负载的变化直至所有进程结束运行,观察时注意需要等待表示平均负载的第一个数字逐渐增大并稳定。此时cpu仍有少量的空闲时间(1.7% id)

[ root@ localhost ~] #(./proce.sh 10000 &);(./proce.sh 10000 &)[ root@ localhost ~] # top-d 10

top-16:40:51 up 2 days, 11:09,4 users, load average: 1.11,0.86,1.10 Tasks: 168 total, 1 running, 160 sleeping, 7 stopped, 0 zombie

Cpu(s): 6.5% us, 91.8% sy, 0.0% ni, 1.7% id, 0.0% wa, 0.0% hi, 0.0% si, 0.0% st Mem: 1551512k total, 1115160k used, 436352k free, 223112k buffers Swap: 4161528k total, 0k used, 4161528k free, 563440k cached

PID USER PR NIVIRT RES SHR S% CPU% MEM TIME+ COMMAND 12980 root 2006636 11641020 S 10.50.1 0:0.62 proce.sh 12978 mot *** S 9.90.1 0:10.09 proce.sh

3、待上一步的进程执行完毕后再启动4个测试进程,观察平均负载的变化直至所有进程结束运行。观察时同样注意需要等待表示平均负载的第一个数字逐渐增大并稳定。从CPU占用率可发现,当前CPU已经充分被利用,空闲时间很少。

[ root@ localhost ~] #(./proce.sh 10000 &);(./proce.sh 10000 &);(./proce.sh 10000 &);(./proce.sh 10000 &)[ root@ localhost ~] # top-d 10

top-16:51:38 up 2 days, 11:19,4 users, load average: 3.78,3.12,2.11 Tasks: 174 total, 5 running, 162 sleeping, 7 stopped, 0 zombie

Cpu(s): 7.2% us, 92.7% sy, 0.0% ni, 0.1% id, 0.0% wa, 0.0% hi, 0.0% si, 0.0% st Mem: 1551512k total, 1115920k used, 435592k free, 223344k buffers Swap: 4161528k total, 0k used, 4161528k free, 563456k cached

PID USER PR M WT RES SHR S% CPU% MEM TIME+ COMMAND 8662 root 2006636 11641020 S 5.50.10:11.13 proce.sh 8664 root 2006636 11641020 S 5.50.10:11.25 proce.sh 8666 root *** S 5.40.10:11.22 proce.sh 8668 root 2006636 11641020 S 5.30.10:11.15 proce.sh

从以上的实验结果可以发现,启动越多的测试脚本,系统的负载就会升得越高,当脚本执行结束后系统的负载就会降低。对于只具有一个CPU的系统来说,表示平均负载的3个数宇其具体含义是指在最近一段时间之内(5分钟、10分钟、15分钟)处于就绪状态的进程个数。数字越大,表明就绪队列(Ready Queue)中的等待CPU的进程越多

三、思考

(1)列出当前系统中的所有进程,如何观察进程的优先级?(2)利用n工程序启动3个工程序,设置它们的谦让度分别为5.10.15,使用ps命令 观察这3个工程序的优先级设置结果

(3)请通过ps命令指出叫前系统中的一些守护进程,列出它们的plD以及谦让度。

竞争与谦让作文

竞争与谦让作文在竞争日益激烈的今天,我们应该注重,在竞争和谦让中勇往直前。下面给大家整理了竞争与谦让作文,欢迎阅读!竞争与谦让作文1“礼让”一直是中华的传统美德。我认为......

竞争与谦让_1000字

竞争与谦让_1000字墙上的挂钟一分一秒地走着,从未改变的节奏和规律。然而,社会的进步使我们的生活节奏日益加快,竞争日趋激烈。与此同时,也出现了更多“人情冷暖,世态炎凉”的感......

宽容与谦让作文

刀豆文库小编为你整合推荐9篇宽容与谦让作文,也许这些就是您需要的文章,但愿刀豆文库能带给您一些学习、工作上的帮助。......

宽容与谦让作文

宽容与谦让作文在日常学习、工作或生活中,大家总免不了要接触或使用作文吧,写作文可以锻炼我们的独处习惯,让自己的心静下来,思考自己未来的方向。相信很多朋友都对写作文感到非......

和谐与谦让(定稿)

和谐与谦让 随着社会主义市场经济的逐步建立,人们的思想观念、心理状态和行为方式发生了深刻的变化,人和人之间的关系也变得复杂化了。社会差异的日益明显,各种矛盾的不断产生,......

下载谦让度与进程优先级的调整word格式文档
下载谦让度与进程优先级的调整.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

热门文章
点击下载本文