仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 327|回复: 7
打印 上一主题 下一主题

[其他Linux] 带来一篇linux下复杂的自顺应CPU使用率的把持

[复制链接]
乐观 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:26:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
由于在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[5])
#time.sleep(string.atof(sys.argv[5]))


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


#初始化必定数目的线程,不然从零入手下手,大概必要很长的工夫才干到达指定局限
foriinrange(0,string.atoi(sys.argv[3])):
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[1]):#增添线程
foriinrange(0,string.atoi(sys.argv[4])):
thread=ControlThread()
thread.start()
threadList.append(thread)
print"+++++"
ifoutput>string.atoi(sys.argv[2]):#削减线程
foriinrange(0,string.atoi(sys.argv[4])):
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的核心是免费的,自由使用的,核心源代码是开放的。
若相依 该用户已被删除
5#
发表于 2015-2-22 22:51:30 | 只看该作者
如果你有庞大而复杂的测试条件,尽量把它剪裁得越小越好。可能你会遇到这种情况,对于一个问题会出现不同内容回答,这时你需要通过实践来验证。
蒙在股里 该用户已被删除
6#
发表于 2015-3-7 04:37:34 | 只看该作者
熟悉系统的基本操作,Linux的图形界面直观,操作简便,多加上机练习就可熟悉操作,在Linux下学习办公软件等常用软件。
乐观 该用户已被删除
7#
 楼主| 发表于 2015-3-14 12:15:44 | 只看该作者
用户下达的命令解释给系统去执行,并将系统传回的信息再次解释给用户,估shell也称为命令解释器,有关命令的学习可参考论坛相关文章,精通英文也是学习Linux的关键。
精灵巫婆 该用户已被删除
8#
发表于 2015-3-21 08:56:14 | 只看该作者
就这样,我们一边上OS理论课,一边上这个实验,这样挺互补的,老师讲课,一步一步地布置任务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 02:05

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表