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

Kenneth Christiansen
Kenneth Christiansen
Arnaud (Arno) Mandy

지난 한 해 동안 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에서 사용할 수 있습니다.

데모

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

아래 동영상에서 이 데모의 녹화본을 볼 수 있습니다.

의견

이 단계에서는 개발자의 의견이 매우 중요하므로 제안 및 질문과 함께 GitHub에서 문제를 제출하세요.

감사의 말

히어로 이미지는 로버트 아나슈가 Unsplash에서 만들었습니다. Rachel AndrewThomas Steiner가 작성한 도움말입니다.