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

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

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 Pressure API की मदद से, वीडियो कॉन्फ़्रेंसिंग और वीडियो गेम बेहतर बनाए गए हैं.

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

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

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

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

वीडियो गेम

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

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

इंटरफ़ेस

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

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

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

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

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

PressureObserver

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

निर्माता

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

कंस्ट्रक्टर ज़रूरी कॉलबैक फ़ंक्शन लेता है.

कॉलबैक

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

तरीके

PressureObserver.observe(source, options): यह बताता है कि 'प्रेसुर ऑब्ज़र्वर' किस सोर्स पर नज़र रखना है और options को पैरामीटर के तौर पर देखना ज़रूरी है.

विकल्प

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

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

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

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

static PressureObserver.knownSources() (सिर्फ़ पढ़ने के लिए): उपयोगकर्ता एजेंट के जाने-पहचाने सोर्स टाइप को वर्णमाला के क्रम में दिखाएं.

पैरामीटर

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

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

PressureRecord

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

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

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

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

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

उदाहरण

नीचे दिए गए सेक्शन में, इस्तेमाल के उदाहरण दिए गए हैं.

तय करना कि एपीआई काम करता है या नहीं

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

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

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

const observer = new PressureObserver((records) => {
  /* ... */
});

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

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

observer.observe("cpu" { sampleInterval: 2_000 });

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

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

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

किसी सोर्स की जानकारी देखना बंद करने के लिए, 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);
await observer.observe('cpu', { sampleInterval: 1_000 });

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

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

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

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

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

await observer.observe('cpu', { sampleInterval: 1_000 });

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>Computeure डालें.

रिसॉर्स