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
[해당 코드는 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
'개발 지식 > DevOps' 카테고리의 다른 글
DB I/O bound 애플리케이션 + Message Queue (0) | 2023.04.02 |
---|---|
Nginx를 통한 로드밸런싱 + 무중단 배포 (1) | 2023.03.16 |
Jenkins 배포 환경 구축 (0) | 2023.03.11 |
간단한 Docker 환경 구축하기 (0) | 2023.03.11 |
서버 메모리 누수 현상 처리 과정 정리 (0) | 2022.02.24 |