원격 노드에 액세스하고 메모리 사용량을 가져오는 스크립트

원격 노드에 액세스하고 메모리 사용량을 가져오는 스크립트

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

사용되는 메모리가 각 노드의 메모리 제한을 초과하지 않는지 확인해야 합니다.

--memfreeGNU Parallel에서 사용하는 것이 합리적입니까? 시스템에 2GB의 여유 공간이 없으면 작업이 시작되지 않습니다. 시스템 여유 공간이 1GB 미만인 경우 시스템이 종료됩니다.

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

관련 정보