我有一个共享内存服务器,安装了 PBSpro 作为作业管理器。总共有 320 个核心,并且配置了 pbs,因此有 1 个作业队列,其中有 32 个 cpu 中的 30 个,因此 300 个物理核心将在用户之间分配,剩下 2 个 cpu 或 20 个核心用于头节点操作。
某些软件将在超过 100 个内核上运行或并行运行,并且我想验证用户 A 的 N 个进程与用户 B 的 M 个进程相比,在唯一且独立的内核号上运行。
如果我使用top
我可以做
hit F to get into sort menu
hit J to sort by P = Last CPU used (SMP)
这在顶部输出中提供了一个具有核心编号的 P 列,但在 300 个核心的系统上,在 1920x1200 显示器上,在屏幕耗尽之前我只能得到大约 70-80 行。我可以开始缩小终端窗口中的字体大小,但最终我将无法看到最多 300 行,并不是说我什至可以通过每 1..3 秒更新一次来直观地处理所有这些内容。
我的目标是快速、轻松
- 验证用户正在作业队列中正确的核心数内运行内容,而不是在头节点上运行
- 验证对于处于 100% 或任何超过 50% 的给定 cpu 核心,是否只有一个用户的一个进程正在其上运行。我想确保如果具有programA.x的用户A位于核心#234上,则具有anything.x的用户B不在核心#234上。
当单个图像共享内存服务器有多个核心时,最好的方法是什么?
答案1
您可以将 ps 与自定义选项和排序标志一起使用。我不能 100% 确定您想要从您的问题中进行哪种过滤。
所以,也许你的意思是向我展示所有流程。我想查看它们所在的 CPU、用户名和进程名称。按 CPU 排序
ps ax -oc,用户,通讯 kc
“ax”表示所有进程,“-oc,user,comm”表示要显示的列,“k c”表示按 CPU 排序。