所以,我简单地看了一下cgroup和numactl,但是根据我发现的信息,它们都不是我所需要的。
我们使用一个软件“fast-X”,让我们的用户通过networkinglogin他们的graphics会话。 它似乎有一个可怕的缺陷,当它开始在超过120核心系统上运行时,性能就会崩溃。 问题是,我们的大数据处理机器是240核心系统。
所以我需要find一种可以dynamic地说“哦,有人开始fastx进程,限制到这些X核心”的方式,因为numactl和cgroups似乎依赖于你开始他们的过程,或者强制性地移动进程开始后,那些不会真的为我工作…
对于那些不熟悉fastx的人来说,这可能是很多的,它基本上是一个远程桌面/ X11客户端,可以节省一个用户会话,并且通常(在120个核心系统或更less的系统上)具有很好的性能。 因此,用户将通过一个Windows应用程序连接到服务器,然后会自动启动他们的会话,这就是为什么我需要在服务器端的东西,会自动限制它,而不是它必须被强制启动。
到目前为止,我还没有发现任何东西,任何想法将不胜感激。
大多数集群调度程序/资源pipe理器还允许将任务绑定到特定的CPU或核心。 Slurm和Moab是在HPC集群系统上非常常用的资源pipe理器,可以使用标准CPU以及GPU,协处理器和其他计算加速器等附加计算资源提供此function。
如果可以保持足够小的队列理论上,用户login可以自动提交交互作业到队列,然后启动结果作为用户login控制台在fastx。 甚至可以设置一个机制,将用户限制在某个特定的CPU组,以确保不允许单个用户使用太多的资源。 但是,如果队列变得太大,用户将不得不等待资源变得可用。
虽然我没有真正看到以这种方式使用资源pipe理器,但如果资源pipe理器/调度器允许启动交互式作业,理论上应该是可能的,这是大多数现代调度器所具有的function。 如果没有其他的工作,这是一个理论上可行的选项。 如果任何特定stream程所使用的内核数量需要能够在stream程的整个生命周期内发生变化,那么可能会有其他更适合的替代scheme。
虽然不完全相似,但在美国国立卫生研究院的Biowulf集群上有一个调度Fastx的例子。 他们似乎使用PBS批处理脚本通过调度程序启动作业,因此某些概念可能是可重用的。
这个来自Cornell的例子似乎也显示了一个Fastx的用法,所以它看起来像之前做过的事情。 虽然这个例子是有点过时了。