访问远程节点并获取内存使用情况的脚本

访问远程节点并获取内存使用情况的脚本

我正在使用 50 个计算节点的计算机集群上运行大型模拟。该求解器使用一种动态增长的数据结构,并且每个节点的数据结构(非常)不同。我需要确保使用的内存不会超出每个节点的内存限制。

到目前为止,我正在以最低效的方式进行操作:我为每个节点打开一个终端选项卡,然后运行top以检查使用的内存百分比。

有没有办法用脚本来做到这一点?这个想法是在每个节点上 ssh 并存储内存使用情况,ssh 到下一个节点,等等......

答案1

如果您只是想终止一个变得太大的进程,那么ulimit就是您的朋友。

从手册中:

  -S        use the `soft' resource limit
  -H        use the `hard' resource limit
  -a        all current limits are reported
  -b        the socket buffer size
  -c        the maximum size of core files created
  -d        the maximum size of a process's data segment
  -e        the maximum scheduling priority (`nice')
  -f        the maximum size of files written by the shell and its children
  -i        the maximum number of pending signals
  -l        the maximum size a process may lock into memory
  -m        the maximum resident set size
  -n        the maximum number of open file descriptors
  -p        the pipe buffer size
  -q        the maximum number of bytes in POSIX message queues
  -r        the maximum real-time scheduling priority
  -s        the maximum stack size
  -t        the maximum amount of cpu time in seconds
  -u        the maximum number of user processes
  -v        the size of virtual memory
  -x        the maximum number of file locks
  -T    the maximum number of threads

答案2

我需要确保使用的内存不会超出每个节点的内存限制。

--memfree在 GNU Parallel 中使用有意义吗?如果系统没有 2 GB 可用空间,作业将不会启动。如果系统可用空间少于 1 GB,它将被终止。

parallel --slf hosts.txt --memfree 2G -j1 job ::: ar gu ments

相关内容