우리네 장

성능 측정을 위한 OS 알기 #1- bounded process 본문

OS

성능 측정을 위한 OS 알기 #1- bounded process

qpmi1zm29 2024. 3. 18. 17:42

하드웨어적인 리소스를 모니터링 하는 툴이 아주 다양하지만, 이 수치를 해석하기 위해서는 os 지식이 필수로 필요합니다. ( + 경험치 )

학부때 os 공부를 하지 않은 것에 후회를 느끼며 당분간은 로우 레벨단 공부를 해보려고 합니다.

첫번째 주제는 bounded process에 대해 얘기하겠습니다.

첫 주제로 선택한 이유는 내용이 가장 단순합니다ㅎ.ㅎ

 


더보기

burst 

무엇인가가 집중적으로 일어나는 것 ( occur ) 을 의미합니다.

이를 파생하여, cpu burst 와 io burst 개념이 나옵니다.

 

cpu burst

cpu를 통해 어떤 스레드가 실행되는 간격을 의미합니다. 즉, cpu에서 해당 스래드가 시간되는 구간부터 컨텍스트 스위칭 당하기 전까지의 구간을 의미합니다.

 

 

I/O burst

어떤 스레드가 i/o 작업을 요청한 구간부터 응답을 받는 구간까지를 의미합니다. 즉 스레드가 wait 상태가 되는 시간을 말합니다.

 

 

 

어떤 버스트가 집중되느냐에 따라 소프트웨어의 성격을 구분할 수 있습니다.

 

더보기

cpu burst가 집중되는 process를 cpu bound process 라고 하며,

io burst가 집중되는 process를 io bound process 라고 합니다. 

 


cpu bound process

cpu 작업이 주를 이루는 프로그램을 의미할 것입니다. 이 경우 적절한 스레드의 개수는 몇 개일까요?? 

cpu core 개수만큼 스레드를 생성하는 것이 좋습니다. 그래야 경합에 의한 context switching이 없어 cpu 오버헤드가 발생하지 않기 때문이죠. 

그런데 core 개수만큼 스레드를 생성하기에는 그 수가 너무 작아보입니다. 프로그램 생성 시 스레드의 수를 제한해야 하나 싶기도 하구요.. 

이럴 때 사용하는 연산 장치가 GPU 입니다. CPU는 똑똑해서 최적화, 즉 판단이 필요한 부분에 사용되어야 하는 연산 장치 입니다. 그에 반해 GPU는 개수가 4000개에서 만 개에 가까울 정도로 core 수가 많고, 단순한 연산을 반복하는 것에 특화되어 있습니다. 

그래서 대표적인 cpu bound process인 머신러닝이나 동영상 편집기에 GPU를 사용하는 것이 더 좋습니다.

 

 

io bound process 

io 작업이 주를 이루는 프로그램은 어떤게 있을까요? 보통 저희가 개발하는 대부분의 API 서버가 여기에 해당한다고 보면 됩니다. DB 조회를 하지 않는 프로그램은 거의 없으니까요! io bound process에 적합한 스레드의 개수는 파악하기가 어렵습니다. 톰캣 위에 올라가서 thread per request 방식으로 동작한다면 프로그램을 사용하는 사용자 수에 따라서, 프로세스의 처리 속도 io 빈도수에 따라서 말이죠.. 그래서 이 경우에는 pool을 사용합니다. 관리 측면에서도 편하고 성능 개선에도 도움을 주기 때문입니다.  

 

 

'OS' 카테고리의 다른 글

cp와 mv 중 cpu의 오버헤드를 일으키는 명령어는?  (4) 2024.03.08
우분투는 Dash shell!  (2) 2024.03.08
[ 동기화 #5 ] 모니터 in JAVA  (2) 2023.12.27
[ 동기화 #4 ] 모니터  (1) 2023.12.27
가시성 feat.volatile  (0) 2023.12.27