最近后台总是收到一些很有个性的提问,比如本文要说的这个事,在Laxcus计算机集群里,如何让自己的应用业务跑到最前面,优先获得执行权?
Laxcus分布式操作系统确实提供了这个功能,它属于管理员权限的一部分,前提是需要管理员修改用户运行权限。流程是,管理员首先登录Laxcus集群,控制台和图形桌面皆可,然后使用“SET USER PRIORITYTY”命令修改用户权限。命令生效后,用户再处理分布式应用业务时,就能够获得比别人更高的优先执行权了。
目前Laxcus分布式操作系统提供给用户使用的操作权限有四种:
- NONE,不设置任何权限,默认情况下,所有用户都是这个权限。
- MIN,高于NONE权限
- NORMAL,高于MIN权限
- MAX,*别的权限,用户获得这个操作权限后,他的分布式应用业务进入运行队列后,就能够最优先使用计算机集群资源。
SET USER PRIORITY命令
管理员通过分布式终端设置用户操作权限
由于Laxcus分布式操作系统面向计算机集群、HPC、云超算,处理的都是大型的分布式存储和分布式计算业务,IO规模大,计算时间长,应用业务对算力有很大的需求,作用到每个节点上,通常是有很多分布式应用业务在等待计算机资源。为了让所有用户公平地使用计算机集群资源,Laxcus分布式操作系统采用了先到先得的排队模式(FIFO),让用户顺序使用计算机集群。如果上述四种权限同时存在于运行队列,那么执行顺序分别是:MAX、NORMAL、MIN、NONE。但是在现实中,如果总是有MAX权限的应用业务插队运行,那么余下的应用业务将永远无法获得计算资源。所以,这种“插队”机制不是一个公平的处理方式,除非某些特殊的情况下,不建议管理员使用“SET USER PRIORITYTY”这条命令。即使偶尔使用,也建议管理员在用户使用完成后,把用户的权限回归到NONE状态,让系统编排按照正常的规则,给应用业务分配计算机资源。
Laxcus分布式操作系统采用先到先得的排列机制让每个用户平均获得计算资源
因为Call节点是所有用户业务流的入口节点,所以判断用户权级和分配权限的工作也放在Call节点。这段代码在Call节点资源管理池(CallCommandPool)的“accept”方法里,无论前端执行任何动作,在Call节点都会重新分配用户权级,然后进入用户的虚拟集群空间和分配系统资源,生成对应的调用器,最后交给系统编排统一处理。目前Laxcus分布式操作系统已经正式开源,有兴趣的用户可以查看源代码。
用户业务流是从FRONT节点进入CALL节点,获得计算机集群资源,执行分布式存储和分布式计算工作
说明:Laxcus是一个开源、容错、高扩展、多人共享、多机协同分布运行的操作系统,通过分布式应用软件,聚合数据、算力、机器算法,处理大规模、超大规模的存储和计算工作。企业版支持百万级节点规模的计算机集群、亿级用户在线。日前已经正式开源,在官网提供下载。