Trong năm qua, Intel đã cộng tác với Google và các bên khác về Compute Pressure API. Trong Chrome 115, bạn có thể đăng ký tham gia bản dùng thử theo nguyên gốc để kiểm thử API mới này. Bài đăng này giải thích các vấn đề mà API này được thiết kế để giải quyết và hướng dẫn cách sử dụng API.
Vấn đề
Web đang trở thành một nền tảng ứng dụng chính, với các tính năng mới giúp các ứng dụng như hội nghị truyền hình không chỉ có thể thực hiện được mà còn mang lại trải nghiệm thú vị cho người dùng. Các trải nghiệm dựa trên web tải tức thì, có thể truy cập từ mọi nơi và không cần cài đặt trước.
Người dùng muốn ứng dụng tải nhanh và phản hồi nhanh. Họ cũng muốn khai thác tối đa thời lượng pin và các thiết bị im lặng không gây nóng khi chạm vào. Đôi khi, bạn khó có thể đạt được những điều này khi cũng tạo ra các trải nghiệm nâng cao như ảnh động mượt mà và làm mờ video ở chế độ nền sử dụng nhiều sức mạnh xử lý, đẩy phần cứng đến giới hạn và làm tiêu hao pin.
Ngoài ra, có rất nhiều loại thiết bị đang được dùng để truy cập vào các ứng dụng web. Một máy tính xách tay đã sử dụng 5 năm sẽ có khả năng rất khác so với máy tính để bàn mới tinh, ngay cả khi chạy cùng một phiên bản trình duyệt.
Nhà phát triển thường chọn phát triển cho mẫu thiết bị phổ biến nhất, tránh sử dụng một số tính năng sẽ gây hao tổn cho các thiết bị cũ hoặc có khả năng thấp hơn. Tuy nhiên, nếu có thể tối ưu hoá trải nghiệm cho những người dùng có thiết bị đủ khả năng và đang ở môi trường phù hợp để hưởng lợi từ trải nghiệm đó, thì tại sao không làm như vậy? Ví dụ: khi tham gia cuộc gọi video trên điện thoại, bạn chỉ cần nhìn thấy người đang nói có thể là trải nghiệm tốt nhất. Tuy nhiên, trên máy tính, bạn nên thấy mọi người trong cuộc gọi và phần cứng thường đáp ứng được yêu cầu này. Để đạt được điều này, bạn cần có dữ liệu đo từ xa phần cứng trực tiếp mà không làm ảnh hưởng đến quyền riêng tư của người dùng. Dữ liệu này có thể được dùng để lên lịch tác vụ và bật/tắt dần các tính năng để đảm bảo trải nghiệm người dùng mượt mà. Đây là lúc Compute Pressure API có thể giúp ích.
Compute Pressure API là gì?
API Áp lực điện toán cung cấp các trạng thái cấp cao biểu thị áp lực trên hệ thống. Các trạng thái cấp cao này đảm bảo sự cân bằng giữa quyền riêng tư (không chia sẻ quá nhiều thông tin cụ thể có thể xác định người dùng) và thông tin mà nhà phát triển có thể dễ dàng lý giải. Ngoài ra, công cụ này cho phép quá trình triển khai sử dụng các chỉ số phần cứng cơ bản phù hợp để đảm bảo rằng người dùng có thể tận dụng tất cả sức mạnh xử lý có sẵn, miễn là hệ thống không chịu áp lực không thể kiểm soát.
Ví dụ: CPU hiện đại được thiết kế để chạy tốt ở mức sử dụng 100% trong hầu hết các trường hợp, trên một lõi hoặc trên tất cả các lõi, vì vậy, một API mã hoá cứng mức sử dụng 80% là quan trọng có thể khiến nhà phát triển sử dụng không hết khả năng của phần cứng và mang lại trải nghiệm người dùng không tối ưu. Mặt khác, hệ thống có thể không có hệ thống làm mát thích hợp hoặc nhiệt độ môi trường xung quanh có thể rất cao như vào mùa hè và hệ thống có thể bị điều tiết ngay cả trước khi đạt đến mức sử dụng CPU cao. API hiện tại hoạt động trên áp lực CPU toàn cầu, nhưng chúng tôi dự định thử nghiệm việc bật áp lực CPU trên mỗi trang trên luồng chính và worker.
Áp suất điện toán có các trạng thái sau:
- Nominal (Thông thường): Khối lượng công việc hiện tại đang gây ra áp lực tối thiểu, cho phép hệ thống chạy ở tần suất xung nhịp thấp hơn để tiết kiệm pin.
- Có thể chấp nhận: Hệ thống đang hoạt động tốt; mọi thứ đều diễn ra suôn sẻ và hệ thống có thể thực hiện thêm công việc mà không gặp vấn đề gì.
- Nghiêm trọng: Hệ thống chịu một số áp lực nghiêm trọng nhưng có thể kiểm soát được và hệ thống đang hoạt động tốt nhưng có thể sắp đạt đến giới hạn:
- Tốc độ xung nhịp (tuỳ thuộc vào nguồn AC hoặc DC) luôn ở mức cao.
- Nhiệt độ cao nhưng vẫn có thể kiểm soát được và không gây ra tình trạng điều tiết.
Tại thời điểm này, nếu bạn thêm công việc khác, hệ thống có thể chuyển sang trạng thái nghiêm trọng.
- Cấp độ nghiêm trọng: Hệ thống sắp đạt đến giới hạn nhưng chưa đạt đến giới hạn. Critical (Cực kỳ nghiêm trọng) không có nghĩa là hệ thống đang bị chủ động điều tiết, nhưng trạng thái này không bền vững về lâu dài và có thể dẫn đến việc điều tiết nếu khối lượng công việc vẫn giữ nguyên. Tín hiệu này là lệnh gọi cuối cùng để ứng dụng web giảm bớt khối lượng công việc.
Bật Compute Pressure API
Theo mặc định, Compute Reporting API không được bật trong Chrome nhưng bạn có thể thử nghiệm API này trong Chrome 115 bằng cách bật chức năng này một cách rõ ràng.
Bạn có thể kích hoạt tính năng này trên máy bằng cách bật cờ enable-experimental-web-platform-features
.
Để bật tính năng này cho tất cả khách truy cập vào ứng dụng của bạn, một thử nghiệm về nguồn gốc hiện đang diễn ra và dự kiến sẽ kết thúc trong Chrome 118 (ngày 18 tháng 7 năm 2023). Để tham gia dùng thử, hãy đăng ký và thêm một phần tử meta có mã thông báo dùng thử theo nguyên gốc trong tiêu đề HTML hoặc HTTP. Để biết thêm thông tin, hãy tham khảo bài đăng Bắt đầu thử nghiệm nguồn gốc.
Quan sát áp lực tính toán
Đoạn mã sau đây minh hoạ cách theo dõi và hành động dựa trên các thay đổi về áp lực điện toán:
// 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ạn mã sau minh hoạ cách sử dụng API Tính toán áp suất từ một iframe:
<iframe src="https://mysite.com/" allow="compute-pressure">
<script>
// Use Compute Pressure API.
</script>
</iframe>
Hỗ trợ nền tảng
Compute Pressure API có trong Chrome 115 trên Linux, ChromeOS, macOS và Windows.
Bản minh hoạ
Hãy thử bản minh hoạ được nhúng bên dưới để xem trạng thái áp lực tính toán thay đổi như thế nào dựa trên một số áp lực nhân tạo.
Trong trường hợp trình duyệt của bạn không hỗ trợ API, video bên dưới sẽ hiển thị bản ghi của bản minh hoạ.
Phản hồi
Ý kiến phản hồi của nhà phát triển rất quan trọng ở giai đoạn này, vì vậy, vui lòng gửi vấn đề trên GitHub kèm theo các đề xuất và câu hỏi.
Đường liên kết hữu ích
- Video giải thích công khai
- Quy cách
- Lỗi theo dõi Chromium
- Mục nhập trên ChromeStatus.com
- Bài đánh giá TAG
- Ý định thử nghiệm
- Bản minh hoạ Compute Pressure API | Nguồn bản minh hoạ Compute Pressure API
Lời cảm ơn
Hình ảnh chính do Robert Anasch tạo trên Unsplash. Bài viết này đã được Rachel Andrew và Thomas Steiner xem xét.