서버 프로그래밍

성능 향상하기: IO 관련 처리 vs CPU 관련 처리

하늘흐늘 2021. 11. 3. 12:10
반응형

IO 관련 처리란 파일 처리, 소켓 처리와 같이 용어 그대로 IO 관련 처리를 말합니다. CPU 관련 처리란 연산 관련 처리를 말합니다. 이 둘의 처리에 대해서 말하는 이유는 이 둘을 구분하여 현재 프로그램을 보는 것이 성능을 크게 향상 시킬 수 있기 때문입니다. 
IO 관련 처리와 같은 경우 관련 IO API를 호출한 뒤에 API내에서 IO처리를 하는 동안 CPU가 노는 경우가 생길 수 있습니다. 이런 경우 성능을 올리기 위해서는 비동기 IO를 사용하거나 IO쓰레드를 만들어서 비동기적으로 처리하여 CPU가 노는 시간을 줄여 성능을 올릴 수 있습니다. 
CPU 관련 처리와 같은 경우 성능 좋은 알고리즘을 사용하여 연산을 줄이거나 멀티프로세스 프로그래밍을 활용하여 성능을 올릴 수 있습니다.
흔히 하는 실수가 멀티프로세스 프로그래밍을 IO관련 처리에 적용하는 것입니다. IO관련 처리는 기본적으로 API에서 CPU관련 블록이 있기 때문에 단일 프로세스 프로그래밍보다야 성능 향상이 있겠지만 멀티 프로세스 프로그래밍으로 큰 성능 향상을 기대하기는 어렵습니다. 이럴 때는 IO관련 성능을 향상 시키기 위하여 멀티 쓰레드를 사용하여 성능을 향상 시켜야 합니다. 이 때 멀티 쓰레드의 개수는 멀티 프로세스의 쓰레드 개수보다 훨씬 많을 것 입니다.

반응형