Chrome OS의 자연스러운 애니메이션

앱 개발자에게 가장 어려운 문제 중 하나는 매끄럽고 결함과 버벅거림이 없는 애니메이션을 보장하는 것입니다. 특히 시스템에서 리소스를 많이 사용하는 백그라운드 작업을 실행 중인 경우에 디버깅하기가 어렵습니다. 앱이나 시스템으로 인해 버벅거림이 발생하는지를 쉽게 확인할 수 있는 방법은 없습니다. 하지만 잘못된 동작의 가능한 원인을 식별하는 데 도움이 될 수 있는 프로파일러 도구가 있습니다.

문제

게임과 같이 미세 조정된 앱은 일반적으로 이중 버퍼링을 사용하여 사용자 응답 시간을 가능한 낮게 유지합니다. 그런데도 성능을 저하시킬 수 있는 요소가 많이 많습니다. 예를 들어 프레임을 렌더링하는 데 시간이 너무 오래 걸리면 렌더링된 결과가 다음 버퍼 스왑을 위해 준비되지 않아서 이전 프레임이 반복됩니다. 그러면 렌더러가 다음 프레임 렌더링을 시작할 수 없으므로 더 많은 문제가 발생합니다. 이 시나리오는 '순수' Android 개발자에게 익숙합니다. 앱이 Chrome OS에서 실행되는 경우 환경설정이 훨씬 더 복잡합니다.

데스크톱에서 실행 중인 앱은 화면의 디스플레이 프레임에 직접 렌더링되지 않습니다. 대신 데이터를 텍스처로 렌더링합니다. 일반적으로 그래픽을 텍스처로 렌더링하는 여러 앱이 있습니다. 시스템에서 컴포지터로 모든 텍스처를 단일 데스크톱 이미지로 결합하여 화면의 뷰를 구성합니다.

컴포지터는 백그라운드에서 투명하게 작동합니다. 그러나 GPU 파이프라인을 최대한 활용하기 위해 한 프레임 시간 지연을 도입했습니다. 이상적인 환경에서는 필요하지 않을 수 있지만 이 기능은 시스템 성능 변동을 완화시키고 비대칭 부하의 균형을 유지하는 데 도움이 됩니다.

OS가 매우 심하게 작동하면 GPU가 압착될 수 있습니다. 프레임이 렌더링될 때부터 화면에 나타날 때까지 추가 지연이 발생할 수 있습니다. 시스템에서 4중 버퍼링을 사용하여 보완할 수 있지만 하드웨어에 따라 다릅니다. 버퍼링 수준이 더 깊어지더라도 그래픽 파이프라인에 여전히 결함이 있을 수 있습니다.

ARC 그래픽 추적기

Chrome OS에는 버퍼가 시스템에 침투하는 방식, 메모리 스왑이 발생하는 시기, CPU/GPU 사용량 및 애플리케이션이 특정 시점에 실행하는 작업을 보여주는 프로파일링 도구가 있습니다.

프로파일러 설정

프로파일러를 사용하려면 베타 채널에서 M75 이상을 실행해야 합니다. 최상의 결과를 얻으려면 Intel 기기를 사용하는 것이 좋습니다.

프로파일러를 사용하기 전에 트레이스로 앱을 시드할 수도 있습니다. Trace.traceCounter(Trace.TRACE_TAG_GRAPHICS, "Event", <number>);를 코드에 추가하세요. EventcustomTrace.라는 프리픽스로 시작해야 합니다. 프리픽스는 트레이스 메시지에 표시되지 않습니다.

프로파일러를 설정하려면 다음 단계를 따르세요.

  1. 개발자 노드를 사용 설정합니다.
  2. Chrome 설정을 사용 설정하고 ARC 그래픽 버퍼 시각화 도구를 사용 설정합니다.
  3. chrome://arc-graphics-tracing로 이동합니다.

프로파일러 실행

  1. 버벅거림 시 중지를 선택합니다.
  2. Android 앱을 실행합니다.
  3. Android 앱이 활성화되어 있고 포커스가 있으면 Ctrl+Shift+G를 누릅니다.

버벅거림이 발생하면 브라우저 창이 팝업됩니다. 타임라인을 확대하고 축소하려면 ws 키를 사용하세요.