乐观 发表于 2015-1-16 14:26:10

带来一篇linux下复杂的自顺应CPU使用率的把持

由于在linux中,用户权限很大,做任何事情都很自由,所以,你往往需要知道你做的每一步在干什么。
比来在做的是假造化相干的一个demo,扳连到假造化情况下的服务器负载平衡。我们用到一个复杂的case,就是在负载呈现“不屈衡”的时分,举行livemigration。因为只是demo必要,我们的负载临时只思索到cpu的使用率。
而实践筹办中,因为没有客户真个压力,很难做到CPU使用率的准确控制。这里写了个复杂的剧本程序,经由过程自顺应的调治,来到达将服务器CPU使用率把持在必定的局限内,从而为确保在某台服务器CPU太高的时分,会主动将虚拟机livemigration到其他CPU使用率低的呆板上的测试做了筹办。
python完成的剧本以下,这个剧本必要5个数字参数的输出,分离为:
最低CPU使用率,最高CPU使用率,初始线程数目,每次调治的线程数目,每一个线程就寝的工夫(毫秒)
固然,很年夜水平上,因为硬件情况的分歧,这些参数带有很强的履历性。
#!/usr/bin/python
importthreading
importtime
importos
importstring
importsys
classControlThread(threading.Thread):

def__init__(self):
threading.Thread.__init__(self)
self.runflag=True#线程运转标示,用于未来削减线程时可以一般停止
defrun(self):
whileself.runflag:
os.popen(usleep+sys.argv)
#time.sleep(string.atof(sys.argv))


#这里利用的是linux下shell内里的usleep,而不是python自带的sleep函数。
#比拟之下,usleep仍是相称壮大的,而python的sleep单元为秒,固然能够输出浮点数,但仍是绝对弱了些
defstop(self):
self.runflag=False
#让其一般停止轮回
threadList=[]
printStartThreadNumber:+sys.argv+        SleepTime(ms):+sys.argv


#初始化必定数目的线程,不然从零入手下手,大概必要很长的工夫才干到达指定局限
foriinrange(0,string.atoi(sys.argv)):
thread=ControlThread()
threadList.append(thread)
thread.start()

#这里利用sar来抓取cpu使用率,这里指的是总的cpu使用率。然后经由过程对照,举行自顺应调剂
whileTrue:
output=100-string.atof(os.popen(sar11|grep^Average|awk{print$8}).read())
printCPUUsage:+str(output)+        CurrentThreadNumber:+str(len(threadList))
ifoutput<string.atoi(sys.argv):#增添线程
foriinrange(0,string.atoi(sys.argv)):
thread=ControlThread()
thread.start()
threadList.append(thread)
print"+++++"
ifoutput>string.atoi(sys.argv):#削减线程
foriinrange(0,string.atoi(sys.argv)):
thread=threadList.pop()
thread.stop()
print"-----"
总的来讲,这个剧本对照复杂,并且在分歧的呆板上,必要操纵职员的履历来初始化才干到达最好效果。但这究竟是我第一个python程序,并且也到达了预期的目标。以上只是能运转的中心代码,至于usage,毛病处置,加入程序等,就没有给出来了:)

</p>
常用的linux命令,尤其是一些能帮你提高开发效率的命令,(eg:grep,awk,sed,split等);

简单生活 发表于 2015-1-18 14:36:43

硬盘安装及光盘安装,清楚了解安装Linux应注意的有关问题,如安装Linux应在最后一个分区内,至少分二个分区。

山那边是海 发表于 2015-1-24 15:56:24

就这样,我们一边上OS理论课,一边上这个实验,这样挺互补的,老师讲课,一步一步地布置任务

第二个灵魂 发表于 2015-2-7 18:10:35

不同于Windows?系统需要花钱购买,因为Linux的核心是免费的,自由使用的,核心源代码是开放的。

若相依 发表于 2015-2-22 22:51:30

如果你有庞大而复杂的测试条件,尽量把它剪裁得越小越好。可能你会遇到这种情况,对于一个问题会出现不同内容回答,这时你需要通过实践来验证。

蒙在股里 发表于 2015-3-7 04:37:34

熟悉系统的基本操作,Linux的图形界面直观,操作简便,多加上机练习就可熟悉操作,在Linux下学习办公软件等常用软件。

乐观 发表于 2015-3-14 12:15:44

用户下达的命令解释给系统去执行,并将系统传回的信息再次解释给用户,估shell也称为命令解释器,有关命令的学习可参考论坛相关文章,精通英文也是学习Linux的关键。

精灵巫婆 发表于 2015-3-21 08:56:14

就这样,我们一边上OS理论课,一边上这个实验,这样挺互补的,老师讲课,一步一步地布置任务
页: [1]
查看完整版本: 带来一篇linux下复杂的自顺应CPU使用率的把持