Android
Android कर्नेल ऑप्टिमाइज़ेशन
खोज…
कम रैम कॉन्फ़िगरेशन
Android अब 512MB RAM वाले उपकरणों का समर्थन करता है। इस प्रलेखन का उद्देश्य कम स्मृति वाले उपकरणों के लिए OEM का अनुकूलन और Android 4.4 को कॉन्फ़िगर करने में मदद करना है। इनमें से कई अनुकूलन पर्याप्त सामान्य हैं कि उन्हें पिछले रिलीज पर भी लागू किया जा सकता है।
लो राम डिवाइस फ्लैग सक्षम करें
हम यह निर्धारित करने के लिए कि क्या वे विशिष्ट मेमोरी-इंटेंसिव सुविधाओं को बंद कर दें, जो कम-मेमोरी डिवाइस पर खराब काम करती हैं।
512MB डिवाइसों के लिए, यह API वापस आने की उम्मीद है: "true" यह डिवाइस मेकफाइल में निम्न सिस्टम प्रॉपर्टी द्वारा सक्षम किया जा सकता है।
PRODUCT_PROPERTY_OVERRIDES += ro.config.low_ram=true
JIT को अक्षम करें
सिस्टम-वाइड JIT मेमोरी का उपयोग चलने वाले अनुप्रयोगों की संख्या और उन अनुप्रयोगों के कोड फ़ुटप्रिंट पर निर्भर है। JIT अधिकतम अनुवादित कोड कैश आकार स्थापित करता है और आवश्यकतानुसार पृष्ठों को छूता है। JIT की कीमत 3M और 6M के बीच एक विशिष्ट रनिंग सिस्टम में कहीं है।
बड़े एप्लिकेशन कोड कैश को अधिकतम तेज़ी से अधिकतम करने की प्रवृत्ति रखते हैं (जो डिफ़ॉल्ट रूप से 1M है)। औसतन, JIT कैश का उपयोग प्रति ऐप 100K और 200K बाइट्स के बीच होता है। कैश का अधिकतम आकार कम करने से मेमोरी उपयोग में कुछ हद तक मदद मिल सकती है, लेकिन यदि बहुत कम सेट किया जाता है, तो जेआईटी को एक थ्रैशिंग मोड में भेज दिया जाएगा। वास्तव में कम मेमोरी वाले उपकरणों के लिए, हम JIT को पूरी तरह से अक्षम करने की सलाह देते हैं।
उत्पाद मेकफाइल में निम्न पंक्ति जोड़कर इसे प्राप्त किया जा सकता है:
PRODUCT_PROPERTY_OVERRIDES += dalvik.vm.jit.codecachesize=0
सीपीयू गवर्नर को कैसे जोड़ें
सीपीयू गवर्नर स्वयं सिर्फ 1 सी फाइल है, जो कि कर्नेल_सोर्स / ड्राइवर / cpufreq / में स्थित है, उदाहरण के लिए: cpufreq_smartass2.c। गवर्नर को खोजने के लिए आप स्वयं जिम्मेदार हैं (अपने डिवाइस के लिए मौजूदा कर्नेल रेपो में देखें) लेकिन इस फ़ाइल को सफलतापूर्वक कॉल करने और अपने कर्नेल में संकलित करने के लिए आपको निम्नलिखित बदलाव करने होंगे:
- अपनी गवर्नर फ़ाइल (cpufreq_govname.c) को कॉपी करें और अब कर्नेल_सोर्स / ड्राइवर / cpufreq पर ब्राउज़ करें, इसे पेस्ट करें।
- और Kconfig खोलें (यह कॉन्फिग मेनू लेआउट का इंटरफ़ेस है) कर्नेल जोड़ते समय, आप चाहते हैं कि यह आपके कॉन्फ़िगरेशन में दिखाई दे। गवर्नर की पसंद को जोड़कर आप ऐसा कर सकते हैं।
config CPU_FREQ_GOV_GOVNAMEHERE
tristate "'gov_name_lowercase' cpufreq governor"
depends on CPU_FREQ
help
governor' - a custom governor!
उदाहरण के लिए, smartassV2 के लिए।
config CPU_FREQ_GOV_SMARTASS2
tristate "'smartassV2' cpufreq governor"
depends on CPU_FREQ
help
'smartassV2' - a "smart" optimized governor!
पसंद जोड़ने के बाद, आपको इस संभावना को भी घोषित करना होगा कि गवर्नर डिफ़ॉल्ट गवर्नर के रूप में चुना जाता है।
config CPU_FREQ_DEFAULT_GOV_GOVNAMEHERE
bool "gov_name_lowercase"
select CPU_FREQ_GOV_GOVNAMEHERE
help
Use the CPUFreq governor 'govname' as default.
उदाहरण के लिए, smartassV2 के लिए।
config CPU_FREQ_DEFAULT_GOV_SMARTASS2
bool "smartass2"
select CPU_FREQ_GOV_SMARTASS2
help
Use the CPUFreq governor 'smartassV2' as default.
- इसे लगाने के लिए सही जगह नहीं मिल रही है? बस “CPU_FREQ_GOV_CONSERVATIVE”
, और कोड को नीचे रखें, यही बात “CPU_FREQ_DEFAULT_GOV_CONSERVATIVE”
लिए गिना जाता है
अब जब Kconfig समाप्त हो गया है तो आप फ़ाइल को सहेज और बंद कर सकते हैं।
- अभी भी
/drivers/cpufreq
फ़ोल्डर में, Makefile खोलें। Makefile में, अपने CPU गवर्नर के अनुरूप लाइन जोड़ें। उदाहरण के लिए:
obj-$(CONFIG_CPU_FREQ_GOV_SMARTASS2) += cpufreq_smartass2.o
वेयर करें कि आप मूल सी फ़ाइल को कॉल नहीं करते हैं, लेकिन हे फ़ाइल! जो संकलित सी फ़ाइल है। फ़ाइल सहेजें।
- इस पर जाएं:
kernel_source/includes/linux
। अबcpufreq.h
खोलें, तब तक नीचे स्क्रॉल करें जब तक आप कुछ ऐसा न देख लें:
#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND)
extern struct cpufreq_governor cpufreq_gov_ondemand;
#define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_ondemand)
(अन्य सीपीयू गवर्नर भी वहां सूचीबद्ध हैं)
अब चयनित CPU गवर्नर के साथ अपनी प्रविष्टि जोड़ें, उदाहरण:
#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_SMARTASS2)
extern struct cpufreq_governor cpufreq_gov_smartass2;
#define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_smartass2)
फ़ाइल को सहेजें और इसे बंद करें।
प्रारंभिक CPU गवर्नर सेटअप अब पूरा हो गया है। जब आप सभी चरणों को सफलतापूर्वक किया है, तो आप मेनू (से अपने राज्यपाल का चयन करने में सक्षम होना चाहिए menuconfig
, xconfig
, gconfig
, nconfig
)। एक बार मेनू में जाँच के बाद इसे कर्नेल में शामिल किया जाएगा।
प्रतिबद्ध है कि ऊपर दिए गए निर्देशों के समान है: SmartassV2 और lulzactive गवर्नर प्रतिबद्ध जोड़ें
आई / ओ शेड्यूलर्स
यदि आवश्यक हो तो आप नए I / O शेड्यूलर जोड़कर अपनी कर्नेल बढ़ा सकते हैं। विश्व स्तर पर, गवर्नर और शेड्यूलर समान हैं; वे दोनों एक तरीका प्रदान करते हैं कि सिस्टम को कैसे काम करना चाहिए। हालाँकि, शेड्यूलर्स के लिए यह CPU सेटिंग्स को छोड़कर इनपुट / आउटपुट डेटास्ट्रीम के बारे में है। I / O शेड्यूलर तय करते हैं कि आगामी I / O गतिविधि कैसे शेड्यूल की जाएगी। मानक शेड्यूलर जैसे कि noop या cfq बहुत ही उचित प्रदर्शन कर रहे हैं।
I / O अनुसूचकियों को kernel_source / block में पाया जा सकता है।
अपनी I / O शेड्यूलर फ़ाइल की प्रतिलिपि बनाएँ (उदाहरण के लिए, sio-iosched.c ) और kernel_source / block पर ब्राउज़ करें। शेड्यूलर फ़ाइल को वहां पेस्ट करें।
अब Kconfig.iosched खोलें और अपनी पसंद को Kconfig में जोड़ें , उदाहरण के लिए SIO :
config IOSCHED_SIO tristate "Simple I/O scheduler" default y ---help--- The Simple I/O scheduler is an extremely simple scheduler, based on noop and deadline, that relies on deadlines to ensure fairness. The algorithm does not do any sorting but basic merging, trying to keep a minimum overhead. It is aimed mainly for aleatory access devices (eg: flash devices).
फिर डिफ़ॉल्ट विकल्प विकल्प निम्नानुसार सेट करें:
default "sio" if DEFAULT_SIO
फ़ाइल सहेजें।
Kernel_source / ब्लॉक में Makefile खोलें / और बस SIO निम्नलिखित पंक्ति जोड़ें:
obj-$(CONFIG_IOSCHED_SIO) += sio-iosched.o
फ़ाइल सहेजें और आप कर रहे हैं! I / O शेड्यूलर्स को अब मेन्यू कॉन्फिग में पॉप अप करना चाहिए।
GitHub पर भी ऐसी ही प्रतिबद्धता: जोड़ा गया सरल I / O अनुसूचक ।