HPC & GPU Engineering/Linux 성능 튜닝과 모니터링

pdsh 가이드 | 수백 대 노드에 동시에 명령어 실행하기

ygtoken 2025. 10. 17. 20:12
728x90

1️⃣ pdsh란?

 

**pdsh(Parallel Distributed Shell)**은 여러 대의 리눅스 노드에 병렬로 명령을 실행할 수 있는 도구입니다.

HPC(고성능 컴퓨팅) 환경이나 대규모 GPU 클러스터 운영 시 매우 유용하며, SSH 기반으로 동작합니다.

 

간단히 말하면,

 

“한 번의 명령으로 수백 대 노드에서 동시에 실행 결과를 확인”
할 수 있게 해주는 강력한 도구입니다.

 


 

2️⃣ 기본 사용법

 

가장 기본적인 형태는 다음과 같습니다.

pdsh -w node[001-010] <command>

예시:

pdsh -w gpu[001-127] echo "Hello, world"

 

  • -w : 실행 대상 노드를 지정 (node range 지원)
  • gpu[001-127] : gpu001 ~ gpu127 노드까지 병렬 실행
  • echo "Hello, world" : 각 노드에서 실행할 명령

 

실행하면 아래처럼 각 노드별 결과가 표시됩니다.

gpu001: Hello, world
gpu002: Hello, world
...
gpu127: Hello, world

 


 

3️⃣ 최초 접속 시 Warning 메시지

 

처음 SSH 접속되는 노드에서는 아래 메시지가 뜰 수 있습니다.

Warning: Permanently added 'gpu006' (ED25519) to the list of known hosts.

이는 SSH 키 인증 캐시가 없어서 생기는 정상적인 첫 연결 경고입니다.

한 번 실행 후에는 ~/.ssh/known_hosts에 저장되므로 이후엔 표시되지 않습니다.

 


 

4️⃣ 결과 보기 옵션 (dshbak)

 

pdsh의 출력은 기본적으로 노드별로 섞여 보입니다.

이를 보기 좋게 정렬하려면 dshbak 명령을 함께 사용하세요.

pdsh -w gpu[001-127] echo "Hello, world" | dshbak -c

-c 옵션은 같은 출력 결과를 묶어주는 옵션으로,

노드별로 결과를 그룹화해 가독성을 높여줍니다.

 


 

5️⃣ 결과를 한 줄로만 보기 (-N)

 

pdsh는 기본적으로 각 노드 이름을 출력하지만,

-N 옵션을 주면 노드 이름 없이 결과만 출력됩니다.

pdsh -w gpu[001-127] -N echo "Hello, world"

결과:

Hello, world
Hello, world
Hello, world
...

 


 

6️⃣ 랜덤값 테스트 예시

 

랜덤 명령 실행도 병렬로 수행할 수 있습니다.

pdsh -w gpu[001-127] echo "((RANDOM % 10))" | dshbak -c

이 명령은 각 노드에서 0~9 사이의 임의의 숫자를 출력합니다.

병렬 테스트, SSH 정상 연결 확인, 성능 체크 등에 유용합니다.

 


 

7️⃣ 병렬 실행 시 주의사항

 

  1. SSH 설정 필수
    • 각 노드에 비밀번호 없이 접근 가능해야 함 (ssh-keygen, ssh-copy-id 필요)
  2. pdsh 설치
    • RHEL 계열: yum install pdsh
    • Debian 계열: apt install pdsh
  3. 환경 변수 확인
    • PDSH_RCMD_TYPE=ssh 로 설정해야 SSH 기반 동작
export PDSH_RCMD_TYPE=ssh

 

 


 

8️⃣ 활용 예시

 

  • GPU 클러스터 상태 확인:
pdsh -w gpu[001-127] nvidia-smi --query-gpu=name,temperature.gpu --format=csv

 

  • 시스템 재부팅:
pdsh -w gpu[001-127] sudo reboot

 

  • 특정 프로세스 확인:
pdsh -w gpu[001-127] "ps aux | grep telegraf"

 

 


 

✅ 요약

항목 설명
명령 실행 pdsh -w gpu[001-127] <command>
결과 정리 `
노드명 제거 -N 옵션
SSH 기반 설정 export PDSH_RCMD_TYPE=ssh
출력 예시 gpu001~gpu127 동시 실행 결과 확인 가능

 


 

🧠 결론

 

pdsh수십~수백 대 노드를 운영하는 DevOps 엔지니어에게 필수적인 명령어입니다.

단순 명령 전송뿐 아니라 모니터링, 배포, 점검 자동화에도 적극 활용할 수 있습니다.

 

728x90