임베디드 다중cpu에서 분산처리를 시키려면 어떻게 해야 하나요? pthread를 이용?
글쓴이: pedor / 작성시간: 수, 2014/06/18 - 2:45오후
쿼드코어의 cpu에서 임베디드 프로그래밍을 하고 있는데요
생각보다 성능이 많이 떨어서 지는것 같아서 top명령을 이용하여 cpu 상태를 관찰해 봤는데요
각 cpu의 점유율을 보면 총 4개의 cpu중에서 1개의 cpu에서 40~60%정도의 동작을 하고 있더라구요
계속 지켜보긴 했지만 3개는 그냥 놀고 있는 상태로 보이고 1개의 cpu에서 바쁘게 처리를 하고 있던데요
소스내용은 pthread를 이용하여 멀티스레드를 이용하였는데요
thread를 이용해서 작업공간을 나누면 cpu에서 처리를 각각 하게 되지 않나요? 이렇게 알고있었는데...이게 아닌듯하네요
조언 부탁드립니다.
Forums:
pthread를 사용하면 로드가 분산되는 것이
pthread를 사용하면 로드가 분산되는 것이 맞습니다만 critical section 내에서 수행하는 작업의 비중이 클 경우 멀티쓰레드로 짜도 (최악의 경우) CPU 1개만 바쁘게 일할 가능성이 있습니다.
어떤 작업을 어떻게 병렬화하셨는지 좀 더 자세히 설명해주셔야할 것 같습니다.
어떤 OS를 쓰느냐에 따라서 달라집니다. Linux
어떤 OS를 쓰느냐에 따라서 달라집니다.
Linux 나 Win 7/8 같은 경우에 thread를 쓰면 가용한 CPU core에 적당히 분배되도록 쓰레드를 만들어 줍니다. 물론 그렇다고 하더라도 각 CPU core에 일을 골고루 시키길 원한다면 그렇게 되게 끔 쓰레드 구성이나 동기화를 해주어야 하고요.
SMP나 AMP를 지원하지 않는 OS에서는 기본적으로 안되겠죠.
댓글 달기