عندما تبدأ أجهزة Android في التحرك نحو 6 جيجابايت من ذاكرة الوصول العشوائي، علينا أن نسأل أنفسنا هذا السؤال: ما مقدار ذاكرة الوصول العشوائي التي نحتاجها حقًا؟ اتبع على طول ونحن استكشاف!
لقد تلقينا مؤخرًا إعلانات عن أحد الهواتف الذكية الأولى التي تعمل بنظام Android والتي تأتي مع ذاكرة وصول عشوائي (RAM) سعة 6 جيجابايت.
6 غيغابايت ينقط! هذا يمثل قدرًا كبيرًا من ذاكرة الوصول العشوائي (RAM) في الجهاز المحمول.
بدء لعبة الأرقام هو فيفو اكس بلاي 5 إيليت. قد لا تكون Vivo كشركة معروفة جيدًا خارج الصين، ولكن يُحسب للشركة أنها صنعت بعض الهواتف الذكية الرفيعة جدًا في الماضي. مع Xplay5 Elite، حاولوا احتواء الكثير من المواصفات في جهاز يهدف إلى الوقوف بين الملوك.
يتميز Vivo Xplay 5 Elite بشاشة منحنية مزدوجة مقاس 5.43 بوصة QHD Super AMOLED على إطار معدني للجسم. في الداخل، يوجد أحدث إصدار من Qualcomm Snapdragon 820 SoC بسرعة 2.15 جيجا هرتز، ووحدة معالجة الرسوميات Adreno 530، وذاكرة وصول عشوائي LPDDR4 بسعة 6 جيجابايت، وذاكرة تخزين غير قابلة للتوسيع بسعة 128 جيجابايت. بالنسبة للكاميرا، الجزء الخلفي عبارة عن مستشعر Sony IMX298 بدقة 16 ميجابكسل مع فتحة f/2.0 والأمامية بدقة 8 ميجابكسل. مع الأخذ في الاعتبار هذه المواصفات والبنية المعدنية للجهاز، فلا ينبغي أن يكون مفاجئًا أن السعر سيكلف بعض الشيء حتى بالنسبة للمستهلك الصيني. مع سعر يبلغ 4288 يوان صيني (660 دولارًا)، يعد هذا بالتأكيد هاتفًا صينيًا رائدًا وليس هاتفًا متوسط التكلفة.
Vivo Xplay5 Elite ليس الهاتف الذكي الوحيد الذي يحتوي على 6 جيجابايت من ذاكرة الوصول العشوائي في الوقت الحالي. تهدف شركة Vernee الصينية الأقل شهرة والتي تم تأسيسها حديثًا إلى توفير وصول أكبر للمستهلك إلى كميات هائلة من ذاكرة الوصول العشوائي (RAM) من خلال إطلاق جهاز متوسط المدى، Vernee Apollo.
سيأتي Vernee Apollo حاملاً معالج MediaTek عالي الجودة Helio X20. سيكون هناك 6 جيجابايت من ذاكرة الوصول العشوائي المذكورة أعلاه و128 جيجابايت من مساحة التخزين الداخلية وكاميرا خلفية Sony IMX230 بدقة 21 ميجابكسل وشاشة مقاس 5.5 بوصة بدقة 2K. مع كل ذلك، سيكلف أبولو 399.99 دولارًا. المعلومات الصحفية المرسلة إلينا لم تذكر السعر الصيني أو الأسواق المستهدفة، لذلك لا يزال الهاتف غامضًا إلى حد ما.
كلا الهاتفين يطلبان منا أن نطرح السؤال، هل نفعل ذلك؟ بحاجة حقا الكثير من ذاكرة الوصول العشوائي الآن؟
للإجابة على هذا السؤال، علينا أن نفهم كيف يتعامل Android مع إدارة الذاكرة وذاكرة الوصول العشوائي (RAM). لقد قام مشعل بعمل رائع في شرح تعقيدات إدارة ذاكرة Android مقال سابق، والتي لا تزال تحافظ على أهميتها بعد ستة أشهر.
"الطريقة التي يتعامل بها Android مع إدارة الذاكرة هي كالتالي: بدلاً من إيقاف كل عملية على الفور بعد انتهاء نشاطها (مثل عند الضغط على زر الصفحة الرئيسية للخروج من أحد التطبيقات)، يتم الاحتفاظ بالعملية في الذاكرة حتى يحتاج النظام إلى إيقافها لتحرير المزيد من الذاكرة. كيف يقرر النظام ما هي العمليات التي يجب الاحتفاظ بها وما الذي يجب قتله؟ برنامج تشغيل LMK (قاتل الذاكرة المنخفضة). يتم تعيين قيمة oom_adj لكل عملية تتراوح من -17 إلى 15 بواسطة خدمة ActivityManager، التي تقوم بضبط قيمة oom_adj ديناميكيًا وفقًا لأهمية العملية. تعني قيم oom_adj الأعلى احتمالية إيقاف العملية لتحرير الذاكرة، بينما تعني القيم المنخفضة أن احتمالية إيقاف العملية أقل."
"يصنف Android كل عملية إلى خمس فئات (المقدمة، والمرئية، والخدمة، والخلفية، والفارغة) تتراوح من الأكثر أهمية إلى الأقل أهمية لمواصلة التشغيل. يتم إيقاف العمليات التي تنتمي إلى كل فئة عند مستويات مختلفة من الذاكرة الحرة المتبقية (تسمى قيمة LMK minfree). على سبيل المثال، إذا تم تعيين قيم LMK minfree لجهازك على "2560,4090,6144,7168,8192" (مدرجة كصفحات 4K، والتي يمكن قراءتها من /sys/module/lowmemorykiller/parameters/minfree) فإن جهازك سيتم إيقاف العمليات المحددة على أنها "فارغة" عندما تقل الذاكرة الحرة لديك عن 32 ميجابايت، والعمليات المحددة على أنها "الخلفية" عندما تكون الذاكرة الحرة أقل من 28 ميجابايت، والتطبيقات الأمامية عندما تنخفض الذاكرة الحرة إلى أقل من ذلك 10 ميجابايت (لا سمح الله!) الآن، ليست قيم minfree هذه نموذجية في معظم الأجهزة هذه الأيام حيث يحب المصنعون تعديلها حسب رغبتهم اعتمادًا على ما يشعرون أنه يناسب أجهزتهم بشكل أفضل. لكن ما يجب عليك استخلاصه من هذا الشرح الموجز هو أنه كلما زادت مساحة الذاكرة المتوفرة لديك، قل احتمال رؤية العمليات الهامة التي يتم قتلها."
كما ذكر مشعل، تختلف القيم الفعلية من OEM إلى OEM، لذلك يمكن أن يكون لديك تجارب مختلفة مع المهام المتعددة على هواتف مختلفة ذات مواصفات مماثلة. متغير آخر في هذا المزيج هو مقدار bloatware الموجود على الجهاز. تميل أجهزة Android UX المعدلة بشكل كبير مثل TouchWiz إلى احتواء الكثير من الميزات بالإضافة إلى Android استنادًا إلى المخزون يتطلب AOSP، وعلى هذا النحو، تخصيص المزيد من الموارد للنظام ليعمل على المستوى الذي أراده OEM عليه. وهذا يترك مساحة أقل لتطبيقات الطرف الثالث للتخزين المؤقت، مما يؤدي بدوره إلى تفاقم انخفاض الذاكرة.
خاصة ناعم
"الفرق الرئيسي بين جهاز مزود بذاكرة وصول عشوائي (RAM) سعة 2 جيجابايت مقابل جهاز مزود بذاكرة وصول عشوائي (RAM) سعة 3 جيجابايت هو أن الجهاز المزود بذاكرة وصول عشوائي (RAM) سعة 3 جيجابايت من ذاكرة الوصول العشوائي (RAM) يجب أن تكون قادرة على تخزين المزيد من العمليات في الخلفية دون تشغيل برنامج تشغيل LMK لإيقافها."
لذلك، من الناحية النظرية، يجب أن تؤدي المزيد من ذاكرة الوصول العشوائي المتوفرة على مستوى الأجهزة إلى بقاء المزيد من العمليات مخزنة مؤقتًا على مستوى نظام التشغيل ومجموعة أكبر يمكن لمصنعي المعدات الأصلية المشاركة فيها. ولكن في أغلب الأحيان، حتى على الأجهزة التي تحتوي على ذاكرة وصول عشوائي (RAM) سعة 2 غيغابايت، ترى الكثير من ذاكرة الوصول العشوائي المجانية حتى بعد تأمين النظام والتطبيقات على ما يحتاجون إليه. إليكم نفس المعرض من منشور مشعل، حيث يقارن ذاكرة الوصول العشوائي المجانية عبر الأجهزة المختلفة:
كما ترون، تتمتع الأجهزة ذات واجهة المستخدم الأخف، مثل Nexus 5 وNexus 6، بأكبر نسبة من ذاكرة الوصول العشوائي المجانية المتوفرة على الجهاز. حتى أثقل الأجهزة، هاتف Samsung Galaxy Note 5 المزود بذاكرة وصول عشوائي (RAM) سعة 4 جيجابايت وميزة TouchWiz للتشغيل، يحتوي على حوالي 1.7 جيجابايت من ذاكرة الوصول العشوائي (RAM) المتوفرة للتخزين المؤقت للتطبيقات. حتى مع وجود مثل هذه المجموعة الكبيرة من ذاكرة الوصول العشوائي المجانية، عانى جهاز Note 5 من مشكلات تعدد المهام حيث يلجأ الجهاز إلى التعامل مع الذاكرة بشكل عدواني. كان هذا بسبب اختيار الشركة المصنعة لقيم LMK: لن يساعد ضخ المزيد من ذاكرة الوصول العشوائي (RAM) على مستوى الأجهزة! يتضمن إصلاح الملاحظة 5 لتحسين المهام المتعددة في الواقع تعديل قيم LMK هذه لتكون أكثر يعد تعدد المهام سهلاً مقارنة بإعدادات مخزون سامسونج، وهو أمر مثير للسخرية بالنسبة لجهاز يركز عليه إنتاجية. على هذا النحو، فإن مجرد الحصول على المزيد من ذاكرة الوصول العشوائي (RAM) لن يجعل الجهاز أكثر سهولة في تنفيذ المهام المتعددة تلقائيًا.
بالعودة إلى المعرض مرة أخرى، جزء من ذاكرة الوصول العشوائي المجانية المعروضة يُستخدم بالفعل للتخزين المؤقت لعملية التطبيق، ولكن جزءًا من هذا يظل في الواقع خاملاً ولا يفعل شيئًا. فيما يلي بعض لقطات الشاشة من جهاز OnePlus One الخاص بي والتي توضح ذاكرة الوصول العشوائي المجانية المعروضة، ثم التقسيم إلى ذاكرة الوصول العشوائي المخزنة مؤقتًا وذاكرة الوصول العشوائي الخاملة:
حتى في الحالة الصغيرة التي تبلغ ثانية واحدة والتي استغرقت مني الخروج من لعبة نشطة وتحديد خيار عرض العمليات المخزنة مؤقتًا، عمل النظام على تقليص ذاكرة الوصول العشوائي الفعلية المستخدمة. حدث هذا لأن لعبة NFS No Limits في هذه الحالة، شهدت تغييرًا في الأولوية، حيث انتقلت من عملية المقدمة إلى عملية الخلفية. تم القيام بذلك بهدف الحفاظ على تدفق نظام التشغيل بسلاسة في جميع الأوقات، حيث تم تغيير ذاكرة الوصول العشوائي (RAM) قيد الاستخدام النشط من 2.5 جيجابايت إلى 1.9 جيجابايت، بينما تم تخزين عملية لعبة NFS No Limits مؤقتًا. مع تغير اللعبة في أولويتها، أصبحت الآن قابلة للقتل إذا كان نظام التشغيل يحتاج بالفعل إلى المزيد من ذاكرة الوصول العشوائي المجانية. ليس هناك حاجة لتفاعل المستخدم هنا.
كان الهدف من هذا المثال هو تسليط الضوء على كيفية تطور إدارة ذاكرة Android لتصبح أكثر كفاءة في تحديد أولويات النظام وجميع عملياته. لا يوجد سوى عدد قليل جدًا من التطبيقات التي ستظل مخزنة مؤقتًا في أي وقت: لا يستخدم نظام التشغيل بشكل مثالي ذاكرة الوصول العشوائي المجانية بالكامل في عمليات التخزين المؤقت. يتم ترك جزء من ذاكرة الوصول العشوائي المجانية في وضع الخمول. يتم ذلك حسب التصميم، للمناسبات التي قد تحتاج فيها العملية إلى زيادة استخدام ذاكرة الوصول العشوائي الخاصة بها بسرعة كبيرة.
يوجد حد أقصى لتخصيص ذاكرة الوصول العشوائي (RAM) لعمليات التطبيق أيضًا، كما هو محدد بواسطة OEM مرة أخرى للهواتف الفردية. وفقا ل مشاركة مناقشة قديمة بواسطة Dianne Hackborn، مهندسة إطار عمل Android، هناك حد لـ كومة جافا حيث ستتواجد كائنات Java قبل بدء جمع البيانات المهملة، ولكن حتى ذلك يمكن توسيعه باستخدام ذكي لـ NDK. بكلمات بسيطة، هذا يعني أن هناك حدًا أقصى لذاكرة الوصول العشوائي (RAM) كان متاحًا لأي تطبيق يريد تشغيله على هذا الجهاز. بالنسبة للأجهزة القديمة، تم ضبط هذه الكومة على 24 ميجابايت، ولكن على الأجهزة الحديثة، تمت زيادة الحجم بفضل زيادة ذاكرة الوصول العشوائي في الأجهزة بالإضافة إلى زيادة متطلبات الأجهزة. أندرويد وثيقة تعريف التوافق ل أندرويد 6.0 يذكر (القسم 3.7) الحد الأدنى للقيم التي يجب تعيينها بواسطة الشركة المصنعة لهذه الأكوام. للمقارنة، يتميز جهاز OnePlus One الموجود على CM12.1 بحد أقصى يبلغ 192 ميجابايت لأكوام Dalvik VM العادية ويسمح بما يصل إلى 512 ميجابايت للتطبيقات التي تحدد android: LargeHeap=true في بيان التطبيق الخاص بها. من الناحية النظرية، يمكن لتطبيق واحد فقط استخدام ما يصل إلى 512 ميجابايت من ذاكرة الوصول العشوائي على جهازي. علاوة على ذلك، سيتم البدء في جمع البيانات المهملة للحفاظ على التدفق الحر لعمليات النظام الضرورية الأخرى.
قم الآن بدمج الحد الأقصى لحجم الكومة للتطبيقات مع قيم LMK المخصصة لها بناءً على أولويتها و إصرار نظام التشغيل على الاحتفاظ بكمية معينة من ذاكرة الوصول العشوائي المجانية في وضع الخمول، ويمكنك أن تتخيل كيفية أداء المهام المتعددة في نظام Android يعمل. إنها آلية معقدة تتضمن الكثير من المتغيرات بين الأجهزة والبرامج والتطبيق نفسه؛ تم ضبطه بدقة للسماح حتى للأجهزة الأساسية بالعمل مع السماح لأفضل الأجهزة الرائدة بالاستفادة المطلقة من إمكاناتها، من الناحية النظرية. عمليا، هذا ليس عالما مثاليا، لذلك لا يحدث أي من ذلك. وهذا يعني أنه لا يوجد ضمان بأن الجهاز الذي يحتوي على ذاكرة وصول عشوائي (RAM) سعة 4 جيجابايت سيعمل بشكل متساوٍ مع جهاز آخر مزود بذاكرة وصول عشوائي (RAM) سعة 4 جيجابايت. ولا يعني ذلك أن زيادة غيغابايت من ذاكرة الوصول العشوائي (RAM) بما يتجاوز حدًا معينًا ستمنحك زيادة متناسبة بشكل مباشر في المهام المتعددة ومعالجة الذاكرة.
العملي والمستقبل
لذا، بالعودة إلى السؤال الأصلي، هل تحتاج حقًا إلى 6 جيجابايت من ذاكرة الوصول العشوائي في أجهزتك في أوائل عام 2016؟ بالنسبة لي، فإن الجواب هو لا.
تحتوي غالبية الأجهزة التي أملكها على 3 جيجابايت من ذاكرة الوصول العشوائي LPDDR3، وواحد به 4 جيجابايت من ذاكرة الوصول العشوائي. وببساطة لا يوجد فرق ملحوظ في الأداء عندما يتعلق الأمر بالمهام المتعددة. فيما يلي عرض توضيحي للمهام المتعددة من مراجعتي الأخيرة لـ OnePlus X، وهو جهاز مزود بذاكرة وصول عشوائي (RAM) سعة 3 جيجابايت وقريب من ذاكرة القراءة فقط (ROM) لنظام Android:
لم يواجه الجهاز أية مشكلات في التبديل بين 12 تطبيقًا (13 إذا حسبت مسجل الشاشة النشط) دون الحاجة إلى إيقاف أي من هذه التطبيقات. لم تكن هناك إعادة تحميل أو إعادة رسم، وتظل هذه التجربة متسقة بشكل مدهش طوال الاستخدام اليومي دون أي عمليات إعادة تشغيل أو إيقاف يدوي للتطبيق. ببساطة، لا يحتاج المستهلك العادي إلى التبديل بفعالية بين هذه التطبيقات العديدة أثناء الاستخدام العملي!
ولكن ماذا لو كان المستخدم يرغب في التبديل بين هذه الألعاب العديدة بدلاً من ذلك؟ متفق عليه، سيتم تفعيل العوامل المذكورة أعلاه للسماح بالتبديل بين عدد قليل من الألعاب فقط في أحسن الأحوال. في مثل هذه الحالة، فإن وجود المزيد من ذاكرة الوصول العشوائي الفعلية سيسمح للجهاز بالاحتفاظ بمزيد من الألعاب بشكل سلبي في الذاكرة. لكن النقطة المقابلة لهذه الميزة هي أن الكثير من الألعاب غالبًا ما تقوم بإعادة تحميل نفسها بقوة عند القيام بمهام متعددة! هدفهم هو تجنب آليات الغش من معالجة بيانات اللعبة أثناء تشغيل اللعبة، لذا فإن إعادة التحميل/إعادة المزامنة/التحديث تجبر عمليات التحقق من السلامة على اللعب مرة أخرى. نيتهم مختلفة، لكن هذا يجعل الكثير من الألعاب مرشحة ضعيفة للقيام بمهام متعددة بينها.
هناك أيضًا بعض العوامل الأخرى التي من شأنها أن تمنعك من الاستفادة من كل تلك ذاكرة الوصول العشوائي الرائعة. إذا وجدت مهمة/عدة مهام مجتمعة تتطلب 6 جيجابايت من ذاكرة الوصول العشوائي LPDDR4 بجهازك، فستواجه عنق الزجاجة أكبر بكثير في شكل SoC المحمول. من المؤكد أن Snapdragon 820 و Helio X20 قد يكونان المعالجين الرئيسيين لشركتيهما، لكنهما لا يزالان من معالجات SoC المحمولة. على هذا النحو، لديهم قيود أخرى مثل توليد الحرارة، وتبديد الحرارة، والاختناق الحراري والبطارية الحياة التي من شأنها أن تجعلهم اختيارات سيئة للمهام المكثفة بما يكفي لاستخدام الكثير من ذاكرة الوصول العشوائي لفترة طويلة من الزمن وقت. في مثل هذه الحالات، من الأفضل أن تستخدم نظامًا ليس من المفترض أن يكون في يدك؛ نظام لديه حدود أكثر ليبرالية للحرارة التي يمكن أن يولدها والطاقة التي يمكن أن يستهلكها.
في نهاية اليوم، بغض النظر عن مقدار ذاكرة الوصول العشوائي (RAM) المتوفرة لديك، سيتم طرد التطبيقات. هذه هي الطريقة التي تعمل بها إدارة الذاكرة. لا تزال هناك مزايا لزيادة حجم ذاكرة الوصول العشوائي (RAM)، مثل زيادة حجم الكومة الإضافية ستساعد في ذلك تشغيل أصول الصورة النقطية على شاشات عالية الدقة، مما يسمح لنا بتجاوز دقة QHD على أجهزتنا. سيؤدي حجم الكومة المتزايد باعتباره اتجاهًا عبر السوق إلى ظهور تطبيقات يمكنها أن تطمح إلى بذل المزيد من الجهد. ما لم يتم قفل ذاكرة الوصول العشوائي (RAM) باعتبارها غير قابلة للمس، فسيكون هناك دائمًا استخدام ما أو آخر لها. ولكن بالنظر إلى أن الشاشات تبدو وكأنها تحوم بين 1080 بكسل و1440 بكسل على الهواتف الرائدة، فقد نرى 4 جيجابايت كمعيار معقول لمدة عام أو عامين آخرين.
وفي الختام، علينا أن نجيب على السؤال: هل نحن بحاجة حقا الكثير من ذاكرة الوصول العشوائي الآن؟ لا، نحن لا نفعل ذلك. بالنسبة للأجهزة التي يكون سعرها أحد العوامل التي يجب أن تظل منخفضة، فإن ذاكرة الوصول العشوائي (RAM) التي تبلغ 3 جيجابايت أو 4 جيجابايت ستخدمها بشكل جيد بما فيه الكفاية. بالنسبة للهواتف الرائدة التي يطلبها مستخدمون لا يهتمون بالأسعار كثيرًا، فلن يضر ذلك بالإثبات المستقبلي. كعميل، فقط لاحظ أنك لن تستخدم كل ذاكرة الوصول العشوائي هذه حتى الآن.
ما هي أفكارك حول الهواتف التي تحتوي على 6 جيجابايت من ذاكرة الوصول العشوائي؟ دعنا نعرف أفكارك في التعليقات بالأسفل!