एंड्रॉइड ओ storaged
के लिए समर्थन जोड़ता है, एक एंड्रॉइड मूल डेमॉन जो एंड्रॉइड डिवाइस पर स्टोरेज मेट्रिक्स एकत्र और प्रकाशित करता है।
- दैनिक डिस्कस्टैट के लिए,
storaged
समय-समय पर/sys/block/mmcblk0/stat
(eMMC स्टोरेज डिवाइस) या/sys/block/sda/stat
(गैर-eMMC डिवाइस) को पार्स करता है। - eMMC जीवनकाल के लिए,
storaged
पार्स/d/mmc0/mmc0:001/ext_csd
(यदि उपलब्ध हो)। - एप्लिकेशन I/O को दोष देने के लिए,
storaged
समय-समय पर/proc/uid_io/stats
ट्रैवर्स करता है और पार्स किए गए डेटा को बनाए रखता है, जिसमें सभी एप्लिकेशन (सिर्फ चल रहे एप्लिकेशन नहीं) का डेटा शामिल होता है। बग रिपोर्ट में एप्लिकेशन I/O उपयोग को लॉग करने के लिएdumpsys
storaged
कॉल कर सकता है।
डिस्कस्टैट (रुके हुए डिस्कस्टैट सहित) और ईएमएमसी जानकारी एंड्रॉइड इवेंट लॉग में लॉग की जाती है, जहां एक प्लेटफ़ॉर्म चेकइन सेवा लॉग एकत्र करती है।
storaged
संचालन स्वचालित रूप से होते हैं और पूरी तरह से एंड्रॉइड फ्रेमवर्क द्वारा नियंत्रित होते हैं, इसलिए आपको कोई कार्यान्वयन कार्य करने की आवश्यकता नहीं है। यह पृष्ठ storaged
के डिज़ाइन (नए इंटरफ़ेस सहित) का वर्णन करता है और कर्नेल से I/O स्थिति प्राप्त करने के लिए इसका उपयोग कैसे करें।
संग्रहित डिज़ाइन
लेखांकन और अनुमति लचीलेपन के लिए, storaged
कर्नेल मॉड्यूल के रूप में कार्यान्वित किया जाता है जो प्रति-यूआईडी I/O जानकारी लौटाता है (मानक proc/PID/io
का उपयोग करने के बजाय)। प्रत्येक I/O अनुरोध के लिए कच्चा I/O डेटा कर्नेल task_struct
में संग्रहीत और अद्यतन किया जाता रहता है, और कर्नेल किसी प्रक्रिया के बाहर निकलने पर नज़र रखता है, इसलिए यह अंतिम storaged
मतदान घटना से होने वाले I/O उपयोग को याद नहीं करता है।
मॉड्यूल कच्चे डेटा को पढ़ता है और इसे केवल तभी संसाधित करता है जब फ्रेमवर्क इसे यूआईडी अग्रभूमि/पृष्ठभूमि स्विच के बारे में सूचित करता है या जब storaged
डेमॉन एक रिपोर्ट का अनुरोध करता है। उस समय, मॉड्यूल फ्रेमवर्क और storaged
डेमॉन के साथ संचार के लिए कर्नेल से एक फ़ाइल नोड निर्यात करता है।
storaged
/proc/uid_io/stats
इंटरफ़ेस प्रस्तुत करता है, जो सिस्टम में प्रत्येक UID के लिए I/O आँकड़ों की एक सूची लौटाता है। प्रारूप है:
<uid>: <foreground read bytes> <foreground write bytes> <foreground read chars> <foreground write chars> <background read bytes> <background write bytes> <background read chars> <background write chars>
- पढ़ने/लिखने के बाइट्स एक स्टोरेज डिवाइस से I/O इवेंट हैं।
- पढ़ने/लिखने वाले वर्ण (बाइट्स में भी) पढ़ने/लिखने वाले सिस्कॉल द्वारा अनुरोधित डेटा हैं।
कर्नेल से I/O स्थिति प्राप्त करना
कर्नेल से I/O उपयोग को डंप करने के लिए -u
विकल्प के साथ storaged
कमांड का उपयोग करें।
आदेश: storaged -u
कमांड आउटपुट प्रारूप: name/uid fg_rchar fg_wchar fg_rbytes fg_wbytes bg_rchar bg_wchar bg_rbytes bg_wbytes fg_fsync bg_fsync
नोट: यह आउटपुट proc/uid_io/stats
के आउटपुट के समान है। ऐसा इसलिए है क्योंकि storaged
/proc/uid_io/stats
से डेटा प्रोसेस करता है और अपना डेटा जेनरेट करता है।
उदाहरण आउटपुट:
com.google.android.backuptransport 2269 60 0 0 1719845663 143912573 149065728 184180736 com.android.vending 2170 60 0 0 219904796 38693092 174436352 18944000