कंप्यूट प्रेशर ऑरिजिन ट्रायल के दूसरे चरण की सूचना

Kenneth Christiansen
Kenneth Christiansen
Arnaud (Arno) Mandy

पिछले साल से, Intel, Compute Pressure API पर Google और अन्य पार्टियों के साथ मिलकर काम कर रहा है. Chrome 115 में, इस नए एपीआई को टेस्ट करने के लिए, ऑरिजिन ट्रायल के लिए रजिस्टर किया जा सकता है. इस पोस्ट में उन समस्याओं के बारे में बताया गया है जिन्हें हल करने के लिए एपीआई को डिज़ाइन किया गया है. साथ ही, इसका इस्तेमाल करने का तरीका भी बताया गया है.

समस्या

वेब, ऐप्लिकेशन का मुख्य प्लैटफ़ॉर्म बन रहा है. इसकी नई सुविधाओं की मदद से, वीडियो कॉन्फ़्रेंसिंग जैसे ऐप्लिकेशन न सिर्फ़ काम के हैं, बल्कि उपयोगकर्ताओं के लिए एक बेहतरीन अनुभव भी हैं. वेब पर काम करने वाले ऐप्लिकेशन तुरंत लोड होते हैं. इन्हें कहीं से भी ऐक्सेस किया जा सकता है. साथ ही, इन्हें पहले इंस्टॉल करने की ज़रूरत नहीं होती.

उपयोगकर्ताओं को तेज़ी से लोड होने वाले और रिस्पॉन्सिव ऐप्लिकेशन चाहिए. साथ ही, वे अपने डिवाइस की बैटरी को ज़्यादा से ज़्यादा समय तक इस्तेमाल करना चाहते हैं. साथ ही, वे ऐसे डिवाइस चाहते हैं जो काम करते समय ज़्यादा आवाज़ न करते हों और जिनका तापमान ज़्यादा न हो. बेहतर अनुभव देने के लिए, इन चीज़ों को हासिल करना कभी-कभी मुश्किल हो सकता है. ऐसा इसलिए, क्योंकि स्मूद ऐनिमेशन और बैकग्राउंड वीडियो को धुंधला करने की सुविधा, प्रोसेसिंग पावर का ज़्यादा इस्तेमाल करती है. इससे हार्डवेयर पर ज़्यादा लोड पड़ता है और बैटरी की खपत होती है.

इसके अलावा, वेब ऐप्लिकेशन को ऐक्सेस करने के लिए, कई तरह के डिवाइसों का इस्तेमाल किया जा रहा है. पांच साल पुराने लैपटॉप और नए डेस्कटॉप कंप्यूटर में, एक जैसे ब्राउज़र वर्शन का इस्तेमाल करने पर भी बहुत फ़र्क़ होगा.

डेवलपर अक्सर, सबसे कम कॉमन डेनोमिनेटर के लिए ऐप्लिकेशन डेवलप करते हैं. साथ ही, वे ऐसी सुविधाओं का इस्तेमाल करने से बचते हैं जिनसे पुराने या कम क्षमता वाले डिवाइसों पर असर पड़े. हालांकि, अगर उन उपयोगकर्ताओं के लिए अनुभव को ऑप्टिमाइज़ किया जा सकता है जिनके पास ज़रूरी उपकरण हैं और वे इसका फ़ायदा पाने के लिए सही माहौल में हैं, तो ऐसा क्यों न किया जाए? उदाहरण के लिए, फ़ोन से वीडियो कॉल में शामिल होने पर, हो सकता है कि आपको सिर्फ़ मौजूदा स्पीकर को देखना बेहतर लगे. हालांकि, डेस्कटॉप पर कॉल में शामिल सभी लोगों को देखना अच्छा लगता है. साथ ही, आम तौर पर हार्डवेयर भी इस काम के लिए सही होता है. ऐसा करने के लिए, आपको उपयोगकर्ताओं की निजता को बनाए रखते हुए, लाइव हार्डवेयर टेलीमेट्री की ज़रूरत होती है. इसका इस्तेमाल, टास्क शेड्यूल करने और उपयोगकर्ताओं को बेहतर अनुभव देने के लिए, सुविधाओं को धीरे-धीरे चालू और बंद करने के लिए किया जा सकता है. ऐसे में, Compute Pressure API आपकी मदद कर सकता है.

Compute Pressure API क्या है?

Compute Pressure API, सिस्टम पर पड़ने वाले दबाव की जानकारी देने वाली हाई-लेवल की स्थितियां दिखाता है. ये हाई-लेवल स्टेटस, निजता और ऐसी जानकारी के बीच एक अच्छा संतुलन बनाते हैं जिससे डेवलपर आसानी से अनुमान लगा सकते हैं. निजता का मतलब है कि ऐसी ज़्यादा जानकारी शेयर न करना जिससे उपयोगकर्ता की पहचान की जा सके. साथ ही, इससे यह पक्का करने के लिए कि जब तक सिस्टम पर बहुत ज़्यादा दबाव न पड़ रहा हो, तब तक उपयोगकर्ता अपनी प्रोसेसिंग पावर का पूरा फ़ायदा ले सकें, लागू करने के लिए सही हार्डवेयर मेट्रिक का इस्तेमाल किया जा सकता है.

उदाहरण के लिए, आधुनिक सीपीयू को ज़्यादातर मामलों में, एक कोर या सभी कोर पर 100% इस्तेमाल करने के लिए डिज़ाइन किया गया है. इसलिए, अगर कोई एपीआई 80% इस्तेमाल को ज़रूरी के तौर पर हार्डकोड करता है, तो हो सकता है कि डेवलपर हार्डवेयर की क्षमताओं का कम इस्तेमाल करें और उपयोगकर्ता को खराब अनुभव दें. दूसरी ओर, हो सकता है कि किसी सिस्टम में कूलिंग की सुविधा ठीक से काम न कर रही हो या गर्मी के मौसम में आस-पास का तापमान बहुत ज़्यादा हो. साथ ही, हो सकता है कि सीपीयू के ज़्यादा इस्तेमाल से पहले ही सिस्टम थ्रॉटल हो रहा हो. मौजूदा एपीआई, सीपीयू के लोड पर काम करता है. हालांकि, हमारा प्लान है कि हम मुख्य थ्रेड और वर्कर्स के लिए, हर पेज पर सीपीयू के लोड को चालू करने के बारे में एक्सपेरिमेंट करें.

Compute pressure की ये स्थितियां होती हैं:

  • सामान्य: मौजूदा वर्कलोड की वजह से, सिस्टम पर कम दबाव पड़ रहा है. इसलिए, बैटरी बचाने के लिए सिस्टम को कम क्लॉक फ़्रीक्वेंसी पर चलाया जा सकता है.
  • अच्छा: सिस्टम ठीक से काम कर रहा है. इसमें कोई समस्या नहीं है और यह बिना किसी रुकावट के ज़्यादा काम कर सकता है.
  • गंभीर: सिस्टम पर कुछ गंभीर दबाव है, लेकिन इसे मैनेज किया जा सकता है. सिस्टम ठीक से काम कर रहा है, लेकिन यह अपनी सीमाओं के करीब पहुंच सकता है:
    • प्रोसेसिंग यूनिट की क्लॉक स्पीड (एसी या डीसी पावर के हिसाब से) लगातार ज़्यादा रहती है.
    • डिवाइस का तापमान ज़्यादा है, लेकिन उसे मैनेज किया जा सकता है और इससे डिवाइस की परफ़ॉर्मेंस पर असर नहीं पड़ रहा है.

इस स्थिति में, अगर ज़्यादा काम जोड़ा जाता है, तो सिस्टम गंभीर स्थिति में आ सकता है.

  • गंभीर: सिस्टम अब अपनी सीमाओं तक पहुंचने वाला है, लेकिन वह अब तक सीमाओं तक नहीं पहुंचा है. 'गंभीर' का मतलब यह नहीं है कि सिस्टम को सक्रिय रूप से कम किया जा रहा है. हालांकि, यह स्थिति लंबे समय तक नहीं बनी रह सकती. साथ ही, अगर वर्कलोड में कोई बदलाव नहीं होता है, तो हो सकता है कि सिस्टम को कम किया जाए. यह सिग्नल, वेब ऐप्लिकेशन के लिए आखिरी कॉल है, ताकि वह अपना वर्कलोड कम कर सके.

Compute Pressure API को चालू करना

Compute Pressure API, Chrome में डिफ़ॉल्ट रूप से चालू नहीं होता. हालांकि, Chrome 115 में इसकी सुविधा को साफ़ तौर पर चालू करके, इसका इस्तेमाल किया जा सकता है. इसे स्थानीय तौर पर चालू करने के लिए, enable-experimental-web-platform-features फ़्लैग को चालू करें.

आपके ऐप्लिकेशन पर आने वाले सभी लोगों के लिए इसे चालू करने के लिए, फ़िलहाल ऑरिजिन ट्रायल चल रहा है. यह ट्रायल, Chrome 118 ( 18 जुलाई, 2023) में खत्म होने वाला है. मुफ़्त में आज़माने की सुविधा का इस्तेमाल करने के लिए, साइन अप करें. साथ ही, एचटीएमएल या एचटीटीपी हेडर में, ऑरिजिन ट्रायल टोकन वाला मेटा एलिमेंट शामिल करें. ज़्यादा जानकारी के लिए, ऑरिजिन ट्रायल शुरू करना पोस्ट पढ़ें.

कंप्यूट प्रेशर को देखना

नीचे दिए गए कोड स्निपेट में, कंप्यूट प्रेशर में होने वाले बदलावों को मॉनिटर करने और उन पर कार्रवाई करने का तरीका बताया गया है:

// 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 पर बनाया है. इस लेख की समीक्षा रेचल एंड्रयू और थॉमस स्टीनर ने की है.