article thumbnail image
Published 2023. 3. 8. 23:11
728x90

1. 기본 용어 정의

  • Burst
    • 어떤 현상이 짧은 시간 안에 집중적으로 일어나는 일

 

  • CPU Burst
    • 프로세스가 CPU에서 명령을 실행하는 시간
  • I/O Burst
    • 프로세스가 I/O(Input/Output) 를 요청한 뒤 기다리는 시간

 

  • CPU bound 프로세스
    • CPU burst가 많은 프로세스
    • 주로 행렬 곱이나 고속 연산을 할 때
    • CPU 성능에 의해 작업 속도가 결정됨
    • ex) 머신러닝 프로그램
  • I/O bound 프로세스
    • CPU burst가 많은 프로세스
    • 파일 쓰기, 디스크 작업, 네트워크 통신을 할 때 주로 나타남
    • 작업(다른 시스템과 통신) 병목에 의해 작업 속도가 결정됨
    • ex) 백엔드 API 서버

 

2. CPU bound 애플리케이션

Hash 연산을 반복하여 CPU를 극단적으로 사용하는 애플리케이션을 통한 테스트 진행

Hash 연산 중 MD5 Hash 연산을 사용

request 받은 값으로 Hash 연산을 10만 번 반복하는 테스트 코드

 

https://github.com/tyakamyz/cpu-bound-application

 

GitHub - tyakamyz/cpu-bound-application: CPU bound Test Application - MD5 Hash

CPU bound Test Application - MD5 Hash. Contribute to tyakamyz/cpu-bound-application development by creating an account on GitHub.

github.com

[해당 코드는 101클래스 - 현직 대기업 개발자 푸와 함께하는 진짜 백엔드 시스템 실무! 강의 코드를 참고하였습니다.]

 

3. GCP 인스턴스를 통한 테스트

Google Cloud Platform에 가입하면 90일간 무료로 사용할 수 있는 크레딧을 제공한다

AWS 썼다가 10만 원 날린 기억이 또...

비교적 안전하다는 GCP로 테스트 진행

SSH 연결도 웹에서 바로 접속할 수 있어서 간단하게 테스트하기 아주 좋다

- JAVA 설치

sudo yum install wget

sudo yum install java

 

- github에 미리 업로드해둔 jar 파일 다운로드

wget https://github.com/tyakamyz/cpu-bound-application/raw/master/src/main/resources/lib/cpu-0.0.1-SNAPSHOT.jar

 

- CPU bound 애플리케이션 실행

sudo java -jar cpu-0.0.1-SNAPSHOT.jar

 

- 브라우저에서 애플리케이션 실행 확인

해당 파일은 8080 포트 사용. 방화벽 확인 필수!

4. 테스트 결과

- /hash/hello 실행 속도 확인

MD5 Hash 연산을 10만 번 수행

 

- /hello 실행 속도 확인

문자열 출력 수행

 

현재 서버에서 hash 연산을 10만 번 수행 시 걸리는 시간은

92 - 11ms로 대략 80ms 정도 걸린다고 판단할 수 있다

728x90
복사했습니다!