ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 디버깅, 서버관리
    CS 공부/잡다한 것들 2023. 4. 26. 13:54

    디버깅


    디버깅이란?

    • 오류나 버그를 찾고 수정하는 과정
    • 시간이 오래 걸리지만 소프트웨어 개발에서 제일 중요함
    • 디버깅을 통해 문제를 해결해 정상화
    • 버그가 생기는 이유
      • 사람의 실수: 문법, 로직 잘못 작성
      • 실행 환경: os, 가상환경, Docker 컨테이너, 네트워크 상태 등
      • 의존성: 라이브러리에서 사용하는 다른 라이브러리의 버그로 인한 이슈
      • 복잡성: 소프트웨어가 복잡해질 수록 버그 가능성 높아짐
      • 커뮤니케이션 과정의 실수

    디버깅 Process

    출처: 네이버 커넥트 재단

    1. 문제 인식: 무엇이 문제인지 아는 것이 중요
      • 실행 환경: OS, 가상환경, 라이브러리 버전
      • 재현 가능하도록 준비
      • 오류 메시지 자세히 읽기  
    2. 해결책 찾기
      • 과거에 경험한 문제면 오답노트 참고, 아니라면 구글에 영어로 검색
      • ChatGPT에 물어보기, 다른 사람에게 질문하기
      • 오픈소스의 이슈면 코드 직접 확인
    3. 오픈소스 코드 확인
    4. 오답노트
      • 기록하는 것이 매우 중요
      • 한번 발생한 오류는 미래에도 발생할 수 있다
      • 문제상황 - 오류 메시지 - 해결방법
    암묵지를 정리하고 본인만의 Process 만들기

     

    서버 관리


    • AI, ML 엔지니어가 만든 모델은 대부분 서버에서 동작
    • 서버 관리의 목적: 서버를 안정적으로 운영해서 장애를 발생시키지 않기 위함
    • Linux 파일 시스템 구성

     

    • 파일 시스템과 디스크
      • 'Error: No space left on device': 머신에 남은 공간이 부족할 때
        • 해결 방법: 사용하지 않는 파일들을 지워준다
      • 'Error:...No such file or directory': 찾으려고 하는 파일이나 경로가 없을 때
      • df: 파티션 단위로 용량 확인
      • du: 폴더, 파일 단위로 용량 확인

     

    • 네트워크
      • IP: 네트워크에 연결된 다른 컴퓨터의 주소 (IP 주소는 어려우니 도메인을 구매해서 설정)
      • DNS: 사람이 읽을 수 있는 도메인 이름을 IP 주소로 변환
      • Port: PC에 접속할 수 있는 통로, 포트를 개방해야 사용할 수 있음
      • 방화벽: OS에 특정 IP, Port(ACL, White list)만 접속할 수 있도록 설정
      • ping: 서버가 연결되어 있는지, 얼마나 빠른 속도로 데이터가 전송되는지 테스트
        • ping + IP 주소 or 도메인 이름
      • nslookup: 특정 도메인을 찾을 수 있는지 확인 가능 (DNS 서버에 연결 가능한지 확인)
      • netstat: 현재 연결된 포트 정보들을 확인
        • 특정 포트만 확인하려면: netstat -tlnp | grep 3000

     

    • 성능 모니터링
      • GPU, CPU, Memory의 성능을 확인학 ㅗ싶은 경우
      • top 명령어로 CPU, Memory 성능 확인
        • 순간의 정보 확인 '-b'
        • top 실행 주기 설정 '-n'
        • us: 유저 레벨의 cpu 사용량
        • sy: 시스템 레벨의 cpu 사용량
        • PID: 프로세스
      • glances, nvidia-smi로 GPU 성능 확인
        • glances: CPU, GPU, Docker까지 모니터링, 더 직관적으로 성능 확인 가능
        • nvidia-smi: GPU 코어 별로 각 상태, 사용량 확인

    'CS 공부 > 잡다한 것들' 카테고리의 다른 글

    Docker  (0) 2023.04.27
    Github 주요 용어 (VScode)  (0) 2023.03.27
    1주차 과제 회고  (0) 2023.03.10
    부캠 AI Tech 5기 시작 (2023.03~2023.08)  (2) 2023.03.04
Designed by Tistory.