ปริศนาเกี่ยวกับ RAM: เราต้องการ RAM มากแค่ไหน?

เมื่ออุปกรณ์ Android เริ่มเคลื่อนไปสู่ ​​RAM ขนาด 6GB เราต้องถามตัวเองด้วยคำถามนี้: เราต้องการ RAM มากแค่ไหน? ตามมาในขณะที่เราสำรวจ!

เมื่อเร็วๆ นี้ เราได้รับการประกาศเกี่ยวกับสมาร์ทโฟนรุ่นแรกๆ ที่ใช้ระบบปฏิบัติการ Android ที่มาพร้อมกับ RAM ขนาด 6GB

6GB โคตรแย่! นั่นคือ RAM จำนวนมากในอุปกรณ์พกพา

การเริ่มเกมตัวเลขคือ วีโว่ Xplay5 Elite. Vivo ในฐานะบริษัทอาจไม่เป็นที่รู้จักมากนักนอกประเทศจีน แต่ทางบริษัทเคยผลิตสมาร์ทโฟนที่บางมากในอดีต ด้วย Xplay5 Elite พวกเขาพยายามปรับให้เข้ากับข้อกำหนดจำนวนมากในอุปกรณ์ที่มีจุดมุ่งหมายเพื่อยืนหยัดท่ามกลางราชา

Vivo Xplay 5 Elite มีจอแสดงผล QHD Super AMOLED แบบโค้งคู่ขนาด 5.43 นิ้วบนกรอบโลหะสำหรับตัวเครื่อง ภายในมี Qualcomm Snapdragon 820 SoC ล่าสุดที่โอเวอร์คล็อกที่ 2.15 Ghz, Adreno 530 GPU, RAM LPDDR4 ขนาด 6GB และพื้นที่เก็บข้อมูลที่ไม่สามารถขยายได้ขนาด 128GB สำหรับกล้อง ด้านหลังเป็นเซ็นเซอร์ Sony IMX298 ความละเอียด 16MP พร้อมรูรับแสง f/2.0 และด้านหน้าเป็นเซ็นเซอร์ 8MP เมื่อคำนึงถึงข้อกำหนดเหล่านี้และโครงสร้างโลหะของอุปกรณ์ ก็ไม่น่าแปลกใจเลยที่ราคาจะค่อนข้างแพงแม้กระทั่งสำหรับผู้บริโภคชาวจีน ด้วยราคา 4,288 หยวน (660 เหรียญสหรัฐ) นี่จึงเป็นเรือธงของจีนมากกว่ารุ่นกลางราคาไม่แพง

Vivo Xplay5 Elite ไม่ใช่สมาร์ทโฟนเพียงเครื่องเดียวในขณะนี้ที่มี RAM ขนาด 6GB Vernee ผู้ผลิต OEM สัญชาติจีนที่เป็นที่รู้จักน้อยและเพิ่งก่อตั้งใหม่ ตั้งเป้าที่จะให้ผู้บริโภคเข้าถึง RAM ในปริมาณมหาศาลได้มากขึ้นด้วยการเปิดตัวอุปกรณ์ระดับกลาง Vernee Apollo

Vernee Apollo จะมาพร้อม SoC ระดับไฮเอนด์ของ MediaTek อย่าง Helio X20 จะมี RAM ขนาด 6GB ตามที่กล่าวข้างต้น, พื้นที่เก็บข้อมูลภายใน 128GB, กล้องหลัง Sony IMX230 ความละเอียด 21MP และจอแสดงผล 2K ขนาด 5.5 นิ้ว ทั้งนี้ Apollo จะมีราคา 399.99 ดอลลาร์ ข้อมูลสื่อมวลชนที่ส่งถึงเราไม่มีการกล่าวถึงราคาของจีนหรือตลาดเป้าหมาย ดังนั้นโทรศัพท์จึงยังค่อนข้างลึกลับอยู่บ้าง

โทรศัพท์ทั้งสองเครื่องนี้ขอให้เราถามคำถามใช่ไหม ต้องการจริงๆ ตอนนี้ RAM เยอะมากเหรอ?

เพื่อตอบคำถามนี้ เราต้องเข้าใจว่า Android จัดการการจัดการหน่วยความจำและ RAM อย่างไร Mishaal ทำงานได้อย่างยอดเยี่ยมในการอธิบายความซับซ้อนของการจัดการหน่วยความจำของ Android บทความก่อนหน้านี้ซึ่งยังคงรักษาความเกี่ยวข้องไว้หกเดือนต่อมา

"วิธีที่ Android จัดการการจัดการหน่วยความจำเป็นเช่นนี้ แทนที่จะฆ่าทุกกระบวนการทันทีหลังจากกิจกรรมสิ้นสุดลง (เช่น เมื่อคุณกดปุ่มโฮมเพื่อออกจากแอป) กระบวนการจะถูกเก็บไว้ในหน่วยความจำจนกว่าระบบจะต้องฆ่ามันเพื่อเพิ่มหน่วยความจำให้มากขึ้น ระบบจะตัดสินใจอย่างไรว่าจะเก็บกระบวนการใดไว้และควรปิดกระบวนการใด ไดรเวอร์ LMK (Low Memory Killer) ทุกกระบวนการได้รับการกำหนดค่า 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) อุปกรณ์ของคุณ จะฆ่ากระบวนการที่กำหนดเป็น 'ว่างเปล่า' เมื่อหน่วยความจำว่างของคุณเหลือต่ำกว่า 32MB กระบวนการที่กำหนดเป็น 'พื้นหลัง' เมื่อหน่วยความจำว่างต่ำกว่า 28MB และแอปเบื้องหน้าเมื่อหน่วยความจำว่างเหลือต่ำกว่า 10MB (สวรรค์ห้าม!) ตอนนี้ ค่า minfree เหล่านี้ไม่ปกติในอุปกรณ์ส่วนใหญ่ในปัจจุบัน เนื่องจากผู้ผลิตชอบที่จะปรับแต่งค่าเหล่านี้ตามความต้องการ ขึ้นอยู่กับว่าพวกเขารู้สึกว่ามันเหมาะสมกับอุปกรณ์ของพวกเขามากที่สุดอย่างไร แต่สิ่งที่คุณควรหลีกเลี่ยงจากคำอธิบายสั้น ๆ นี้คือ ยิ่งคุณมีหน่วยความจำว่างมากเท่าไร คุณก็จะยิ่งเห็นว่ากระบวนการที่สำคัญถูกทำลายน้อยลงเท่านั้น"

ดังที่ Mishaal กล่าวไว้ ค่าจริงจะแตกต่างกันไปในแต่ละ OEM ดังนั้นคุณจึงอาจมีประสบการณ์ที่แตกต่างกันกับการทำงานแบบมัลติทาสก์บนโทรศัพท์เครื่องอื่นที่มีสเปคใกล้เคียงกัน ตัวแปรอื่นที่ผสมกันคือปริมาณของโบลต์แวร์บนอุปกรณ์ Android UX ที่ได้รับการดัดแปลงอย่างหนักเช่น TouchWiz มีแนวโน้มที่จะอัดแน่นไปด้วยฟีเจอร์มากมายมากกว่า Android ตามสต็อก AOSP และด้วยเหตุนี้ จึงต้องจัดสรรทรัพยากรจำนวนมากให้กับระบบเพื่อให้ทำงานในระดับที่ OEM ต้องการ มันถึง ซึ่งจะทำให้มีพื้นที่น้อยลงสำหรับแอปของบุคคลที่สามในการแคช ซึ่งจะทำให้การฆ่าหน่วยความจำเหลือน้อยแย่ลง

ส่วนใหญ่ อ่อนนุ่ม

"ข้อแตกต่างหลักระหว่างอุปกรณ์ที่มี RAM 2GB เทียบกับอุปกรณ์ที่มี RAM 3GB ก็คืออุปกรณ์ที่มี RAM 3GB ของ RAM ควรจะแคชกระบวนการได้มากขึ้นในเบื้องหลังโดยไม่ทริกเกอร์ไดรเวอร์ LMK เพื่อปิดการทำงาน"

ตามทฤษฎีแล้ว RAM ที่มากขึ้นในระดับฮาร์ดแวร์ควรนำไปสู่กระบวนการที่เหลือแคชมากขึ้นที่ระดับระบบปฏิบัติการและกลุ่มที่ใหญ่ขึ้นสำหรับ OEM ที่จะเข้าร่วม แต่บ่อยครั้งที่แม้แต่บนอุปกรณ์ที่มี RAM ขนาด 2GB คุณจะเห็น RAM ที่ว่างมากขึ้นแม้ว่าระบบและแอปจะล็อคสิ่งที่พวกเขาต้องการแล้วก็ตาม นี่คือแกลเลอรีเดียวกันจากโพสต์ของ Mishaal ซึ่งเปรียบเทียบ RAM ฟรีในอุปกรณ์ต่างๆ:

อย่างที่คุณเห็น อุปกรณ์ที่มี UI ที่เบาที่สุด เช่น Nexus 5 และ Nexus 6 จะมีสัดส่วน RAM ที่ว่างบนอุปกรณ์มากที่สุด แม้แต่รุ่นที่หนักที่สุด Samsung Galaxy Note 5 ที่มี RAM ขนาด 4GB และ TouchWiz ในการบูตก็มี RAM ประมาณ 1.7GB ที่พร้อมสำหรับการแคชแอป แม้ว่าจะมี RAM ว่างจำนวนมาก แต่ Note 5 ก็ประสบปัญหาการทำงานหลายอย่างพร้อมกันซึ่งอุปกรณ์จะใช้การจัดการหน่วยความจำเชิงรุก นี่เป็นเพราะการเลือกค่า LMK ของ OEM: การสูบ RAM มากขึ้นในระดับฮาร์ดแวร์จะไม่ช่วยอะไร! การแก้ไขสำหรับ Note 5 สำหรับการปรับปรุงการทำงานหลายอย่างพร้อมกันนั้น จริงๆ แล้วเกี่ยวข้องกับการปรับแต่งค่า LMK เหล่านี้ให้มากขึ้น มัลติทาสกิ้งที่เป็นมิตรมากกว่าการตั้งค่าหุ้นของ Samsung ซึ่งเป็นเรื่องที่น่าขันสำหรับอุปกรณ์ที่มุ่งเน้น ผลผลิต ดังนั้นการมี RAM เพิ่มขึ้นจะไม่ทำให้อุปกรณ์ทำงานหลายอย่างพร้อมกันได้ง่ายขึ้นโดยอัตโนมัติ

กลับมาที่แกลเลอรีอีกครั้ง ส่วนหนึ่งของ RAM ที่ว่างที่แสดงนั้นถูกใช้สำหรับการแคชกระบวนการของแอปแล้ว แต่ส่วนหนึ่งของสิ่งนี้ยังคงไม่ได้ใช้งานจริง ๆ โดยไม่ได้ทำอะไรเลย นี่คือภาพหน้าจอบางส่วนจาก OnePlus One ของฉันที่แสดง RAM ว่างที่แสดง จากนั้นแบ่งออกเป็น RAM ที่แคชและ RAM ที่ไม่ได้ใช้งาน:

แม้แต่ในช่วงเวลาสั้นๆ ประมาณ 1 วินาทีที่ฉันต้องใช้เวลาเปลี่ยนจากเกมที่ใช้งานอยู่และเลือกตัวเลือกเพื่อแสดงกระบวนการที่แคชไว้ ระบบก็ยังทำงานเพื่อลด RAM จริงที่ใช้ลง สิ่งนี้เกิดขึ้นเนื่องจากเกม NFS No Limits ในกรณีนี้ มีการเปลี่ยนแปลงลำดับความสำคัญ โดยย้ายจากกระบวนการเบื้องหน้าไปเป็นกระบวนการเบื้องหลัง การดำเนินการนี้ทำขึ้นเพื่อให้ระบบปฏิบัติการทำงานได้อย่างราบรื่นตลอดเวลา เนื่องจาก RAM ที่ใช้งานอยู่เปลี่ยนจาก 2.5GB เป็น 1.9GB ในขณะที่กระบวนการเกม NFS No Limits ถูกแคช เมื่อเกมเปลี่ยนลำดับความสำคัญ ตอนนี้ก็สามารถฆ่าได้หากระบบปฏิบัติการต้องการ RAM ที่ว่างมากขึ้นจริงๆ ไม่จำเป็นต้องมีการโต้ตอบกับผู้ใช้ที่นี่

ประเด็นของตัวอย่างนี้คือเพื่อเน้นว่าการจัดการหน่วยความจำของ Android มีการพัฒนาอย่างไรเพื่อให้มีประสิทธิภาพมากขึ้นในการจัดลำดับความสำคัญของระบบและกระบวนการทั้งหมด มีแอปมากมายเท่านั้นที่จะยังคงแคชไว้ตลอดเวลา ระบบปฏิบัติการจะไม่ใช้ RAM ที่ว่างทั้งหมดในกระบวนการแคช ส่วนหนึ่งของ RAM ที่ว่างถูกปล่อยให้ไม่ได้ใช้งาน นี่เป็นการออกแบบสำหรับโอกาสที่กระบวนการอาจจำเป็นต้องขยายขนาดการใช้ RAM อย่างรวดเร็ว

มีการจำกัดการจัดสรร RAM สำหรับกระบวนการแอปเช่นกัน ตามที่ OEM กำหนดอีกครั้งสำหรับโทรศัพท์แต่ละเครื่อง ตามที่ โพสต์สนทนาเก่า โดย Dianne Hackborn วิศวกรกรอบงาน Android มีข้อจำกัดใน ฮีปจาวา โดยที่วัตถุ Java จะอยู่ก่อนที่จะเริ่มการรวบรวมขยะ แต่ยังสามารถขยายได้ด้วยการใช้ NDK อย่างชาญฉลาด พูดง่ายๆ ก็คือหมายความว่า RAM มีขีดจำกัดสูงสุดที่แอปใดๆ ที่ต้องการทำงานบนอุปกรณ์นั้นจะมีให้ใช้งานได้ สำหรับอุปกรณ์รุ่นเก่า ฮีปนี้ถูกตั้งค่าเป็น 24MB แต่ในอุปกรณ์รุ่นล่าสุด ขนาดเพิ่มขึ้นด้วยการเพิ่ม RAM ในอุปกรณ์ตลอดจนความต้องการฮาร์ดแวร์ที่เพิ่มขึ้น ของแอนดรอยด์ เอกสารคำจำกัดความความเข้ากันได้ สำหรับ แอนดรอยด์ 6.0 กล่าวถึง (ส่วนที่ 3.7) ค่าต่ำสุดที่ฮีปเหล่านี้ควรตั้งค่าโดย OEM สำหรับการเปรียบเทียบ OnePlus One ของฉันบน CM12.1 มีขีดจำกัด 192MB สำหรับฮีป Dalvik VM ปกติ และอนุญาตให้มีได้มากถึง 512MB สำหรับแอปที่ระบุ android: largeHeap=true ในรายการแอปพลิเคชัน ตามทฤษฎีแล้ว แอปเดียวสามารถใช้ RAM บนอุปกรณ์ของฉันได้สูงสุด 512MB เท่านั้น นอกเหนือจากนั้น การรวบรวมขยะจะเริ่มต้นขึ้นเพื่อให้กระบวนการของระบบที่จำเป็นอื่นๆ ไหลลื่นอย่างอิสระ

ตอนนี้รวมขีดจำกัดขนาดฮีปสำหรับแอปที่มีค่า LMK ที่กำหนดให้ตามลำดับความสำคัญและ ระบบปฏิบัติการยืนกรานที่จะรักษา RAM ว่างจำนวนหนึ่งไว้ และคุณสามารถจินตนาการได้ว่า Android ทำงานหลายอย่างได้อย่างไร ทำงาน เป็นกลไกที่ซับซ้อนซึ่งเกี่ยวข้องกับตัวแปรมากมายระหว่างฮาร์ดแวร์ ซอฟต์แวร์ และตัวแอปเอง ปรับแต่งอย่างละเอียดเพื่อให้แม้แต่อุปกรณ์พื้นฐานที่สุดทำงานได้ในขณะที่ยังคงปล่อยให้เรือธงที่ดีที่สุดสามารถใช้ประโยชน์จากศักยภาพของมันได้อย่างเต็มที่ในทางทฤษฎี ในทางปฏิบัติแล้ว นี่ไม่ใช่โลกที่สมบูรณ์แบบ ดังนั้นจึงไม่มีอะไรเกิดขึ้นเลย ซึ่งหมายความว่าไม่มีการรับประกันว่าอุปกรณ์ที่มี RAM ขนาด 4GB จะทำงานเท่ากันกับอุปกรณ์ที่มี RAM ขนาด 4GB และไม่ได้หมายความว่า RAM พิเศษที่เกินเกณฑ์ที่กำหนดจะทำให้คุณมีการทำงานหลายอย่างพร้อมกันและการจัดการหน่วยความจำเพิ่มขึ้นตามสัดส่วนโดยตรง

การปฏิบัติและอนาคต

เลยกลับมาที่คำถามเดิมว่า คุณต้องการ RAM ขนาด 6GB ในอุปกรณ์ของคุณในต้นปี 2559 หรือไม่? สำหรับฉันคำตอบคือไม่

อุปกรณ์ส่วนใหญ่ที่ฉันเป็นเจ้าของมี RAM LPDDR3 ขนาด 3GB และอีกเครื่องหนึ่งมี RAM ขนาด 4GB และไม่มีความแตกต่างที่เห็นได้ชัดเจนในด้านประสิทธิภาพเมื่อต้องทำงานหลายอย่างพร้อมกัน นี่คือการสาธิตการทำงานหลายอย่างพร้อมกันจากรีวิว OnePlus X ล่าสุดของฉัน อุปกรณ์ที่มี RAM ขนาด 3GB และ ROM Android ที่ใกล้เคียงกับสต็อก:

อุปกรณ์ไม่มีปัญหาในการสลับระหว่าง 12 แอป (13 แอปหากคุณนับเครื่องบันทึกหน้าจอที่ใช้งานอยู่) โดยไม่ต้องปิดแอปเหล่านี้เลย ไม่มีการโหลดซ้ำหรือวาดใหม่ และประสบการณ์นี้ยังคงสม่ำเสมออย่างน่าประหลาดใจตลอดการใช้งานรายวันโดยไม่ต้องรีบูตหรือปิดแอปด้วยตนเอง ผู้บริโภคทั่วไปไม่จำเป็นต้องสลับระหว่างแอพจำนวนมากเหล่านี้ระหว่างการใช้งานจริง!

แต่จะเกิดอะไรขึ้นถ้าผู้ใช้ต้องการสลับระหว่างเกมมากมายเหล่านี้แทน? ตกลงกันว่าปัจจัยที่กล่าวมาข้างต้นจะเข้ามามีบทบาทเพื่อให้สามารถสลับระหว่างเกมเพียงไม่กี่เกมได้ดีที่สุด ในสภาวะเช่นนี้ การมี RAM จริงมากขึ้นจะทำให้อุปกรณ์เก็บเกมในหน่วยความจำได้มากขึ้น แต่ข้อแตกต่างของข้อได้เปรียบนี้คือ เกมจำนวนมากมักจะต้องโหลดตัวเองใหม่เมื่อทำงานหลายอย่างพร้อมกัน! ความตั้งใจของพวกเขาคือการหลีกเลี่ยงกลไกการโกงไม่ให้จัดการข้อมูลเกมในขณะที่เกมกำลังทำงานอยู่ ดังนั้นการรีโหลด/ซิงค์ใหม่/รีเฟรชจะบังคับให้มีการตรวจสอบความสมบูรณ์ให้กลับมาเล่นอีกครั้ง ความตั้งใจของพวกเขาแตกต่างออกไป แต่สิ่งนี้ทำให้หลาย ๆ เกมมีผู้สมัครที่ไม่ดีพอที่จะทำงานหลายอย่างพร้อมกันได้

ยังมีปัจจัยอื่นๆ ที่ทำให้คุณไม่สามารถใช้ประโยชน์จาก RAM อันรุ่งโรจน์เหล่านั้นได้ หากคุณพบงาน/หลายงานรวมกันซึ่งต้องใช้ LPDDR4 RAM ขนาด 6GB ของอุปกรณ์ คุณจะมีปัญหาคอขวดที่ใหญ่กว่ามากในรูปแบบของ SoC มือถือ จริงอยู่ที่ Snapdragon 820 และ Helio X20 อาจเป็นโปรเซสเซอร์หลักของบริษัทที่เกี่ยวข้อง แต่ยังคงเป็น SoC บนมือถือ ดังนั้นจึงมีข้อจำกัดอื่นๆ เช่น การสร้างความร้อน การกระจายความร้อน การควบคุมความร้อน และแบตเตอรี่ ชีวิตซึ่งจะทำให้พวกเขามีทางเลือกที่ไม่ดีสำหรับงานที่มีความเข้มข้นเพียงพอที่จะใช้ RAM จำนวนมากเป็นระยะเวลานาน เวลา. ในกรณีเช่นนี้ คุณควรใช้ระบบที่ไม่ได้มีไว้สำหรับถือไว้ในมือจะดีกว่า อันหนึ่งที่มีข้อจำกัดเสรีมากกว่าในเรื่องความร้อนที่มันสามารถสร้างได้และพลังงานที่มันสามารถใช้ได้

ท้ายที่สุดแล้ว ไม่ว่าคุณจะมี RAM ว่างเท่าใด แอปต่างๆ ก็ยังคงถูกไล่ออกจากระบบ นั่นเป็นเพียงวิธีการทำงานของการจัดการหน่วยความจำ การเพิ่ม RAM ในปริมาณมากยังมีข้อดีอยู่ เช่น การเพิ่มขนาดฮีปเพิ่มเติมจะช่วยได้ ขับเคลื่อนสินทรัพย์บิตแมป บนจอแสดงผลที่มีความละเอียดสูงกว่า ทำให้เราก้าวไปไกลกว่าความละเอียด QHD บนอุปกรณ์ของเรา ขนาดฮีปที่เพิ่มขึ้นตามแนวโน้มทั่วทั้งตลาดจะนำไปสู่แอปที่สามารถทำได้มากขึ้น เว้นแต่ว่า RAM จะถูกล็อคไม่ให้แตะต้องได้ ก็จะมีการใช้งานบางอย่างหรืออย่างอื่นเสมอ แต่เมื่อพิจารณาว่าหน้าจอดูเหมือนจะอยู่ระหว่าง 1080p ถึง 1440p บนเรือธง เราอาจเห็นว่า 4GB เป็นมาตรฐานที่สมเหตุสมผลไปอีกปีหรือสองปี

โดยสรุป เราได้ตอบคำถาม: เราทำหรือไม่ ต้องการจริงๆ ตอนนี้ RAM เยอะมากเหรอ? ไม่ เราไม่ทำ สำหรับอุปกรณ์ที่มีราคาเป็นปัจจัยหนึ่งที่ต้องรักษาให้ต่ำ RAM ขนาด 3GB หรือ 4GB ก็เพียงพอแล้ว สำหรับการติดธงที่มีความต้องการจากผู้ใช้ที่ไม่ใส่ใจเรื่องราคามากนัก ก็จะไม่ส่งผลเสียต่อการพิสูจน์ในอนาคต ในฐานะลูกค้า โปรดทราบว่าคุณยังไม่ได้ใช้ RAM ทั้งหมดนั้น

คุณคิดอย่างไรกับโทรศัพท์ที่มี RAM ขนาด 6GB แจ้งให้เราทราบความคิดของคุณในความคิดเห็นด้านล่าง!