अधिकांश सामान्य एंड्रॉइड ऑप्टिमाइज़ेशन मिथक डिबंक हुए

Play Store पर ऐप्स, लेकिन एंड्रॉइड फ़ोरम पर जारी ऑप्टिमाइज़ेशन स्क्रिप्ट आमतौर पर अच्छी तरह से इरादे वाली होती हैं, यह सिर्फ इतना होता है कि डेवलपर को गलत सूचना दी जा सकती है, या बस विभिन्न ऑप्टिमाइज़ेशन ट्वीक के साथ प्रयोग किया जा सकता है। दुर्भाग्य से, स्नोबॉल प्रभाव का एक प्रकार होता है, खासकर 'ऑल-इन-वन' अनुकूलन लिपियों में। वास्तव में हो सकता है कि कुछ मुट्ठी भर ट्विक्स हो कुछ कुछ , जबकि एक स्क्रिप्ट में दो सेट का एक सेट बिल्कुल कुछ भी नहीं कर सकता है - फिर भी ये स्क्रिप्ट जादू की गोलियों के रूप में पारित हो जाती हैं, बिना किसी वास्तविक जांच के क्या काम करता है, और क्या नहीं।



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

इस विशेष लेख में, हम 'के लिए सबसे आम सिफारिशों में से कुछ पर प्रकाश डाला जाएगा के अनुकूलन ' Android प्रदर्शन, और क्या वे केवल एक मिथक हैं, या डिवाइस प्रदर्शन के लिए एक वैध ट्विस्ट है।



विनिमय

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



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



कुछ अनुकूलन उत्साही कह सकते हैं कि स्वैप ने कोई समस्या पेश नहीं की, लेकिन यह प्रदर्शन को बढ़ाता नहीं है - यह अंतर्निहित एंड्रॉइड तंत्र है lowmemorykiller , जो नियमित रूप से फूला हुआ, उच्च प्राथमिकता वाली प्रक्रियाओं को मार देगा, जिनका उपयोग नहीं किया जा रहा है। LMK को विशेष रूप से कम-मेमोरी स्थितियों को संभालने के लिए डिज़ाइन किया गया था, से मंगाई गई है kswapd प्रक्रिया, और आम तौर पर उपयोगकर्ता अंतरिक्ष प्रक्रियाओं को मारता है। इससे अलग है OOMkiller (आउट-ऑफ-मेमोरी किलर), लेकिन यह एक अलग विषय है।

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

zRAM - आउटडेटेड और नो लॉन्ग एफिशिएंट

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



zRAM का उद्देश्य एंट्री-लेवल बजट-रेंज मल्टी-कोर SoCs था, जैसे कि MTK चिपसेट और 512 MB RAM का उपयोग करने वाले डिवाइस। बहुत सस्ते चीनी फोन, मूल रूप से। मूल रूप से क्या करता है zRAM एन्क्रिप्शन स्ट्रीम के माध्यम से कर्नेल को अलग करता है।

जब zRAM का उपयोग पुराने उपकरणों पर a के साथ किया जाता है अकेला कोर , भले ही zRAM को ऐसे उपकरणों पर अनुशंसित किया जाता है, बड़ी मात्रा में लैग क्रॉप करते हैं। यह भी KSM प्रौद्योगिकी के साथ होता है ( कर्नेल समान पृष्ठ विलय) जो खाली स्थान के लिए बोली में समान स्मृति पृष्ठों को जोड़ती है। यह वास्तव में Google द्वारा अनुशंसित है, लेकिन पुराने उपकरणों पर अधिक से अधिक अंतराल की ओर जाता है, क्योंकि लगातार सक्रिय कोर थ्रेड स्मृति से डुप्लिकेट पृष्ठों की खोज के लिए लगातार चल रहे हैं। मूल रूप से, अनुकूलन ट्वीक को चलाने की कोशिश डिवाइस को और भी धीमा कर देती है, विडंबना यह है कि।

सीडर - एंड्रॉइड 3.0 के बाद से आउटडेटेड

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

एंड्रॉइड के लिए सीडर ऐप

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

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

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

एंड्रॉइड 3.0 के बाद Google ने इस बग को तोड़ दिया, फिर भी किसी कारण से, सीडर अभी भी पॉप अप करता है 'अनुशंसित tweaks' Android प्रदर्शन अनुकूलन के लिए सूचियाँ। इसके अलावा, Seeder ऐप में sEFix जैसे कुछ एनालॉग्स हैं जिनमें Seeder की कार्यक्षमता शामिल है, चाहे वह उसी का उपयोग कर रहा हो rngd या विकल्प haveged , या यहां तक ​​कि / सिर्फ़ / देव / urandom और / dev / random के बीच सहानुभूति है। यह आधुनिक एंड्रॉइड सिस्टम के लिए बिल्कुल व्यर्थ है।

इसका कारण यह है कि नए Android संस्करण तीन मुख्य घटकों में / dev / random / का उपयोग करते हैं - libcrypto SSL कनेक्शन के एन्क्रिप्शन के लिए, SSH कुंजियाँ, आदि बनाकर WPA_supplication / hostapd जो WEP / WPA कुंजियाँ बनाता है, और अंत में, EXT2 / EXT3 / EXT4 फाइल सिस्टम बनाने में ID जनरेट करने के लिए मुट्ठी भर पुस्तकालयों का निर्माण करता है।

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

Odex

Android उपकरणों पर शेयर फर्मवेयर हमेशा बहुत odex। इसका मतलब यह है कि एंड्रॉइड ऐप्स के लिए मानक पैकेज के साथ-साथ एपीके / सिस्टम / ऐप / और / सिस्टम / प्राइवेट-ऐप / में पाए जाने वाले एपीके प्रारूप में, .odex एक्सटेंशन के साथ एक ही फ़ाइल नाम के होते हैं। Odex फ़ाइलों में अनुकूलित बाईटेकोड अनुप्रयोग होते हैं जो पहले से ही सत्यापनकर्ता और अनुकूलक वर्चुअल मशीन से गुजर चुके होते हैं, फिर एक अलग फ़ाइल में दर्ज होता है जैसे कुछ dexopt उपकरण।

इसलिए odex फाइलें वर्चुअल मशीन को ऑफलोड करने के लिए होती हैं और odexed एप्लिकेशन को लॉन्च करने के लिए एक स्पेड की पेशकश करती हैं - नीचे की ओर, ODEX फाइलें फर्मवेयर में संशोधन को रोकती हैं, और अपडेट के साथ समस्याएँ पैदा करती हैं, इसलिए इस कारण से कई कस्टम रोम जैसे LineageOS वितरित किए जाते हैं ODEX के बिना

ODEX फ़ाइलों को बनाना कई तरीकों से किया जाता है, जैसे Odexer टूल का उपयोग - समस्या यह है कि इसका शुद्ध रूप से एक प्लेसबो प्रभाव है। जब आधुनिक एंड्रॉइड सिस्टम / सिस्टम निर्देशिका में odex फाइलें नहीं मिलती हैं, तो सिस्टम वास्तव में उन्हें बनाएगा और उन्हें / system / dalvik-cache / निर्देशिका में रखेगा। यह ठीक वैसा ही है जब उदाहरण के लिए, आप एक नया एंड्रॉइड संस्करण फ्लैश करते हैं और यह थोड़ी देर के लिए संदेश 'व्यस्त, अनुकूलन अनुप्रयोग' देता है।

Lowmemorykiller tweaks

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

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

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

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

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

उदाहरण के लिए, मानक रैम सीमाओं पर संचालित होता है - 4, 8, 12, 24, 32 और 40 एमबी, और जब 40 एमबी का मुफ्त संग्रहण स्थान भर जाता है, तो कैश्ड ऐप्स में से एक जो मेमोरी में लोड होता है लेकिन नहीं चल रहा है समाप्त कर दिया जाएगा।

तो मूल रूप से, एंड्रॉइड में हमेशा कम से कम 40 एमबी की उपलब्ध मेमोरी होगी, जो पहले एक और एप्लिकेशन को समायोजित करने के लिए पर्याप्त है lowmemorykiller इसकी सफाई की प्रक्रिया शुरू होती है - जिसका अर्थ है कि उपयोगकर्ता अनुभव के साथ हस्तक्षेप किए बिना एंड्रॉइड हमेशा उपलब्ध रैम का अधिकतम उपयोग करने की पूरी कोशिश करेगा।

अफसोस की बात यह है कि कुछ होमब्रॉव उत्साही लोगों ने सिफारिश करना शुरू कर दिया है कि एलएमके को किक करने से पहले मूल्य को 100 एमबी तक बढ़ा दिया जाता है। अब उपयोगकर्ता वास्तव में होगा। खोना RAM (100 - 40 = 60), इसलिए बैक-एंड ऐप्स को संग्रहीत करने के लिए इस स्थान का उपयोग करने के बजाय, सिस्टम इस मेमोरी की मात्रा को बनाए रखेगा नि: शुल्क , इसके लिए बिल्कुल कोई उद्देश्य नहीं है।

एलकेएम ट्यूनिंग उपयोगी हो सकता है 512 RAM के साथ पुराने उपकरणों के लिए, लेकिन अब कौन है? 2GB आधुनिक 'बजट श्रेणी' है, यहाँ तक कि 4GB RAM डिवाइस भी इन दिनों 'मध्यम-श्रेणी' के रूप में दिखाई दे रहे हैं, इसलिए LMK ट्वीक वास्तव में पुराना और बेकार है।

आई / ओ ट्वाइक्स

एंड्रॉइड के लिए बहुत सारी अनुकूलन स्क्रिप्ट में आप अक्सर ऐसे ट्वीक्स पाते हैं जो I / O सबसिस्टम को संबोधित करते हैं। उदाहरण के लिए, पर एक नज़र डालते हैं वज्र! स्क्रिप्ट, जिसमें ये पंक्तियाँ हैं:

इको 0> $ i / कतार / घूर्णी; इको 1024> $ i / कतार / nr_requests;

पहली पंक्ति SSD से निपटने के लिए I / O अनुसूचक निर्देश देगी, और दूसरी पंक्ति I / O का अधिकतम आकार 128 से 1024 तक बढ़ाती है - क्योंकि $ i चर में ब्लॉक उपकरणों के पेड़ के लिए एक पथ शामिल है / sys, और स्क्रिप्ट एक लूप में चलती है।

उसके बाद, आपको CFQ अनुसूचक से संबंधित एक पंक्ति मिलती है:

इको 1> $ i / कतार / iosched / back_seek_penalty; इको 1> $ i / कतार / iosched / low_latency; इको 1> $ i / कतार / iosched / slice_idle;

इसके बाद अधिक पंक्तियाँ हैं जो अन्य योजनाकारों से संबंधित हैं, लेकिन अंततः, पहले दो आदेश व्यर्थ हैं क्योंकि:

एक आधुनिक लिनक्स कर्नेल यह समझने में सक्षम है कि यह किस प्रकार के भंडारण माध्यम के साथ डिफ़ॉल्ट रूप से काम कर रहा है।

एक लंबी इनपुट-आउटपुट कतार ( जैसे 1024) एक आधुनिक एंड्रॉइड डिवाइस पर बेकार है, वास्तव में डेस्कटॉप पर भी इसका अर्थहीन - इसकी वास्तव में केवल सिफारिश की गई है भारी शुल्क सर्वर । आपका फ़ोन एक भारी शुल्क वाला लिनक्स सर्वर नहीं है।

एंड्रॉइड डिवाइस के लिए, वास्तव में इनपुट-आउटपुट और किसी मैकेनिकल ड्राइवर में कोई प्राथमिकता नहीं है, इसलिए सबसे अच्छा प्लानर noop / FIFO- कतार है, इसलिए इस प्रकार का शेड्यूलर ' मरोड़ ' I / O सबसिस्टम के लिए कुछ विशेष या सार्थक नहीं कर रहा है। वास्तव में, उन सभी मल्टी-स्क्रीन सूची आदेशों को एक सरल चक्र द्वारा बदल दिया जाता है:

i for / sys / block / mmc *; do echo noop> $ i / कतार / अनुसूचक echo 0> $ i / कतार / iostats किया

यह I / O आँकड़ों के संचय से सभी ड्राइव्स के लिए noop अनुसूचक को सक्षम करेगा, जिसका प्रदर्शन पर सकारात्मक प्रभाव होना चाहिए, हालांकि एक बहुत छोटा और लगभग पूरी तरह से नगण्य।

प्रदर्शन स्क्रिप्ट में अक्सर पाया जाने वाला एक और बेकार I / O tweak एसडीएम के लिए 2MB तक बढ़ा हुआ रीड-फॉरवर्ड वैल्यू है। पढ़ें-आगे तंत्र मीडिया से शुरुआती डेटा के लिए है, इससे पहले कि एप्लिकेशन उस डेटा तक पहुंच का अनुरोध करता है। तो मूल रूप से, कर्नेल यह पता लगाने की कोशिश कर रहा होगा कि भविष्य में कौन से डेटा की आवश्यकता होगी, और इसे रैम में पूर्व-लोड करता है, जो इस प्रकार रिटर्न समय को कम करना चाहिए। यह कागज पर बहुत अच्छा लगता है, लेकिन आगे पढ़ा एल्गोरिथ्म अधिक बार होता है गलत , जो इनपुट-आउटपुट के पूरी तरह से अनावश्यक संचालन की ओर जाता है, न कि एक उच्च रैम खपत का उल्लेख करने के लिए।

RAID-सरणियों में 1 से 8 एमबी के बीच उच्च रीड-फॉरवर्ड मूल्यों की सिफारिश की जाती है, लेकिन एंड्रॉइड डिवाइसों के लिए, 128 केबी के डिफ़ॉल्ट मान को छोड़ने के लिए इसका सबसे अच्छा है।

वर्चुअल मेमोरी मैनेजमेंट सिस्टम ट्विक्स करता है

एक अन्य सामान्य 'अनुकूलन' तकनीक आभासी मेमोरी प्रबंधन सबसिस्टम को ट्यूनिंग कर रही है। यह आमतौर पर केवल दो कर्नेल चर, vm.dirty_background_ratio और vm.dirty_ratio को लक्षित करता है, जो 'गंदे' डेटा को संग्रहीत करने के लिए बफर के आकार को समायोजित करने के लिए हैं। गंदा डेटा आमतौर पर वह डेटा होता है जिसे डिस्क पर लिखा गया होता है, लेकिन मेमोरी में और डिस्क पर लिखे जाने की प्रतीक्षा में अभी भी अधिक है।

लिनक्स डिस्ट्रोस और एंड्रोइस दोनों में VM प्रबंधन सबसिस्टम में विशिष्ट ट्विक मान इस प्रकार होंगे:

vm.dirty_background_ratio = 10 vm.dirty_ratio = 20

तो यह क्या करने की कोशिश करता है कि जब गंदा डेटा बफर रैम की कुल मात्रा का 10% होता है, तो यह जागता है pdflush प्रवाह और डिस्क पर डेटा लिखना शुरू करता है - यदि डिस्क पर डेटा रिकॉर्डिंग का संचालन होगा बहुत तीव्र , बफ़र बढ़ना जारी रखेगा, और जब यह उपलब्ध रैम का 20% तक पहुंच जाएगा, तो सिस्टम बाद के लेखन ऑपरेशन में सिंक्रोनस मोड में स्विच करेगा - प्री-बफर के बिना। इसका मतलब है कि डिस्क एप्लिकेशन पर लिखने का काम होगा अवरुद्ध है, जब तक कि डेटा डिस्क पर नहीं लिखा जाता है (AKA AK लग ’)

आपको क्या समझना चाहिए कि भले ही बफर आकार 10% तक नहीं पहुंचता 30 सेकंड के बाद सिस्टम स्वतः pdflush में किक करेगा। 10/20 का संयोजन बहुत ही उचित है, उदाहरण के लिए 1GB रैम वाले डिवाइस पर यह 100 / 200MB RAM के बराबर होगा, जो कि फटने के रिकॉर्ड के मामले में पर्याप्त से अधिक है, जहां गति सिस्टम NAND में स्पीड रिकॉर्ड से बहुत कम है। -मैमोरी या एसडी-कार्ड, जैसे कि ऐप इंस्टॉल करते समय या कंप्यूटर से फाइल कॉपी करते समय।

किसी कारण से, स्क्रिप्ट लेखक इस मूल्य को और भी अधिक, बेतुकी दरों पर धकेलने का प्रयास करते हैं। उदाहरण के लिए हम पा सकते हैं Xplix अनुकूलन स्क्रिप्ट 50/90 जितनी उच्च दर।

sysctl -w vm.dirty_background_ratio = 50 sysctl -w vm.dirty_atio_90

1 जीबी मेमोरी वाले डिवाइस पर, यह एक गंदे बफर पर 500/900 एमबी की सीमा तय करता है, जो एक एंड्रॉइड डिवाइस के लिए पूरी तरह से बेकार है, क्योंकि यह केवल काम करेगा डिस्क पर निरंतर रिकॉर्डिंग - ऐसा कुछ जो केवल भारी लिनक्स सर्वर पर होता है।

वज्र! स्क्रिप्ट अधिक उचित मूल्य का उपयोग करती है, लेकिन कुल मिलाकर, यह अभी भी काफी व्यर्थ है:

यदि ['$ मेम' -५२४२ '' टाइप करें; तो sysctl -w vm.dirty_background_r = १५; sysctl -w vm.dirty_ratio = 30; elif ['$ मेम' -1049776], फिर sysctl -w vm.dirty_background_ratio = 10; sysctl -w vm.dirty_ratio = 20; और sysctl -w vm.dirty_background_ratio = 5; sysctl -w vm.dirty_ratio = 10; फाई;

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

sysctl -w vm.dirty_background_ratio = 10 sysctl -w vm.dirty_atio / 60

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

अतिरिक्त बेकार Tweaks और प्रदर्शन ट्यूनिंग

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

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

  • त्वरण - प्रदर्शन को बेहतर बनाने और छोटा करने के लिए छोटा त्वरण - थोड़ी बैटरी बचाता है।
  • डेटाबेस अनुकूलन - सिद्धांत रूप में यह चाहिए डिवाइस के प्रदर्शन में सुधार करें, लेकिन इसकी दोगुनी है।
  • Zipalign - विडंबना यह है कि स्टोर में एपीके-फाइल के भीतर अंतर्निहित एंड्रॉइड एसडीके फीचर कंटेंट अलाइनमेंट के बावजूद आप पा सकते हैं कि बहुत सारा सॉफ्टवेयर zipalign के माध्यम से प्रसारित नहीं होता है।
  • अनावश्यक प्रणाली सेवाओं को अक्षम करें, अप्रयुक्त प्रणाली को हटा दें और शायद ही कभी तीसरे पक्ष के अनुप्रयोगों का उपयोग किया जाए। मूल रूप से, ब्लोटवेयर की स्थापना रद्द करना।
  • एक विशिष्ट डिवाइस के लिए अनुकूलन के साथ कस्टम कर्नेल (फिर से, सभी नाभिक समान रूप से अच्छे नहीं हैं)।
  • पहले से ही वर्णित I / O अनुसूचक।
  • संतृप्ति एल्गोरिथ्म टीसीपी वेस्टवुड - वायरलेस नेटवर्क के लिए डिफ़ॉल्ट रूप से अधिक कुशलता से उपयोग किया जाता है, कस्टम कर्नेल में उपलब्ध है।

बेकार सेटिंग्स build.prop

XDA Developers फोरम के लाराक्राफ्ट304 ने एक अध्ययन किया है और पाया है कि प्रभावशाली '/ system.build.prop सेटिंग' 'एक्सपर्ट्स' के उपयोग के लिए जो सिफारिश की जाती है वह स्रोत AOSP और CyanogenMod में मौजूद नहीं है। यहाँ सूची है:

ro.ril.disable.power.collapse ro.mot.eri.losalert.delay ro.config.hw_fast_dormancy ro.config.hw_power_saving windowsmgr.max.mevents_per_sec persist.cust.tel.eons ro.max.fling_velocity romin.min पर स्थित हैं। kernel.checkjni dalvik.vm.verify-bytecode debug.performance.tuning video.accelerate.hw ro.media.dec.jpeg.memcap ro.config.nocetin profiler.force_disable_ulog profiler.force_disable_errptist ersptist.ers.p.p.
टैग एंड्रॉयड विकास 12 मिनट पढ़े