두 번째 Compute Pressure 오리진 트라이얼 발표

Kenneth Christiansen
Kenneth Christiansen
Arnaud (Arno) Mandy

지난 1년 동안 Intel은 Compute Pressure API에 관해 Google 및 다른 당사자와 협력해 왔습니다. Chrome 115에서는 이 새로운 API를 테스트하는 데 도움이 되는 오리진 트라이얼에 등록할 수 있습니다. 이 게시물에서는 API가 해결할 수 있도록 설계된 문제를 설명하고 사용 방법을 보여줍니다.

문제

웹은 화상 회의와 같은 애플리케이션을 가능하게 할 뿐만 아니라 사용자에게 즐거운 경험을 제공하는 새로운 기능을 통해 핵심 애플리케이션 플랫폼이 되고 있습니다. 웹 기반 환경은 즉시 로드되고 어디서나 액세스할 수 있으며 미리 설치할 필요가 없습니다.

사용자는 빠르게 로드되고 반응성이 뛰어난 애플리케이션을 원합니다. 또한 배터리 수명을 최대한 늘리고, 만지기에 뜨겁지 않은 무소음 기기를 원합니다. 부드러운 애니메이션과 배경 동영상 흐리게 처리는 많은 처리 성능을 사용하고 하드웨어를 한계까지 밀어붙이며 배터리를 소모하므로 고급 환경을 만들 때 이러한 작업을 실행하기가 쉽지 않을 수 있습니다.

또한 웹 애플리케이션에 액세스하는 데 사용되는 기기는 매우 다양합니다. 5년 된 노트북은 동일한 브라우저 버전을 실행하더라도 새 데스크톱 컴퓨터와는 매우 다른 기능을 갖습니다.

개발자는 종종 최소 공통 분모를 위해 개발하고, 오래되었거나 성능이 낮은 기기에 부담을 주는 일부 기능은 사용하지 않습니다. 하지만 성능이 우수한 장비를 보유하고 있고 이를 활용할 수 있는 적절한 환경에 있는 사용자를 위해 환경을 최적화할 수 있다면 그렇게 하지 않을 이유가 없습니다. 예를 들어 휴대전화에서 영상 통화에 참여할 때는 현재 스피커를 보는 것이 가장 좋은 환경일 수 있습니다. 하지만 데스크톱에서는 통화에 참여한 모든 사용자를 볼 수 있으면 좋으며, 하드웨어는 일반적으로 이 작업을 처리할 수 있습니다. 이를 위해서는 사용자의 개인 정보를 보호하지 않는 실시간 하드웨어 원격 분석이 필요합니다. 이 기능은 원활한 사용자 환경을 보장하기 위해 작업을 예약하고 기능을 점진적으로 켜거나 끄는 데 사용할 수 있습니다. 이때 Compute Pressure API가 도움이 될 수 있습니다.

Compute Pressure API란 무엇인가요?

Compute Pressure API는 시스템의 압력을 나타내는 상위 상태를 제공합니다. 이러한 상위 상태는 개인 정보 보호 (사용자를 식별할 수 있는 너무 많은 구체적인 정보를 공유하지 않음)와 개발자가 쉽게 추론할 수 있는 정보 간의 균형을 잘 유지합니다. 또한 구현에서 올바른 기본 하드웨어 측정항목을 사용하여 시스템이 관리할 수 없는 스트레스를 받지 않는 한 사용자가 사용 가능한 모든 처리 성능을 활용할 수 있도록 합니다.

예를 들어 최신 CPU는 대부분의 경우 단일 코어 또는 모든 코어에서 100% 사용률로 잘 실행되도록 설계되었으므로 사용률 80%를 중요한 것으로 하드코딩하는 API를 사용하면 개발자가 하드웨어 기능을 제대로 활용하지 못하고 최적화되지 않은 사용자 환경을 제공할 수 있습니다. 반면 시스템에 적절한 냉방이 없거나 주변 온도가 여름처럼 매우 높아서 높은 CPU 사용률에 도달하기도 전에 시스템이 제한될 수 있습니다. 현재 API는 전역 CPU 부하에서 작동하지만, 기본 스레드와 작업자 전반에서 페이지당 CPU 부하를 사용 설정하는 실험을 진행할 계획입니다.

컴퓨팅 압력의 상태는 다음과 같습니다.

  • 일반: 현재 워크로드가 최소한의 부하를 일으키므로 시스템이 전력을 절약하기 위해 더 낮은 클럭 주파수로 실행될 수 있습니다.
  • 공정함: 시스템이 잘 작동하고 있고, 모든 것이 원활하며 문제없이 추가 작업을 수행할 수 있습니다.
  • 심각함: 시스템에 심각한 압력이 있지만 관리 가능한 수준이며 시스템은 잘 작동하지만 한계에 가까워질 수 있습니다.
    • 클럭 속도 (AC 또는 DC 전원에 따라 다름)가 지속적으로 높습니다.
    • 열이 높지만 관리 가능하며 제한되지 않습니다.

이 시점에서 작업을 추가하면 시스템이 심각한 상태로 전환될 수 있습니다.

  • 심각: 시스템이 한도에 도달하려고 하지만 아직 도달하지 않았습니다. 심각하다고 해서 시스템이 적극적으로 제한되고 있는 것은 아니지만, 이 상태는 장기적으로 지속되지 않으며 워크로드가 동일하게 유지되면 제한이 발생할 수 있습니다. 이 신호는 웹 애플리케이션이 워크로드를 줄이기 위한 마지막 호출입니다.

Compute Pressure API 사용 설정

Compute Pressure API는 기본적으로 Chrome에서 사용 설정되지 않지만 이 기능을 명시적으로 사용 설정하여 Chrome 115에서 실험할 수 있습니다. enable-experimental-web-platform-features 플래그를 사용 설정하여 로컬에서 활성화할 수 있습니다.

앱의 모든 방문자에게 이 기능을 사용 설정하기 위해 현재 출처 체험판이 진행 중이며 Chrome 118(2023년 7월 18일)에서 종료될 예정입니다. 무료 체험판에 참여하려면 가입하고 HTML 또는 HTTP 헤더에 출처 무료 체험판 토큰이 포함된 메타 요소를 포함하세요. 자세한 내용은 출처 무료 체험판 시작하기 게시물을 참고하세요.

컴퓨팅 압력 관찰

다음 코드 스니펫은 계산 부하의 변경사항을 모니터링하고 이에 따라 조치를 취하는 방법을 보여줍니다.

// The `records` parameter is a sequence of records between two
// consecutive callbacks. Currently it contains ten entries, but
// this is an implementation detail.
function callback(records) {
  const lastRecord = records.pop();
  console.log(`Current pressure ${lastRecord.state}`);
  if (lastRecord.state === 'critical') {
    // Reduce workers load by 4.
  } else if (lastRecord.state === 'serious') {
    // Reduce workers load by 2.
  } else {
    // Do not reduce.
  }
}

const observer = new PressureObserver(callback, {
  // Sample rate in Hertz.
  sampleRate: 1,
});
observer.observe('cpu');

다음 코드 스니펫은 iframe에서 Compute Pressure API를 사용하는 방법을 보여줍니다.

<iframe src="https://mysite.com/" allow="compute-pressure">
  <script>
    // Use Compute Pressure API.
  </script>
</iframe>

플랫폼 지원

Compute Pressure API는 Linux, ChromeOS, macOS, Windows의 Chrome 115에서 사용할 수 있습니다.

데모

아래에 삽입된 데모를 사용해 컴퓨팅 압력 상태가 일부 인위적 압력에 따라 어떻게 변경되는지 확인해 보세요.

브라우저에서 API를 지원하지 않는 경우 아래 동영상에서 데모 녹화본을 확인하세요.

의견

이 단계에서는 개발자 의견이 매우 중요하므로 제안사항과 질문이 있으면 GitHub에서 문제를 제출해 주세요.

감사의 말씀

대표 이미지는 Unsplash의 로버트 아나쉬가 제작했습니다. 이 도움말은 레이첼 앤드류토마스 슈타이너가 검토했습니다.