दर-मोनोटोनिक शेड्यूलिंग

कंप्यूटर विज्ञान में, दर-मोनोटोनिक शेड्यूलिंग (आरएमएस) एक प्राथमिकता असाइनमेंट एल्गोरिदम है जिसका उपयोग स्थिर-प्राथमिकता शेड्यूलिंग क्लास के साथ रीयल-टाइम ऑपदरिंग सिस्टम (आरटीओएस) में किया जाता है। स्थैतिक प्राथमिकताएँ कार्य की चक्र अवधि के अनुसार निर्दिष्ट की जाती हैं, इसलिए छोटी चक्र अवधि के परिणामस्वरूप उच्च कार्य प्राथमिकता प्राप्त होती है।

ये ऑपदरिंग सिस्टम आम तौर पर पूर्वव्यापी होते हैं और प्रतिक्रिया समय के संबंध में नियतात्मक सुविधाएं होती हैं। दर मोनोटोनिक विश्लेषण का उपयोग उन प्रणालियों के साथ संयोजन में किया जाता है जो किसी विशेष अनुप्रयोग के लिए शेड्यूलिंग सुविधाएं प्रदान करते हैं।

परिचय
दर-मोनोटोनिक विश्लेषण का एक सरल संस्करण मानता है कि थ्रेड्स में निम्नलिखित गुण हैं:


 * कोई संसाधन साझाकरण नहीं (प्रक्रियाएँ संसाधनों को साझा नहीं करती हैं, उदाहरण के लिए एक हार्डवेयर संसाधन, एक कतार, या किसी भी प्रकार का सेमाफोर अवरोधन या गैर-अवरुद्ध (व्यस्त-प्रतीक्षा)) आदि।
 * नियतात्मक समयबद्धन वास्तव में अवधि के बराबर होती हैं।
 * स्थिर प्राथमिकताएं (उच्चतम स्थिर प्राथमिकता वाला कार्य जो तत्काल चलने योग्य है, अन्य सभी कार्यों को शीघ्रता से पूरा करता है)।
 * दर मोनोटोनिक अधिवेशन के अनुसार सौंपी गई स्थिर प्राथमिकताएं (छोटी अवधि / समय सीमा के साथ कार्य उच्च प्राथमिकता दी जाती हैं)।
 * प्रसंग परिवर्तन समय और अन्य थ्रेड संचालन स्वतंत्र हैं और मॉडल पर कोई प्रभाव नहीं पड़ता है।

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

इष्टतमता
दर-मोनोटोनिक प्राथमिकता असाइनमेंट दी गई मान्यताओं के तहत इष्टतम है, जिसका अर्थ है कि यदि कोई स्थिर-प्राथमिकता शेड्यूलिंग एल्गोरिथ्म सभी समय सीमा को पूरा कर सकता है, तो दर-मोनोटोनिक एल्गोरिथ्म भी हो सकता है. समय सीमा-मोनोटोनिक शेड्यूलिंग एल्गोरिथ्म भी समान अवधि और समय सीमा के साथ इष्टतम है, वास्तव में इस मामले में एल्गोरिदम समान हैं; के अतिरिक्त, समय-सीमा-मोनोटोनिक शेड्यूलिंग इष्टतम है जब समय सीमा अवधि से कम होती है। उस कार्य मॉडल के लिए जिसमें समय सीमा अवधि से अधिक हो सकती है, ऑड्सली का एल्गोरिथ्म इस मॉडल के लिए एक सटीक समयबद्धता परीक्षण के साथ संपन्न है, एक इष्टतम प्राथमिकता असाइनमेंट मिलता है।

कम से कम ऊपरी सीमा
लियू और लेलैंड ( 1973 ) ने प्रमाणित किया कि अद्वितीय अवधि के साथ $n$ आवधिक कार्यों के एक सेट के लिए, एक व्यवहार्य अनुसूची जो हमेशा समय सीमा को पूरा करेगी यदि सीपीयू उपयोग एक विशिष्ट सीमा से नीचे है (कार्यों की संख्या के आधार पर)। आरएमएस के लिए समय-निर्धारण परीक्षण है:
 * $$U = \sum_{i=1}^{n} {U_i} = \sum_{i=1}^{n} \frac{C_i}{T_i} \leq n({2}^{1/n} - 1)$$

जहां $U$ उपयोग कारक है, $C_{i}$ प्रक्रिया $i$ के लिए गणना समय है, $T_{i}$ प्रक्रिया $i$ के लिए रिलीज़ अवधि (एक अवधि बाद की समय सीमा के साथ) है, और $n$ निर्धारित की जाने वाली प्रक्रियाओं की संख्या है। उदाहरण के लिए, दो प्रक्रियाओं के लिए $U ≤ 0.8284$। जब प्रक्रियाओं की संख्या अनंत की ओर प्रवृत्त होती है, तो यह अभिव्यक्ति इस ओर प्रवृत्त होगी:


 * $$\lim_{n \rightarrow \infty} n(\sqrt[n]{2} - 1) = \ln 2 \approx 0.693147\ldots$$

इसलिए, $${n} \geq {10}$$ होने पर एक मोटा अनुमान यह है कि यदि कुल सीपीयू उपयोग, $U$, 70% से कम है तो आरएमएस सभी समय सीमा को पूरा कर सकता है। सीपीयू का अन्य 30% निम्न-प्राथमिकता, गैर-वास्तविक समय कार्यों के लिए समर्पित किया जा सकता है। $n$ के छोटे मानों के लिए या ऐसे मामलों में जहां $U$ इस अनुमान के करीब है, परिकलित उपयोग सीमा का उपयोग किया जाना चाहिए।

व्यवहार में, $${i^{th}}$$ प्रक्रिया के लिए, $${C_i}$$ को सबसे खराब स्थिति (यानी सबसे लंबी) गणना समय का प्रतिनिधित्व करना चाहिए और $${T_i}$$ को सबसे खराब स्थिति की समय सीमा (यानी सबसे छोटी अवधि) का प्रतिनिधित्व करना चाहिए जिसमें सभी प्रसंस्करण होना चाहिए।

हार्मोनिक कार्य सेट के लिए ऊपरी सीमा
लियू और लेलैंड ने नोट किया कि इस सीमा को 1.0 के अधिकतम संभव मान तक शिथिल किया जा सकता है, यदि कार्यों के लिए $${T_m}$$, $${T_i}$$ जहां $${T_m} {>} {T_i}$$और $$i = 1...m-1$$, $${T_m}$$ एक पूर्णांक गुणक है $${T_i}$$, जिसका अर्थ यह है कि सभी कार्यों की एक अवधि होती है जो न केवल सबसे छोटी अवधि का गुणज होती है, $${T_1}$$, बल्कि इसके बजाय किसी भी कार्य की अवधि सभी छोटी अवधियों का गुणज होती है। इसे हार्मोनिक कार्य सेट के रूप में जाना जाता है। इसका एक उदाहरण होगा$$[{T_1},{T_2},{T_3},{T_4}] = [1, 3, 6, 12]$$। लियू और लेलैंड द्वारा यह स्वीकार किया गया है कि एक सामंजस्यपूर्ण कार्य निर्धारित करना हमेशा संभव नहीं होता है और व्यवहार में अन्य शमन उपाय, जैसे कि सॉफ्ट-टाइम समय सीमा वाले कार्यों के लिए बफरिंग या उच्च सीमा की अनुमति देने के लिए गतिशील प्राथमिकता असाइनमेंट दृष्टिकोण का उपयोग किया जा सकता है।

हार्मोनिक श्रृंखलाओं का सामान्यीकरण
कुओ और मोक ने दिखाया कि $K$ हार्मोनिक कार्य उपसमुच्चय (जिसे हार्मोनिक श्रृंखला के रूप में जाना जाता है) से बने कार्य सेट के लिए, सबसे कम ऊपरी सीमा परीक्षण बन जाता है:
 * $$U = \sum_{i=1}^{n} \frac{C_i}{T_i} \leq K({2}^{1/K} - 1)$$

ऐसे उदाहरण में जहां कोई भी कार्य अवधि दूसरे का पूर्णांक गुणज नहीं है, कार्य सेट को आकार 1 के $n$ हार्मोनिक कार्य उपसमुच्चय से बना माना जा सकता है और इसलिए $${K}{=}{n}$$ जो इस सामान्यीकरण को लियू और लेलैंड की न्यूनतम ऊपरी सीमा के बराबर बनाता है। जब $${K}{=}{1}$$, ऊपरी सीमा 1.0 हो जाती है, जो पूर्ण उपयोग का प्रतिनिधित्व करती है।

स्टोकेस्टिक सीमा
यह दिखाया गया है कि एक यादृच्छिक रूप से उत्पन्न आवधिक कार्य प्रणाली आमतौर पर सभी समय सीमा को पूरा करेगी जब उपयोग 88% या उससे कम हो, हालांकि यह तथ्य सटीक कार्य आँकड़ों को जानने पर निर्भर करता है (अवधि, समय सीमा) जिसे सभी कार्य सेटों के लिए सुनिश्चित नहीं किया जा सकता है, और कुछ स्थितियों में लेखकों ने पाया कि उपयोग लियू और लेलैंड द्वारा प्रस्तुत कम से कम ऊपरी सीमा तक पहुंच गया है।

अतिपरवलयिक बाध्य
अतिपरवलयिक बाध्य लियू और लेलैंड द्वारा प्रस्तुत की तुलना में समयबद्धता के लिए एक सख्त पर्याप्त स्थिति है:
 * $$\prod_{i=1}^n (U_i +1) \leq 2$$,

जहाँ $U_{i}$ प्रत्येक कार्य के लिए सीपीयू उपयोग है। यह सबसे दृण ऊपरी सीमा है जिसे केवल व्यक्तिगत कार्य उपयोग कारकों का उपयोग करके पाया जा सकता है।

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

पूर्वक्रय को अक्षम करना

 * ई> और  प्रिमिटिव जो सीपीयू को लॉक करते हैं, रीयल-टाइम कर्नेल में बाधित होते हैं, उदा। माइक्रोसी/ओएस-द्वितीय
 * ई> प्रिमिटिव्स का परिवार जो डिवाइस के लॉकिंग को बाधित करता है (फ्रीबीएसडी 5.x/6.x),

प्राथमिकता वंशानुक्रम
प्रायोरिटी इनहेरिटेंस एल्गोरिदम को दो मापदंडों द्वारा चित्रित किया जा सकता है। सबसे पहले, विरासत आलसी है (केवल जब आवश्यक हो) या तत्काल (कोई संघर्ष होने से पहले प्राथमिकता बढ़ाएं)। दूसरा वंशानुक्रम आशावादी (न्यूनतम राशि को बढ़ावा देना) या निराशावादी (न्यूनतम राशि से अधिक बढ़ावा देना) है:
 * बुनियादी प्राथमिकता विरासत प्रोटोकॉल उस कार्य की प्राथमिकता को बढ़ावा देता है जो संसाधन को उस कार्य की प्राथमिकता में रखता है जो अनुरोध किए जाने के समय उस संसाधन का अनुरोध करता है। संसाधन के जारी होने पर, पदोन्नति से पहले मूल प्राथमिकता स्तर बहाल हो जाता है। यह विधि गतिरोध को नहीं रोकती है और जंजीर अवरोधन से ग्रस्त है। अर्थात्, यदि एक उच्च प्राथमिकता वाला कार्य क्रम में कई साझा संसाधनों तक पहुँचता है, तो उसे प्रत्येक संसाधन के लिए कम प्राथमिकता वाले कार्य पर प्रतीक्षा (ब्लॉक) करनी पड़ सकती है। लिनक्स कर्नेल के रीयल-टाइम पैच में इस सूत्र का कार्यान्वयन शामिल है।
 * प्राथमिकता छत प्रोटोकॉल प्रत्येक सेमाफोर को सीलिंग प्रायोरिटी निर्दिष्ट करके बेसिक प्रायोरिटी इनहेरिटेंस प्रोटोकॉल को बढ़ाता है, जो उस सेमाफोर तक पहुंचने वाले उच्चतम कार्य की प्राथमिकता है। एक कार्य निम्न प्राथमिकता वाले महत्वपूर्ण खंड को खाली नहीं कर सकता यदि उसकी प्राथमिकता उस अनुभाग के लिए अधिकतम प्राथमिकता से कम है। यह विधि गतिरोध को रोकती है और अवरुद्ध समय को एक कम प्राथमिकता वाले महत्वपूर्ण खंड की अधिकतम लंबाई तक सीमित करती है। यह विधि उप-इष्टतम हो सकती है, जिसमें यह अनावश्यक अवरोध पैदा कर सकती है। प्राथमिकता सीलिंग प्रोटोकॉल VxWorks रीयल-टाइम कर्नेल में उपलब्ध है। इसे हाईएस्ट लॉकर्स प्रायोरिटी प्रोटोकॉल (HLP) के नाम से भी जाना जाता है।

व्यावहारिक रूप से आलसी और तत्काल एल्गोरिदम के बीच कोई गणितीय अंतर नहीं है (लियू-लेलैंड सिस्टम उपयोगिता बाध्यता के संदर्भ में), और तत्काल एल्गोरिदम लागू करने के लिए अधिक कुशल हैं, और इसलिए वे अधिकांश व्यावहारिक प्रणालियों द्वारा उपयोग किए जाते हैं।

बुनियादी प्राथमिकता वंशानुक्रम के उपयोग का एक उदाहरण मंगल पथप्रदर्शक  रीसेट बग से संबंधित है  जो सेमाफोर के लिए क्रिएशन फ्लैग को बदलकर मंगल ग्रह पर तय किया गया था ताकि प्राथमिकता इनहेरिटेंस को सक्षम किया जा सके।

इंटरप्ट सर्विस रूटीन
सभी इंटरप्ट सर्विस रूटीन (ISRs), चाहे उनके पास एक कठिन वास्तविक समय की समय सीमा हो या नहीं, उन मामलों में शेड्यूल करने की क्षमता निर्धारित करने के लिए आरएमएस विश्लेषण में शामिल किया जाना चाहिए जहां ISRs की प्राथमिकताएँ सभी शेड्यूलर-नियंत्रित कार्यों से ऊपर हैं। एक ISR को आरएमएस नियमों के तहत पहले से ही उचित प्राथमिकता दी जा सकती है यदि इसकी प्रसंस्करण अवधि सबसे छोटी, गैर-ISR प्रक्रिया से कम है। हालांकि, एक महत्वपूर्ण समय सीमा के साथ किसी भी गैर-आईएसआर प्रक्रिया अवधि की तुलना में लंबी अवधि/समय सीमा के साथ एक आईएसआर आरएमएस के उल्लंघन में परिणाम देता है और कार्य सेट की समयबद्धता निर्धारित करने के लिए गणना की गई सीमा के उपयोग को रोकता है।

गलत प्राथमिकता वाले आईएसआर को कम करना
गलत-प्राथमिकता वाले ISR को कम करने का एक तरीका यह है कि यदि संभव हो तो ISR की अवधि को कम से कम अवधि के बराबर करके विश्लेषण को समायोजित किया जाए। इस छोटी अवधि को लागू करने के परिणामस्वरूप प्राथमिकता दी जाती है जो आरएमएस के अनुरूप होती है, लेकिन इसके परिणामस्वरूप आईएसआर के लिए एक उच्च उपयोग कारक होता है और इसलिए कुल उपयोग कारक के लिए, जो अभी भी स्वीकार्य सीमा से नीचे हो सकता है और इसलिए समयबद्धता सिद्ध की जा सकती है। एक उदाहरण के रूप में, एक हार्डवेयर ISR पर विचार करें जिसका संगणना समय है, $${C_{isr}}$$ 500 माइक्रोसेकंड और एक अवधि की, $${T_{isr}}$$, 4 मिलीसेकंड का। यदि सबसे छोटे अनुसूचक-नियंत्रित कार्य की अवधि है, $${T_1}$$ 1 मिलीसेकंड का, तब ISR की प्राथमिकता अधिक होगी, लेकिन दर कम होगी, जो आरएमएस का उल्लंघन करती है। शेड्यूलेबिलिटी साबित करने के प्रयोजनों के लिए, सेट करें $${T_{isr}}={T_1}$$ और ISR के लिए उपयोग कारक की पुनर्गणना करें (जो कुल उपयोग कारक को भी बढ़ाता है)। इस मामले में, $${U_{isr}}{=}{C_{isr}}/{T_{isr}}$$ से बदल जाएगा $${0.5 ms}/{4 ms}{=}0.125$$ को $${0.5 ms}/{1 ms}{=}0.5$$. इस उपयोग कारक का उपयोग कार्य सेट के लिए कुल उपयोग कारक को जोड़ते समय और शेड्यूल करने की क्षमता को साबित करने के लिए ऊपरी सीमा से तुलना करने के लिए किया जाएगा। इस बात पर जोर दिया जाना चाहिए कि ISR की अवधि को समायोजित करना केवल विश्लेषण के लिए है और ISR की सही अवधि अपरिवर्तित रहती है।

एक गलत-प्राथमिकता वाले ISR को कम करने के लिए एक अन्य तरीका ISR का उपयोग केवल एक नया सेमाफोर/म्यूटेक्स सेट करने के लिए करना है, जबकि समय-गहन प्रसंस्करण को एक नई प्रक्रिया में ले जाना है जिसे आरएमएस का उपयोग करके उचित प्राथमिकता दी गई है और नए सेमाफोर/म्यूटेक्स पर ब्लॉक हो जाएगा। शेड्यूलेबिलिटी का निर्धारण करते समय, ISR गतिविधि के कारण सीपीयू उपयोग के मार्जिन को सबसे कम ऊपरी सीमा से घटाया जाना चाहिए। नगण्य उपयोग वाले आईएसआर को नजरअंदाज किया जा सकता है।

उदाहरण 1
आरएमएस के तहत, P2 की उच्चतम दर (यानी सबसे कम अवधि) है और इसलिए उसकी सर्वोच्च प्राथमिकता होगी, उसके बाद P1 और अंत में P3 होगी।

कम से कम ऊपरी बाउंड
उपयोगिता होगी: $$\frac{1}{8} + \frac{2}{5} + \frac{2}{10} = 0.725$$.

के लिए पर्याप्त स्थिति $$3\,$$ प्रक्रियाएं, जिसके तहत हम यह निष्कर्ष निकाल सकते हैं कि सिस्टम शेड्यूल करने योग्य है:


 * $${U_{lub}} = 3(2^\frac{1}{3} - 1) = 0.77976 > 0.693\ldots

(0.693 \text{ is utilization bound for RMS for } n=\infty \ldots )$$ क्योंकि $$0.77976 \geq 0.725$$, और क्योंकि कम से कम ऊपरी सीमा से नीचे होना एक पर्याप्त शर्त है, सिस्टम को शेड्यूल करने योग्य होने की गारंटी है।

उदाहरण 2
आरएमएस के तहत, P2 की उच्चतम दर (यानी सबसे कम अवधि) है और इसलिए इसकी सर्वोच्च प्राथमिकता होगी, इसके बाद P3 और अंत में P1 होगी।

कम से कम ऊपरी बाउंड
लियू और लेलैंड बाउंड का उपयोग करना, जैसा कि उदाहरण 1 में है, के लिए पर्याप्त स्थिति $$3\,$$ प्रक्रियाएं, जिसके तहत हम यह निष्कर्ष निकाल सकते हैं कि कार्य निर्धारित करने योग्य है, बनी हुई है:


 * $${U_{lub}} = 3(2^\frac{1}{3} - 1) = 0.77976$$

कुल उपयोग होगा: $$\frac{3}{16} + \frac{2}{5} + \frac{2}{10} = 0.7875$$.

तब से $$0.77976 {<} 0.7875$$ लियू और लेलैंड बाउंड द्वारा सिस्टम को शेड्यूल करने योग्य नहीं होने के लिए निर्धारित किया गया है।

हाइपरबोलिक बाउंड
सख्त हाइपरबोलिक बाउंड का उपयोग निम्नानुसार है:


 * $$\prod_{i=1}^n (U_i +1) = (\frac{3}{16}+1) * (\frac{2}{5}+1) * (\frac{2}{10}+1) = 1.995 \leq 2$$

यह पाया गया है कि कार्य सेट शेड्यूल करने योग्य है।

उदाहरण 3
आरएमएस के तहत, P2 की उच्चतम दर (यानी सबसे कम अवधि) है और इसलिए इसकी सर्वोच्च प्राथमिकता होगी, इसके बाद P3 और अंत में P1 होगी।

कम से कम ऊपरी बाउंड
लियू और लेलैंड बाउंड का उपयोग करना, जैसा कि उदाहरण 1 में है, के लिए पर्याप्त स्थिति $$3\,$$ प्रक्रियाएं, जिसके तहत हम यह निष्कर्ष निकाल सकते हैं कि कार्य निर्धारित करने योग्य है, बनी हुई है:


 * $${U_{lub}} = 3(2^\frac{1}{3} - 1) = 0.77976$$

कुल उपयोग होगा: $$\frac{7}{32} + \frac{2}{5} + \frac{2}{10} = 0.81875$$.

तब से $$0.77976 {<} 0.81875$$ लियू और लेलैंड बाउंड द्वारा सिस्टम को शेड्यूल करने योग्य नहीं होने के लिए निर्धारित किया गया है।

हाइपरबोलिक बाउंड
सख्त हाइपरबोलिक बाउंड का उपयोग निम्नानुसार है:


 * $$\prod_{i=1}^n (U_i +1) = (\frac{7}{32}+1) * (\frac{2}{5}+1) * (\frac{2}{10}+1) = 2.0475$$

तब से $$2.0 {<} 2.0475$$ सिस्टम को हाइपरबोलिक बाउंड द्वारा शेड्यूल करने योग्य नहीं होने के लिए निर्धारित किया गया है।

हार्मोनिक टास्क सेट विश्लेषण
क्योंकि $${T_3}={2{T_2}}$$, कार्य 2 और 3 को एक हार्मोनिक कार्य सबसेट माना जा सकता है। टास्क 1 अपना हार्मोनिक टास्क सबसेट बनाता है। इसलिए, हार्मोनिक कार्य सबसेट की संख्या, $K$, है $2$.


 * $${U_{lub,harmonic}} = K(2^\frac{1}{K} - 1) = 2(2^\frac{1}{2} - 1) = 0.828$$

ऊपर (0.81875) परिकलित कुल उपयोग कारक का उपयोग करते हुए, चूंकि $$0.81875 < 0.828$$ सिस्टम शेड्यूल करने योग्य होने के लिए निर्धारित है।

यह भी देखें

 * डेडलाइन-मोनोटोनिक शेड्यूलिंग
 * Deos, एक समय और स्थान विभाजित रीयल-टाइम ऑपदरिंग सिस्टम जिसमें वर्किंग दर मोनोटोनिक शेड्यूलर होता है।
 * गतिशील प्राथमिकता निर्धारण
 * जल्द से जल्द समय सीमा पहले निर्धारण
 * RTEMS, एक ओपन सोर्स रीयल-टाइम ऑपदरिंग सिस्टम है जिसमें वर्किंग दर मोनोटोनिक शेड्यूलर है।
 * निर्धारण (कंप्यूटिंग)

अग्रिम पठन

 * , Chapter 6.
 * , Chapter 6.
 * , Chapter 6.

बाहरी संबंध

 * Mars Pathfinder Bug from Research @ Microsoft
 * What really happened on Mars Rover Pathfinder by Mike Jones from The Risks Digest, Vol. 19, Issue 49
 * The actual reason for the Mars Pathfinder Bug, by those who actually dealt with it, rather than someone whose company and therefore stock value depended upon the description of the problem, or someone who heard someone talking about the problem.