में सक्रिय उपयोगकर्ताओं की संख्या की गणना कैसे करें हम कर्नेल संस्करण 2.4-20 का उपयोग कर रहे हैं और हमें कर्नेल मोड में सक्रिय उपयोगकर्ताओं की संख्या गिनने की आवश्यकता है। उद्देश्य शेड्यूलर को बदलना है, इसलिए हम शेड्यूल में हैं, शेड्यूल() फ़ंक्शन को संशोधित करना।कर्नेल
हम क्या करते हैं उपयोगकर्ताओं को list_for_each मैक्रो में गिनना है।
list_for_each(tmp, &runqueue_head) {
p = list_entry(tmp, struct task_struct, run_list);
if (can_schedule(p, this_cpu)) {
if (unique(p->uid)) add_new_user(p->uid);
int weight = goodness(p, this_cpu, prev->active_mm);
if (weight > c)
c = weight, next = p;
}
}
जो मूल रूप से एक सूची में अद्वितीय उपयोगकर्ताओं को जोड़ रहा है। हालांकि, हमें यादृच्छिक परिणाम मिलते हैं। क्या इस समस्या को हल करने का कोई ठोस तरीका है?
धन्यवाद।
'यादृच्छिक परिणाम' से आपका क्या मतलब है? – ArjunShankar
सबसे पहले हमने उपयोगकर्ताओं को भलाई() फ़ंक्शन में गिना, वहां हमारे पास बिल्कुल मनमानी संख्याएं थीं (भले ही हमारे पास 4 उपयोगकर्ता एक ही समय में चल रहे थे, हम परिणामस्वरूप 1 उपयोगकर्ता प्राप्त कर सकते थे)। शेड्यूल() में, हमारे पास लगातार मूल्य होते हैं लेकिन हमें यकीन नहीं है, क्योंकि शेड्यूल() अक्सर चल रहा है, हमें नमूने लेने की आवश्यकता है (एक बार 5000 मोड़ में)। मुझे लगता है कि कर्नेल में कोई फ़ील्ड नहीं है जिसमें वर्तमान सक्रिय उपयोगकर्ता हैं? यदि नहीं है, तो उन्हें गिनने का सबसे अच्छा तरीका क्या है? आपके प्रतिक्रिया के लिए धन्येवाद। –
स्पष्टीकरण के लिए धन्यवाद। मुझे इसका जवाब नहीं पता। मेरा इरादा यह इंगित करना था कि सवाल पूरी तरह स्पष्ट नहीं था। मैं इस सवाल में इसे संपादित करने का सुझाव दूंगा। सौभाग्य! – ArjunShankar