कंप्यूट प्रेशर एपीआई

अपने सिस्टम के कंप्यूट प्रेशर के बारे में जानें.

Kenneth Christiansen
Kenneth Christiansen
Arnaud (Arno) Mandy

Compute Pressure API, हाई-लेवल स्टेट ऑफ़र करता है. इनसे सिस्टम पर दबाव के बारे में पता चलता है. इसकी मदद से, लागू करने के लिए मौजूद हार्डवेयर मेट्रिक का सही इस्तेमाल किया जा सकता है. इससे यह पक्का किया जाता है कि जब तक सिस्टम को लेकर किसी तरह की परेशानी न हो, तब तक उपयोगकर्ता उसे प्रोसेस करने की सभी सुविधाओं का फ़ायदा ले पाएं.

मौजूदा स्थिति

चरण स्थिति
1. जानकारी बनाएं पूरा हुआ
2. खास जानकारी का शुरुआती ड्राफ़्ट बनाएं पूरा हुआ
3. लोगों की राय जानें और डिज़ाइन को बेहतर बनाएं प्रोसेस जारी है
4. ऑरिजिन ट्रायल पूरा जवाब
5. लॉन्च करें कंपलीट (Chrome 125)

Compute Pressure API को आज़माएं

Compute Pressure API को स्थानीय तौर पर इस्तेमाल करने के लिए, यह पेज पढ़ें.

ऑरिजिन ट्रायल के लिए रजिस्टर करें

Chrome 115 से, Compute Pressure API, ऑरिजिन ट्रायल के तौर पर उपलब्ध है. इस वर्शन के Chrome 123 (29 मई, 2024) में बंद हो जाने की उम्मीद है. यहां रजिस्टर करें.

इस्तेमाल के उदाहरण

मौजूदा Compute प्रेशर एपीआई, मुख्य रूप से वीडियो कॉन्फ़्रेंसिंग और वीडियो गेम हैं.

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

खास तौर पर, इस एपीआई के पहले वर्शन का मकसद इन बदलावों को लागू करना है.

वीडियो कॉन्फ़्रेंसिंग ऐप्लिकेशन

  • कई लोगों के साथ कॉल के दौरान दिखाए जाने वाले वीडियो फ़ीड की संख्या में बदलाव करें.
  • वीडियो प्रोसेस होने की क्वालिटी कम करें (वीडियो रिज़ॉल्यूशन, फ़्रेम प्रति सेकंड).
  • कुछ कैमरा फ़िल्टर जैसी ग़ैर-ज़रूरी वीडियो प्रोसेसिंग को छोड़ें.
  • यह विकल्प गैर-ज़रूरी ऑडियो प्रोसेसिंग की सुविधा को बंद करता है. जैसे, WebRTC की आवाज़ को कम करने की सुविधा.
  • वीडियो और ऑडियो एन्कोडिंग (WebRTC, WebCodecs या सॉफ़्टवेयर एन्कोडिंग में) में, क्वालिटी बनाम स्पीड और साइज़ बनाम स्पीड नॉब को "स्पीड" में बदलें.

वीडियो गेम

  • गेम का वीडियो (3D मॉडल, टेक्सचर, शेडर) और ऑडियो (आवाज़, साउंड इफ़ेक्ट) तैयार करने के लिए, हल्की क्वालिटी वाली ऐसेट का इस्तेमाल करें.
  • ऐसे इफ़ेक्ट बंद करें जिनसे गै़र-ज़रूरी जानकारी कम होती है. जैसे, पानी, कपड़ा, आग की ऐनिमेशन, त्वचा की चमक, चमक या फ़िज़िकल सिम्युलेशन, जिनसे गेमप्ले पर कोई असर नहीं पड़ता).
  • गेम के रेंडरिंग इंजन में क्वालिटी और स्पीड नॉब में बदलाव करें (शैडो क्वालिटी, टेक्सचर फ़िल्टर, और दूरी देखें).

तकनीकी तौर पर, ऐसा करने के लिए थर्मल की जानकारी (उदाहरण के लिए, क्या सिस्टम को इस तरह से ठंडा किया जा रहा है) और साइट पर काम कर रहे कर्मचारियों और मुख्य थ्रेड के लिए, सीपीयू की दबाव की स्थितियां पता लगाई जा सकती हैं. सिस्टम थर्मल स्टेट एक ग्लोबल स्टेट है और इस पर निगरानी करने वाली साइट के अलावा, दूसरे ऐप्लिकेशन और साइटों का असर पड़ सकता है.

इंटरफ़ेस

Compute Pressure API को इन कॉन्टेक्स्ट में चलाया जा सकता है:

  • विंडो या मुख्य थ्रेड
  • खास तौर पर काम करने वाला कर्मचारी
  • शेयर किया गया वर्कर

Compute Pressure API ने दो नए इंटरफ़ेस तय किए हैं.

PressureObserver: ऐसा ऑब्जेक्ट जो पहले से तय सैंपल इंटरवल पर, कितने भी सोर्स के कंप्यूट प्रेशर को ट्रैक करता है. Chromium में पहली बार बदलाव करने पर, "cpu" source के तौर पर दिखता है. ज़्यादा जानकारी के लिए, पैरामीटर का सेक्शन देखें. हर ऑब्ज़र्वर, सिस्टम में दबाव में होने वाले बदलावों के ट्रेंड को एसिंक्रोनस रूप से देख सकता है.

PressureRecord: बदलाव के किसी खास पल पर दबाव के रुझान के बारे में बताता है. इस तरह के ऑब्जेक्ट सिर्फ़ दो तरीकों से हासिल किए जा सकते हैं: आपके प्रेशर ऑब्ज़र्वर कॉलबैक के इनपुट के तौर पर या PressureObserver इंस्टेंस पर takeRecords() तरीके को कॉल करके.

PressureObserver

जब कोई PressureObserver ऑब्जेक्ट बनाया जाता है, तो उसे दिए गए सैंपल इंटरवल पर काम करने वाले सोर्स का दबाव देखने के लिए कॉन्फ़िगर किया जाता है. PressureObserver ऑब्जेक्ट के लाइफ़टाइम के दौरान, काम करने वाले सोर्स किसी भी समय अलग-अलग देखे जा सकते हैं या उनका निगरानी नहीं किया जा सकता है. ऑब्जेक्ट बनने के बाद, सैंपल इंटरवल में बदलाव नहीं किया जा सकता.

निर्माता

PressureObserver(callback, options): एक नया PressureObserver ऑब्जेक्ट बनाता है. यह ऑब्जेक्ट, बताए गए कॉलबैक फ़ंक्शन को तब शुरू करता है, जब मॉनिटर किए जा रहे सोर्स की वैल्यू में बदलाव होता है.

कंस्ट्रक्टर, पैरामीटर के रूप में ज़रूरी कॉलबैक फ़ंक्शन और वैकल्पिक विकल्प लेता है.

कॉलबैक

callback(): कॉलबैक को, नहीं पढ़े गए PressureRecord ऑब्जेक्ट के कलेक्शन के साथ कॉल किया जाता है.

विकल्प

PressureObserverOptions: इसमें सैंपल इंटरवल,मिलीसेकंड में sampleInterval होता है, जिस पर उपयोगकर्ता अपडेट का अनुरोध करता है.

तरीके

PressureObserver.observe(source): यह 'प्रेशर ऑब्ज़र्वर' को बताता है कि किस सोर्स की निगरानी करनी है.

PressureObserver.unobserve(source): यह 'प्रेशर ऑब्ज़र्वर' को सोर्स को ट्रैक करना बंद करने के लिए कहता है.

PressureObserver.disconnect(): यह 'प्रेशर ऑब्ज़र्वर' को सभी सोर्स को ट्रैक करना बंद करने के लिए कहता है.

PressureObserver.takeRecords(): आखिरी कॉलबैक को शुरू करने के बाद से रिकॉर्ड का क्रम दिखाता है.

static PressureObserver.supportedSources() (रीड ओनली): हार्डवेयर के हिसाब से काम करने वाले सोर्स टाइप दिखाता है.

पैरामीटर

source: वह सोर्स जिसकी निगरानी करनी है, जैसे कि "cpu". यह इस्तेमाल किए जा सकने वाले सोर्स टाइप में से कोई एक होना चाहिए.

Compute प्रेशर के मौजूदा वर्शन में, सिर्फ़ "cpu" काम करता है.

PressureRecord

Compute Pressure API का PressureRecord इंटरफ़ेस, ट्रांज़िशन के खास पल पर किसी सोर्स के दबाव के ट्रेंड के बारे में बताता है.

इंस्टेंस प्रॉपर्टी

PressureRecord.source (रीड-ओनली): उस ऑरिजिन सोर्स को दिखाने वाली स्ट्रिंग देता है जहां से रिकॉर्ड आ रहा है.

PressureRecord.state (रीड-ओनली): रिकॉर्ड की गई दबाव की स्थिति को दिखाने वाली स्ट्रिंग देता है.

PressureRecord.time (रीड-ओनली): हाई रिज़ॉल्यूशन टाइमस्टैंप को दिखाने वाली संख्या दिखाता है.

उदाहरण

क्या Compute Pressure API काम करता है?

if ('PressureObserver' in globalThis) {
  // The Compute Pressure API is supported.
}

प्रेशर ऑब्ज़र्वर बनाना

प्रेशर अपडेट होने पर, कंस्ट्रक्टर को कॉलबैक फ़ंक्शन से रन करके, प्रेशर ऑब्ज़र्वर बनाएं:

const observer = new PressureObserver(
  (records) => { /* ... */ },
  { sampleInterval: 2000 }
);

2,000 मि॰से॰ के sampleInterval सैंपल इंटरवल का मतलब है कि हर दो सेकंड में ज़्यादा से ज़्यादा अपडेट होंगे.

अगर अनुरोध किए गए सैंपल इंटरवल का अनुरोध सिस्टम से नहीं किया जा सकता. सिस्टम सबसे सही इंटरवल पर सैंपल देगा. उदाहरण के लिए, अगर 2,000 मि॰से॰ के इंटरवल का अनुरोध किया जाता है, लेकिन सिस्टम सिर्फ़ 1,000 मि॰से॰ के इंटरवल पर सैंपल दे सकता है, तो 1,000 मि॰से॰ के इंटरवल को चुना जाएगा.

प्रेशर ऑब्ज़र्वर का इस्तेमाल करना

प्रेशर ऑब्ज़र्वर को शुरू करने का सिर्फ़ एक तरीका है. हर सोर्स कॉल के लिए observer.observe(source).

observer.observe("cpu");

इस उदाहरण में, "cpu" एक ऐसा दबाव सोर्स है जिसमें हमारी दिलचस्पी है. फ़िलहाल, सिर्फ़ यही सोर्स उपलब्ध है. आने वाले समय में, इस तरह के अन्य सोर्स जनरेट किए जा सकते हैं. जैसे, "gpu", "power" या "thermals".

किसी सोर्स को ट्रैक करना बंद करने के लिए, unobserve() तरीके का इस्तेमाल करें, जैसा कि इस उदाहरण में दिखाया गया है:

observer.unobserve("cpu");

सभी सोर्स को एक साथ देखने के लिए, disconnect() तरीके का इस्तेमाल करें, जैसा कि इस उदाहरण में दिखाया गया है:

observer.disconnect();

दबाव के रिकॉर्ड हासिल किए जा रहे हैं

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

function callback(records) {
  const lastRecord = records[records.length - 1];
  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, { sampleInterval: 1000 });
await observer.observe("cpu");

उपयोगकर्ता, takeRecords() तरीके को कॉल करके PressureRecord को ज़बरदस्ती पढ़ सकता है.

PressureObserver इंटरफ़ेस का takeRecords() तरीका, प्रेशर ऑब्ज़र्वर में स्टोर किए गए PressureRecords ऑब्जेक्ट का कलेक्शन दिखाता है और उसे खाली कर देता है.

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

इस तरीके को कॉल करने से बचे हुए रिकॉर्ड की सूची मिट जाती है, ताकि कॉलबैक नहीं चलाया जा सके.

const observer = new PressureObserver(
  (records) => { /* Do something with records. */ },
  { sampleInterval: 1000 }
);

await observer.observe("cpu");

setTimeout(() => {
  // Forced records reading.
  const records = observer.takeRecords();
  observer.disconnect();
  // Do something with last records if any.
}, 2000);

हमें इस एपीआई के डिज़ाइन के बारे में बताएं

क्या एपीआई में ऐसा कुछ है जो आपकी उम्मीद के मुताबिक काम नहीं करता? क्या आपको एपीआई के इस्तेमाल के लिए, कोई तरीका या प्रॉपर्टी छूटी हुई है? संबंधित GitHub रेपो में, किसी मौजूदा समस्या की जानकारी या टिप्पणी दर्ज करें या उस पर टिप्पणी करें.

लागू करने से जुड़ी समस्या की शिकायत करें

क्या आपको Chromium को लागू करने में कोई गड़बड़ी मिली? या क्या इसे लागू करने का तरीका, खास जानकारी से अलग है? new.crbug.com पर गड़बड़ी की शिकायत करें. आप ज़्यादा से ज़्यादा जानकारी और नतीजे दोबारा बनाने के आसान निर्देश शामिल करें. साथ ही, कॉम्पोनेंट बॉक्स में Blink>PerformanceAPIs>Compute Pressure डालें.

मददगार लिंक