반응형
IO 관련 처리란 파일 처리, 소켓 처리와 같이 용어 그대로 IO 관련 처리를 말합니다. CPU 관련 처리란 연산 관련 처리를 말합니다. 이 둘의 처리에 대해서 말하는 이유는 이 둘을 구분하여 현재 프로그램을 보는 것이 성능을 크게 향상 시킬 수 있기 때문입니다.
IO 관련 처리와 같은 경우 관련 IO API를 호출한 뒤에 API내에서 IO처리를 하는 동안 CPU가 노는 경우가 생길 수 있습니다. 이런 경우 성능을 올리기 위해서는 비동기 IO를 사용하거나 IO쓰레드를 만들어서 비동기적으로 처리하여 CPU가 노는 시간을 줄여 성능을 올릴 수 있습니다.
CPU 관련 처리와 같은 경우 성능 좋은 알고리즘을 사용하여 연산을 줄이거나 멀티프로세스 프로그래밍을 활용하여 성능을 올릴 수 있습니다.
흔히 하는 실수가 멀티프로세스 프로그래밍을 IO관련 처리에 적용하는 것입니다. IO관련 처리는 기본적으로 API에서 CPU관련 블록이 있기 때문에 단일 프로세스 프로그래밍보다야 성능 향상이 있겠지만 멀티 프로세스 프로그래밍으로 큰 성능 향상을 기대하기는 어렵습니다. 이럴 때는 IO관련 성능을 향상 시키기 위하여 멀티 쓰레드를 사용하여 성능을 향상 시켜야 합니다. 이 때 멀티 쓰레드의 개수는 멀티 프로세스의 쓰레드 개수보다 훨씬 많을 것 입니다.
반응형
'서버 프로그래밍' 카테고리의 다른 글
[서평] 가상 면접 사례로 배우는 대규모 시스템 설계 기초 2 (1) | 2024.01.25 |
---|---|
[서평] 가상 면접 사례로 배우는 대규모 시스템 설계 기초 (0) | 2023.12.19 |
쓰레드 풀에서 CPU 사용량 줄이기 (0) | 2021.12.02 |
폴(Poll) 방식의 네트워크 처리 구현 (0) | 2021.11.02 |
boost asio io_service(io_context)의 poll과 run의 활용 (0) | 2021.10.27 |
boost asio io_service(io_context)의 이해 및 활용 (0) | 2021.10.26 |
[서평, 소개] 클라우드 디자인 패턴(Cloud Design Patterns) (0) | 2017.04.08 |
[서평, 소개] NoSQL (0) | 2017.04.01 |