2014-05-12 7 views
0

에 나는 libpd를 사용하여 집중적 인 오디오 작업을 많이 실행되는 안드로이드 앱을 개발하고있다. Libpd의 오디오 스레드는 우선 순위가 Process.THREAD_PRIORITY_URGENT_AUDIO입니다.권장 당 응용 프로그램 CPU 부하는 안드로이드

CPU 부하는 삼성 갤럭시 S3에 지속적 % ~ 20 % 사이 (30)를 유지합니다. 그러나 오디오 서비스가 약 30 %의 CPU 부하로 백그라운드에서 실행되는 동안 다른 응용 프로그램을 여는 것은 나에게 합리적인 것처럼 보입니다. 오디오에서 많은 드롭 아웃이 발생합니다.

사람이 동작을 설명 할 수 있습니까? 나는 S3와 같은 쿼드 코어 폰의 최대로드가 400 % (adb 셸에서 "top"을 사용하여 표시됨)라고 생각했습니다. 그러므로 왜 libpd의 오디오 스레드와 같이 우선 순위가 높은 스레드가 CPU의 30 % 만 사용할 때 충분한 CPU 리소스를 얻지 못하는지 이해할 수 없습니다.

어떤 조언을 많이 주시면 감사하겠습니다

, 감사합니다)

+0

를 사용하여 더 큰 버퍼 - 그것은 실질적으로 부하를 감소하지 않습니다하지만 덜 중요한 오디오 계산의 예약을하여, 드롭 아웃의 결과로 높은 하중의 기회를 줄일 것이다. –

답변

0

글쎄, 나는 안드로이드의 커널은 OS가 작업 할당 그러나 나는 당신을 말할 수있는 수행 방법에 대한 100 % 확실하지가 최대 CPU 부하 (100 % 또는 무엇이든 그것은있을 수 있습니다) 실제로 달성 가능한 무언가가 아닙니다. task scheduling의 여러 가지 방법이 있지만 작업 완료를 보장하기 위해 최대 CPU의 70 ~ 80 %를 유지하는 것이 가장 좋습니다.

30 % 만 사용하고 UI 스레드를 실행해야하며 일반 배경 앱 (SMS, BBM, Whatsapp, Facebook 등)이 실행된다는 점을 염두에 두지 않으셔도됩니다.) 이제 집중적 인 다른 앱을 실행했습니다. 운영 체제는 언제 실행될 것인지 결정할 것이며, 사용자 우선 순위가 고려 되더라도 OS가 항상 우선 순위를 갖습니다. 앱이 시작되거나 누군가 집이나 뒤로 버튼을 부딪 힐 때 드롭 아웃이 표시 될 수 있습니다. 이것은 짐승의 본질 일 뿐이며, 스마트 폰은 처리 능력면에서 상대적으로 낮습니다.

내가/오버라이드 (그 경우에도 가능한 경우) OS 작업보다 우선 순위를 증가하는 방법을 잘 모르겠습니다으로이 정확하게 당신을 도움이되지 않습니다 알고,하지만 난 이런 일이 발생하는 이유는 설명 희망한다. 커널을 읽는 시간이 있다면 꽤 재미 있습니다.