No ano passado, a Intel colaborou com o Google e outras partes na API Compute Pressure. No Chrome 115, você pode se inscrever para um teste de origem para ajudar a testar essa nova API. Esta postagem explica os problemas que a API foi projetada para resolver e mostra como usá-la.
O problema
A Web está se tornando uma plataforma de aplicativos importante, com novos recursos que tornam aplicativos como videoconferências não apenas possíveis, mas também uma experiência agradável para os usuários. As experiências baseadas na Web são carregadas instantaneamente, podem ser acessadas de qualquer lugar e não precisam de instalação antecipada.
Os usuários querem apps responsivos e de carregamento rápido. Eles também querem aproveitar ao máximo a duração da bateria e dispositivos silenciosos que não esquentam ao toque. Às vezes, essas coisas podem ser difíceis de alcançar ao criar experiências avançadas, já que animações suaves e desfoque de vídeo em segundo plano usam muita capacidade de processamento, forçando o hardware ao limite e esgotando a bateria.
Além disso, há uma grande variedade de dispositivos sendo usados para acessar aplicativos da Web. Um laptop com cinco anos de uso terá recursos muito diferentes de um computador desktop novo, mesmo quando executando a mesma versão do navegador.
Os desenvolvedores geralmente optam por desenvolver para o menor denominador comum, evitando usar alguns recursos que sobrecarregariam dispositivos mais antigos ou com menos recursos. No entanto, se fosse possível otimizar a experiência para usuários que têm equipamentos compatíveis e estão no ambiente certo para se beneficiar disso, por que não fazer isso? Por exemplo, ao participar de uma videochamada usando seu smartphone, ver o alto-falante atual provavelmente é a melhor experiência. No entanto, em um computador, seria bom ver todos na chamada, e o hardware geralmente está pronto para a tarefa. Para conseguir isso, você precisa de telemetria de hardware em tempo real, sem sacrificar a privacidade dos usuários, que pode ser usada para programar tarefas e ativar e desativar os recursos progressivamente para garantir uma experiência do usuário tranquila. É aí que a API Compute Pressure pode ajudar.
O que é a API Compute Pressure?
A API Compute Pressure oferece estados de alto nível que representam a pressão no sistema. Esses estados de alto nível garantem um bom equilíbrio entre privacidade (não compartilhar informações específicas demais que possam identificar um usuário) e informações que os desenvolvedores podem analisar com facilidade. Além disso, permite que a implementação use as métricas de hardware corretas para garantir que os usuários possam aproveitar toda a capacidade de processamento disponível, desde que o sistema não esteja sob estresse incontrolável.
CPUs modernas, por exemplo, são projetadas para funcionar bem com 100% de utilização na maioria das situações, em um único núcleo ou em todos os núcleos. Portanto, uma API que define a utilização de 80% como crítica pode resultar em subutilização dos recursos do hardware e oferecer uma experiência do usuário não ideal. Por outro lado, um sistema pode não ter resfriamento adequado ou a temperatura ambiente pode estar muito alta, como no verão, e o sistema pode estar sendo limitado mesmo antes de atingir uma alta utilização da CPU. A API atual funciona na pressão global da CPU, mas planejamos testar a ativação da pressão da CPU por página na linha de execução principal e nos workers.
A pressão de computação tem os seguintes estados:
- Nominal:as cargas de trabalho atuais estão causando pressão mínima, permitindo que o sistema seja executado em uma frequência de clock mais baixa para preservar a energia.
- Bom:o sistema está funcionando bem, tudo está tranquilo e ele pode receber mais trabalho sem problemas.
- Grave:há uma pressão grave no sistema, mas ela é
gerenciada, e o sistema está funcionando bem, mas pode estar se aproximando dos
limites:
- A velocidade do relógio (dependendo da alimentação CA ou CC) é consistentemente alta.
- As temperaturas são altas, mas ainda são administráveis e não causam restrição.
Nesse ponto, se você adicionar mais trabalho, o sistema poderá entrar em um estado crítico.
- Crítico:o sistema está prestes a atingir os limites, mas ainda não chegou a esse ponto. O estado crítico não significa que o sistema está sendo limitado ativamente, mas esse estado não é sustentável a longo prazo e pode resultar em limitação se a carga de trabalho permanecer a mesma. Esse sinal é a última chamada para o aplicativo da Web aliviar a carga de trabalho.
Ativar a API Compute Pressure
Por padrão, a API Compute Pressure não é ativada no Chrome, mas pode ser
testada no Chrome 115 ativando explicitamente a funcionalidade.
É possível ativá-lo localmente ao ativar a
sinalização enable-experimental-web-platform-features
.
Para ativar esse recurso para todos os visitantes do app, um teste de origem está em andamento e será encerrado no Chrome 118 ( 18 de julho de 2023). Para participar do teste, inscreva-se e inclua um elemento meta com o token de teste de origem no cabeçalho HTML ou HTTP. Para mais informações, consulte a postagem Começar a usar os testes de origem.
Observar a pressão de computação
O snippet de código a seguir ilustra como monitorar e reagir a mudanças na pressão de computação:
// 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');
O snippet de código a seguir ilustra como usar a API Compute Pressure em um iframe:
<iframe src="https://mysite.com/" allow="compute-pressure">
<script>
// Use Compute Pressure API.
</script>
</iframe>
Suporte a plataformas
A API Compute Pressure está disponível no Chrome 115 no Linux, ChromeOS, macOS e Windows.
Demonstração
Teste a demonstração incorporada abaixo para ver como o estado da pressão de computação muda com base em alguma pressão artificial.
Caso seu navegador não ofereça suporte à API, o vídeo abaixo mostra uma gravação da demonstração.
Feedback
O feedback dos desenvolvedores é muito importante nesta fase. Portanto, registre problemas no GitHub com sugestões e perguntas.
Links úteis
- Explicação para o público
- Especificações
- Bug de rastreamento do Chromium
- Entrada de ChromeStatus.com
- Análise do TAG
- Intent to Experiment
- Demonstração da API Compute Pressure | Fonte da demonstração da API Compute Pressure
Agradecimentos
A imagem principal foi criada por Robert Anasch no Unsplash. Este artigo foi revisado por Rachel Andrew e Thomas Steiner.