우분투 top명령어 프로세스 cpu점유율이 80%가 나오는데요 개선이 필요한가요? 멀티스레드 사용시
글쓴이: timul16 / 작성시간: 월, 2014/03/03 - 7:29오후
우분투에서 Qt프로그래밍을 하고 있습니다.
프로그램을 단일프로세스에서 멀티스레드로 바꿔서 프로세스상태를 관찰해 보았는데요 (pthread를 사용
단일 스레드로 돌아갈시 프로세스 점유율이 40%이하인 상태였는데
멀티 스레드로 구현을 하니 80%로 올라가버리더라구요
이론적으로는 멀티 스레드로 구현시 구동이 훨씬 유연하게 동작할것으로 보였는데
top명령의 cpu점유율을 확인해보면 이와 같이 나오고 있습니다.
현재 버츄얼박스에서 우분투 10.04버전으로 사용중이구요
이런경우에는 단일 스레드를 사용하는게 적합한건가요?
스레드를 다눈 범주는
1. 데이터를 읽어오는 곳
2. 데이터를 뿌려주는 곳
이렇게 두부분으로 나눠서 멀티스레드를 구현하였구요
단일 스레드시에는 데이터를 스레드로 받아서
그 스레드함수 끝부분에 페인트를 호출하도록 구현하였습니다.
Forums:
...
적어주신 정보만 가지고는 뭐라고 할 수가 없겠는데요.
(시나리오 1) 단일 쓰레드로 10초 걸리던 작업이 쓰레드 두 개로 하니 기다리는 시간이 줄어 5초에 끝난다. (CPU 사용시간은 둘 다 4초)
(시나리오 2) 쓰레드를 나누면서 쓸데없는 오버헤드가 걸려 10초 걸리던 작업이 여전히 10초 걸린다. (CPU 사용시간은 4초에서 8초로 증가)
1번이면 좋은 거고, 2번이면 나쁜 거고...
일단..
멀티스레딩은 놀고있는 코어를 더 사용해서 더 나은 퍼포먼스를 얻는게 목적이므로 CPU점유율이 올라가는 것 자체는 이상한게 아닙니다.
하지만, 만약 송수신 데이터가 많지 않은 아이들 상태에서도 점유율이 저렇다면 구현 방법상의 문제가 있다고 봐야죠. 데이터 송수신이 단순한 폴링으로 돼있다든지.
--
htop으로 보시면 코어 별 점유율을 "매우 섬세한"
htop으로 보시면 코어 별 점유율을 "매우 섬세한" 그래픽으로 표현해 줍니다. 구현 별로 각각 돌려 보시면 도움이 될 것 같습니다.
댓글 달기