yhli0906的个人博客分享 http://blog.sciencenet.cn/u/yhli0906

博文

分享一个无耻的抢资源脚本

已有 4157 次阅读 2019-5-10 21:47 |个人分类:计算机软件|系统分类:科研笔记

计算资源总归是比较稀缺的。集群上一般都有任务管理系统,每个用户按照先来后到排队,公平公正。而由很多人共享的单个服务器就比较糟糕了,得一直地拿top命令盯着进程表,一旦有空余资源立刻提交,手速慢了煮熟的鸭子就要飞掉。有时为了抢资源还得熬夜,还可能闹得组里人际关系紧张。如果能让服务器替我们盯梢,人就可以放心地去睡大觉。这个需求其实不难满足,用shell几十行命令就能搞定,用python的话更短。


但这个程序实在太缺德了,并且用的人越少效果越好。如果大家都用,又会变成拼手速的局面。因此在这里不直接放源码,增加一下使用难度,同时过滤一下伸手党。程序可以在Github上yhli1016用户的misc repository里面找到。


程序中需要修改的有两处,第一处在main函数中:

1.PNG

program_list是一个列表,告诉服务器帮我们盯着哪些程序,比如说vasp。

dt告诉服务器每隔多少秒帮我们检查一下有没有可用的资源,比如说60秒。

maxloop告诉服务器总共帮我们检查多少次,比如说连着盯三天(86400秒乘以3除以dt)。


ncore_total告诉服务器上总共有多少个核,get_ncore_total返回的是物理核数,如果启用了超线程,需要在get_ncore_total()后面乘以2。

ncore_min告诉服务器自己的任务最少需要多少个核,默认使用全部核数。

ncore_max告诉服务器自己的任务最多用多少个核,默认使用全部核数。


程序运行时,服务器每隔dt检查一次program_list中的程序占用了多少个核,再结合ncore_total计算出有多少核可用。一旦可用核数大于ncore_min,就把它当作参数发给run_job函数。


第二处需要修改的地方为run_job函数:

图片.png

如果需要执行单一计算任务,反注释第二行,把vasp.mpi.5.3.3改成要执行的程序名。如果需要运行一个脚本,反注释第一行,并在脚本中接收ncore作为可用核数。对于会改python程序和写shell脚本的人,这个应该不难。


在三天里每隔一分钟检查一次可用资源,已经没人抢得过你了。别把核都用光,给别人留一点。做人留一线,日后好相见。




https://blog.sciencenet.cn/blog-2909108-1178279.html

上一篇:分享一个算平均电势和面内积分电荷密度的程序
下一篇:QE使用经验总结:投影态密度文件解析及求和
收藏 IP: 121.249.15.*| 热度|

1 唐刚

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-28 02:23

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部