graphsignal-top: 오픈소스 Graphsignal 프로파일러용 추론 GPU 모니터링 도구
graphsignal-top: a `top` for inference GPUs in the open-source Graphsignal profiler, kernels ranked by time, live, with readable names
핵심 요약
vLLM 등 추론 엔진의 GPU 성능과 커널별 실행 시간을 실시간으로 분석하는 모니터링 도구입니다.
- 실시간 모니터링 — GPU 사용량, 메모리, 전력 및 요청 처리 성능을 실시간으로 시각화함
- 커널 분석 — 복잡한 기호 대신 읽기 쉬운 이름으로 커널별 실행 시간을 랭킹화함
- 원격 지원 — 호스트 연결 및 SSH 포트 포워딩을 통해 원격 서버의 GPU 상태 확인 가능
- 간편한 통합 — 기존 vLLM이나 sglang 실행 명령어를 감싸는 방식으로 쉽게 적용 가능
몇 주 전에 오픈소스 Graphsignal 프로파일러를 여기 올렸었지. vllm serve나 sglang serve 같은 걸 graphsignal-run으로 감싸면 측정된 모든 데이터를 JSON으로 뱉어주는 건데, 원래는 에이전트가 루프 돌면서 읽으라고 만든 거였어.
근데 쓰다 보니까 우리가 직접 JSON 열어서 GPU가 뭐 하는지 확인하고 있더라고. 그래서 graphsignal-top을 만들었다.
graphsignal-run vllm serve <model> --port 8000 # 한쪽 터미널
graphsignal-top # 다른 쪽 터미널
이걸로 뭘 볼 수 있냐면: GPU별 실시간 사용률, 메모리, 전력, 스로틀링 상태, 엔진의 실행 중/대기 중 요청, tok/s, TTFT/TPOT p50/p95 수치까지 다 나옴. GPU 시간 분할(커널/그래프/메모리 복사/동기화)도 보여주고, 지난 5초 동안 가장 시간 많이 잡아먹은 커널들을 알아보기 쉬운 이름이랑 카테고리로 싹 정리해서 보여준다. 그냥 깨진 심볼 이름만 나오는 게 아님. CUDA 그래프 리플레이, 전송, 동기화 탭도 따로 있다.
스크린샷은 RTX PRO 6000 2개 꽂고 tp 2 설정해서 PCIe로 Qwen3-32B 돌리는 모습이야. NCCL all-reduce가 GPU 시간의 4분의 1을 먹고 있고, 전체 벽시계 시간의 절반은 호스트가 그거 기다리느라 대기 중인 게 한눈에 딱 들어오지.
원격으로도 잘 돌아감. --listen-host로 프로파일러 띄워놓고 graphsignal-top --host gpu-box로 붙거나, SSH 포트 포워딩 써도 됨. 그냥 로그에 남기고 싶으면 --once 옵션 써서 프레임 하나만 딱 찍으면 된다.
