在工作中,我们执行要求严格的数值计算。
我们拥有几个具有不同处理能力的Linux盒子的网络。在任何给定的时间,可以有零到几十个人连接到给定的盒子。
我使用Linpack Benchmark创建了一个脚本来测量MFLOPS(每秒百万浮点运算);它还提供了核心和内存的数量。
我想将此信息与负载平均值(使用uptime
命令获得)一起使用,以建议执行要求苛刻的计算的最佳计算机。换句话说,下午3点;我在两个小时内开会;我需要运行一个要求很高的流程:哪个节点能让我得到最快的答案?
我设想了一个脚本,它将按以下方式输出建议:
SUGGESTED HOSTS (IN ORDER OF PREFERENCE)
HOST1.MYNETWORK
HOST2.MYNETWORK
HOST3.MYNETWORK
如果负载平均值很低,这样的建议应该有利于快速计算机(高MFLOPS),并且随着给定节点的负载平均增加,它应该支持可用节点(即,我宁愿在没有计算机的情况下运行用户比登录四十个人的八核用户好。
我应该如何确定优先顺序?你会使用什么算法(基本原理)?我的意思是:
有什么想法?谢谢!
答案 0 :(得分:1)
您没有足够的数据来做出明智的决定。听起来好像调度非常不稳定:“在任何给定的时间,都可以有零到几十人连接到给定的盒子。”因此,当前负载不一定反映机器的未来负载。
要正确评估某人应该使用哪些主机以最小化计算时间,需要知道当前作业何时终止。如果一台功能强大的机器即将完成大部分工作,即使它目前负载很高,它也是一个很好的选择。
如果您想纯粹根据当前情况进行猜测,可以进行加权计算,找出哪些主机可用的MFLOPS最多。
MFLOPS available = host's MFLOPS + (number of logical processors - load average)
按可用的MFLOPS对主机进行排序,并按降序建议。
此公式假设主机的MFLOPS与其平均负载线性相关。这可能不完全正确,但它可能相当接近。
我赞成最近的平均负载,因为它更接近当前/未来的情况,而15分钟前的工作可能已经完成了。
答案 1 :(得分:0)
您是否考虑过分布式计算方法?并非所有计算都可以分解,以便多个cpu可以对它们起作用。但也许你的问题空间可以从一些并行化中受益。看看Hadoop。
答案 2 :(得分:0)
您不需要知道FLOPS。 beowulf modules paralell computing center我有确定的脚本
PDC在全国范围内运营领先的高性能计算机。 PDC提供易于访问的计算资源,主要迎合......