2010-07-01 22 views
12

मैं एंड्रॉइड डिवाइस वीआरएएम आकार हासिल करना चाहता हूं।एंड्रॉइड पर वीआरएएम खपत को मापने के लिए कैसे?

क्या कार्यक्रम से अधिग्रहण के लिए कोई तरीका है?

+0

से भी आधारित है, मैं इसे भी जानना चाहूंगा। यदि डिवाइस से पूछताछ करने का कोई तरीका नहीं है, तो सामान्य उपकरणों पर वीडियो रैम की मात्रा भी एक सूची होगी। – Thomas

+0

स्पष्ट होने के लिए, मेरा मतलब है कि ओपनजीएल बनावट, बफर, इत्यादि के लिए उपलब्ध रैम की मात्रा। शायद यह "वीडियो रैम" नहीं है, प्रति से, लेकिन "ओपनजीएल सर्वर मेमोरी"? – Thomas

उत्तर

-2

मुझे लगता है android.os.StatFs आप जो खोज रहे हैं यह है कि:

http://developer.android.com/reference/android/os/StatFs.html

+0

मैं डरता हूं कि वीडियो रैम आकार के साथ उस स्थिति को बहुत कम करना है। –

15

चलो कुछ नेक्सस वन का उपयोग कर गणना करते हैं:

स्क्रीन संकल्प 480x800 है। तो कम से कम आवश्यक वीडियो स्मृति आकार होगा:
400 * 800 * 4 bytes = 1536000 bytes

कि चालक मान लिया जाये कि हो सकता है (और सामान्य रूप से होना चाहिए) कई बफ़र्स उपयोग करते हैं, हम भी तरह मूल्यों की उम्मीद करनी चाहिए:

1536000 * 2 bytes = 3072000 bytes
1536000 * 3 bytes = 4608000 bytes
etc...

यह मानना ​​अजीब होगा कि 1536000 (या सामान्य रूप से डब्ल्यू एक्स एच एक्स 4) के बहुमत नहीं हैं।


एंड्रॉयड internals पर कुछ खोजों के बाद मैंने पाया इस documentation:

... एंड्रॉयड चालक के दो आवश्यकताओं बनाता है: करने के लिए mappable स्मृति की एक रेखीय पता स्थान है कि यह लिख सकते हैं सीधे ... पर/dev/fb0 ...

खुला फोन करके तक पहुँचने चालक तो मैं कोशिश की और /dev/graphics/fb0 फ़ाइल का आकार ले (अपने डिवाइस पर कोई /dev/fb0 है)।

लेकिन एक सीधा दृष्टिकोण काम नहीं करता:

File file = new File("/dev/graphics/fb0"); 
file.length(); // ==0, doesn't work, no read access 

अगले चाल का उपयोग करके आप fb0 के वास्तविक आकार प्राप्त कर सकते हैं:
>adb pull /dev/graphics/fb0
1659 KB/s (4608000 bytes in 2.712s)

वीडियो स्मृति है ~ 4MB (नेक्सस वन) । अगर यह नेक्सस स्क्रीन आकार के कई है की जाँच करें:

4608000/1536000 = 3

यह एक सही मूल्य की तरह दिखता है। और हम यह भी कह सकते हैं कि ड्राइवर तीन स्क्रीन बफर का उपयोग करता है।


तो, एक निष्कर्ष के रूप में, आप वीडियो स्मृति आकार एडीबी का उपयोग कर पता लगा सकते हैं, लेकिन आप उपयोग प्रतिबंध फाइल के कारण क्रम में अपने Android आवेदन से इस दृष्टिकोण का उपयोग नहीं कर सकते।

+0

अच्छी जांच, धन्यवाद, लेकिन जो मैं खोज रहा था वह नहीं। शायद मैं पूरी तरह से स्पष्ट नहीं किया गया है। मैं जो जानना चाहता हूं वह ओपनजीएल सर्वर मेमोरी का आकार है, जिसमें हम बनावट, वर्टेक्स बफर इत्यादि स्टोर करते हैं। वैसे भी, अगर उस प्रश्न का उत्तर नहीं मिलता है, तो बक्षीस तुम्हारा है। – Thomas

4

एंड्रॉइड/ओपनजीएल एपीआई किसी दिए गए डिवाइस से वीआरएएम आकार को पढ़ने के लिए स्पष्ट तरीकों की पेशकश नहीं करते हैं।

गरीब आदमी समाधान:
आप 1 एमबी बनावट जोड़ने जब तक आप gl.glGetError() से स्मृति त्रुटि के बाहर निकलना एक अनुभवसिद्ध तरीका में VRAM आकार का अनुमान लगा की कोशिश कर सकते।

5

आपके पास आमतौर पर मोबाइल उपकरणों पर समर्पित "वीआरएएम" नहीं है। कम से कम आपके पास पावरवीआर आर्किटेक्चर के साथ नहीं है (जो पूरी तरह से एमबीएक्स और एसजीएक्स कोर के साथ बाजार पर हावी है)।

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

2
अपने "dmesg" उत्पादन से

यू VRAM बंद पढ़ सकते हैं, तो मेरी गोली के लिए:

> [ 0.000000] Machine: TDM3730 [ 0.000000] Reserving 12582912 
> bytes SDRAM for VRAM 
> 
> 7>[ 3.929962] VRAM: checking region 9f400000 3072     
> <4>[ 3.929992] Failed. Allocating 4194304 bytes for fb 0   
> <7>[ 3.935333] VRAM: alloc mem type 0 size 4194304 paddr dec2bd4c 
> <7>[ 3.935485] VRAM: checking region 9f400000 3072     
> <7>[ 3.935485] VRAM: found 9f400000, end a0000000     
> <6>[ 3.936584] android_usb gadget: high speed config #1: android 
> <4>[ 3.960113] allocating 4194304 bytes for fb 1 

या विवरण पर:

http://pastebin.com/jQSXQqHh

0

सरल है, बस गिनती कितने एमबी रैम कि रैम की उपयोग करने योग्य से वास्तविक क्षमता के लिए, मेरे लेनोवो ए 36 9आई के लिए उदाहरण 512 रैम मॉड्यूल है, लेकिन ऐप को केवल 471 एमबी उपयोग करने में दिखा रहा है, इसलिए 41 एमबी बाएं जीपीयू के लिए आरक्षित है, इसलिए निष्कर्ष मेरा ए 36 9आई है 41 एमबी वर्म

यह विधि साझा ग्राफिक्स मेमोरी (विकी)

संबंधित मुद्दे