maui 限制使用节点数

转载自:点击打开链接

想限制每个用户使用的节点数,但这一问题的解决颇费了一番周折:

1. 最初想到直接从 pbs_server 层面上改,直接修改 qmgr -c 'set queue qxx max_user_run=5' 可以设置队列 qxx 中每个用户最多同时运行 5 个任务。这个修改不用重启 pbs_server 服务直接生效。但问题是,这个只是限制任务数而非节点数,如果一个任务使用N多节点是不被限制的,另外,这个只针对某一队列生效,无法对整个集群生效。而 qmgr 里没有针对某个用户限制节点数的功能。

2. 尝试修改 maui 的配置,毕竟高级的调度是由 maui 负责的。手册上说 MAXNODE 可以限制节点数,于是在 maui.cfg 配置文件里加上 USERCFG[DEFAULT]  MAXNODE=5 然后重启 maui 服务(不需重启 pbs_servr),结果却是不管用!经各种尝试都无效,而且 CLASSCFG[DEFAULT] MAXNODEPERUSER=5 这种设置也无效。似乎和 NODE 数相关的都无效的样子。

3. 在另外一台机器上尝试,因为该台机器只有自己一个节点,无法尝试 MAXNODE,于是尝试 MAXPROC(最大“处理器”数,其实就是核数) USERCFG[DEFAULT] MAXPROC=4 结果发现依然不管用!奇了怪了!经过一番尝试,终于发现,原来该机器上 torque 默认使的是自己的调度器 pbs_sched,也就是说根本没有使用 maui 进行调度!不过这时查看 maui 的日志却发现它能识别目前提交的任务核数已超出限制,只不过它无法控制而已,由于这一点所以之前一直以为 maui 在起作用,所以才很久没发现 psb_sched 的问题。当把 pbs_sched 关了以后,maui 才真正起了作用!(当然,还有个大前提,就是 pbs_server 的设置中启用了调度器,也就是说 qmgr 里应设置 set server scheduling = True,当然这个在这里早就设好了的)。

4. 回到原来集群,设置 USERCFG[DEFAULT] MAXPROC=80 然后重启 maui 服务就生效了!由于一个节点 16 个核,所以 80 个核就相当于 5 个节点。其中 DEFAULT 默认表示所有的,如果对某个用户限制,可将其替换为该用户名即可,比如 USERCFG[user1] ....。后来又尝试了 MAXJOB 的限制,也管用。

总之,maui 里不知为何 MAXNODE 不管用,但可以变通的用 MAXPROC 来限制。

 

当使用 maui 进行调度时,应使用 maui 的一些命令来查看任务和队列才能更好的了解的 maui 的管理情况。比如 diagnose -u 可以查看 maui 对各用户的设置; diagnose -q 可以查看队列里被限制的任务,通过这个命令可以查看 maui 是否有效的执行了命令,比如限制 MAXPROC=80,当有用户提交第 6 个任务时超出了此限制,因而被 blocked,那么在 diagnose -q 中就能看到这个被阻塞的任务,当然也可以用 showq 来查看,最后 blocked 部分的任务就是被 maui 限制的任务,而 idle 里的则是正常排队的。

 

最后提一下,如下 maui 设置可以有效的使各个节点负载均衡,避免某台机器长期使用而某台长期空闲:

NODEALLOCATIONPOLICY PRIORITY
NODECFG[DEFAULT] PRIORITYF='-LOAD - 5*USAGE'


注 1:所用版本为 torque 4.2.8 + maui 3.3.1

注 2:后来查到官网上的说明中提到了 MAXNODE 可能不管用这一点

      http://docs.adaptivecomputing.com/maui/6.2throttlingpolicies.php

      NOTE: on some systems (including torque/pbs) nodes have been softly defined rather than strictly defined; ie. a job may request 2 nodes but torque will translate this request to 1 node with 2 procs. This can prevent Moab from enforcing a MAXNODE policy correctly for a single job. Correct behavior can be achieved using MAXPROC.


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Maui 框架中,可以使用 `Picker` 控件来创建下拉选择框。下面是一个使用 `Picker` 的示例代码片段: ```C# using Microsoft.Maui.Controls; using Microsoft.Maui.Controls.Xaml; [XamlCompilation(XamlCompilationOptions.Compile)] public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); // 添加选项到 Picker myPicker.Items.Add("选项1"); myPicker.Items.Add("选项2"); myPicker.Items.Add("选项3"); // 设置 Picker 选择事件的处理方法 myPicker.SelectedIndexChanged += MyPicker_SelectedIndexChanged; } private void MyPicker_SelectedIndexChanged(object sender, EventArgs e) { // 获取选择的选项索引 int selectedIndex = myPicker.SelectedIndex; // 根据选项索引进行相应的逻辑处理 switch (selectedIndex) { case 0: // 处理选项1 break; case 1: // 处理选项2 break; case 2: // 处理选项3 break; } } } ``` 在上述代码中,首先在 `Picker` 控件中添加了三个选项。然后设置了 `SelectedIndexChanged` 事件的处理方法 `MyPicker_SelectedIndexChanged`,当用户选择不同的选项时,该事件会触发相应的逻辑处理。 在 `MyPicker_SelectedIndexChanged` 方法中,通过 `myPicker.SelectedIndex` 可以获取当前选择的选项索引,根据索引可以进行相应的逻辑处理。 请注意,上述代码只是一个示例,实际使用时可能需要根据自己的需求进行适配和调整。您可以根据具体的场景,自定义选项的样式和逻辑处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值