Google санах ойн хэрэглээг илүү хатуу хянаж эхэлжээ
Google Android 17-д шуурхай санах ойн хэрэглээг илүү хатуу хянах шинэ механизм нэвтрүүлж эхэлжээ. Memory Limiter нэртэй уг систем одоогоор Pixel ухаалаг утсанд ашиглагдаж байгаа бөгөөд ирэх жилийн турш бусад үйлдвэрлэгчдийн төхөөрөмжүүдэд үе шаттайгаар нэвтрэх төлөвтэй байна.
Шинэ шийдлийн дагуу Android 17 хэт их RAM ашиглаж буй аппыг эхлээд удаашруулж, хэрэв тухайн апп санах ойг үргэлжлүүлэн эзэлсээр байвал процессыг нь хүчээр дуусгах боломжтой аж.
Google-ийн тайлбарласнаар, энэ өөрчлөлтийн шалтгаан нь зөвхөн муу оновчлолтой аппууд биш юм. Санах ойн үнэ өсөж байгаагаас шинэ төхөөрөмж үйлдвэрлэгчид RAM-ийн хэмжээг өмнөх түвшинд хадгалах, зарим тохиолдолд бүр бууруулах хандлагатай болсон. Харин аппуудын шаардлага эсрэгээрээ улам нэмэгдсээр байна.
Android 17 аппуудыг хэрхэн хязгаарлах вэ
Memory Limiter нь Linux cgroup v2 түвшинд ажиллаж, аппын тусдаа процессуудын санах ойн хэрэглээг хянадаг. Хязгаарлалт нь тухайн апп Android-ийн ямар хувилбарт зориулж анх хөгжүүлэгдсэнээс үл хамааран Android 17 дээрх бүх аппад үйлчилнэ.
Систем дэлгэц дээр идэвхтэй харагдаж буй апп болон арын горимд ажиллаж буй процессуудад өөр өөр лимит ашигладаг. Арын процессуудад идэвхтэй апптай харьцуулахад хамаагүй бага санах ой ашиглах зөвшөөрөл олгоно.
Зөөлөн хязгаарт хүрэх үед Android аппыг шууд хаахгүй. Эхлээд тухайн аппын эзэлж буй санах ойг чөлөөлөх оролдлого хийдэг. Үүнд удаан хугацаанд ашиглагдаагүй, шаардлагатай үед файлаас дахин ачаалж болох хуудсуудыг устгах, идэвхгүй өгөгдлийг zRAM руу шилжүүлэх зэрэг арга багтана.
zRAM нь шуурхай санах ойн дотор өгөгдлийг шахсан хэлбэрээр хадгалдаг хэсэг юм. Энэ нь аппыг үргэлжлүүлэн ажиллуулах боломж олгодог ч өгөгдлийг шахах, задлахад процессорын нэмэлт нөөц шаардагдана. Үүний улмаас интерфэйс удаашрах, гацалт мэдрэгдэх магадлалтай.
Хэрэв апп санах ойн хэрэглээгээ үргэлжлүүлэн нэмэгдүүлж, өөрт олгосон zRAM-ийн хэмжээг бүрэн ашиглаж дуусвал шинэ санах ой хуваарилах оролдлого алдаагаар дуусна. Үүний дараа Android тухайн процессыг хүчээр хааж болзошгүй.
Android 17-ийн санах ойн хязгаарууд
Google хамгийн түгээмэл ухаалаг утасны тохиргоонуудад зориулсан стандарт хязгааруудыг аль хэдийн нийтэлжээ.
| Утасны RAM | Дэлгэц дээрх апп | Арын процесс | zRAM хязгаар |
|---|---|---|---|
| 4 ГБ | 2 ГБ | 1 ГБ | 1 ГБ |
| 6 ГБ | 4 ГБ | 2 ГБ | 2 ГБ |
| 8 ГБ | 5 ГБ | 3 ГБ | 3 ГБ |
| 12 ГБ | 8 ГБ | 4 ГБ | 4 ГБ |
| 16 ГБ | 10 ГБ | 5 ГБ | 5 ГБ |
Ингэснээр Android дэлгэц дээр идэвхтэй байгаа аппад төхөөрөмжийн бодит RAM-ийн ойролцоогоор тал хувиас гуравны хоёр хүртэлх хэмжээг ашиглах боломж олгож байна. Харин арын процессуудад нийт санах ойн дөрөвний нэгээс гуравны нэг орчим хэмжээний хязгаар тавигдана.
Тооцоололд үйлдвэрлэгчийн зарласан RAM-ийн хэмжээ бус, системд бодитоор харагдаж буй MemTotal үзүүлэлтийг ашигладаг. Энэ нь ихэвчлэн төхөөрөмжийн физик санах ойгоос 500 МБ-2 ГБ болон түүнээс ч илүү хэмжээгээр бага байдаг. Учир нь RAM-ийн тодорхой хэсгийг график, модем, камер, хамгаалагдсан орчин болон бусад тоног төхөөрөмжийн бүрэлдэхүүнд нөөцөлдөг байна.
Урьдчилан суулгасан аппууд ч хаагдана
Memory Limiter нь бараг бүх энгийн аппын процессыг хянах бөгөөд үүнд үйлдвэрлэгчийн урьдчилан суулгасан програмууд ч багтана. Samsung, Google болон бусад компанид өөрийн аппуудаа хязгаарлалтаас чөлөөлөх тусгай “цагаан жагсаалт” байхгүй гэж мэдээлэгдэж байна.
Харин Android-ийн зайлшгүй шаардлагатай системийн чухал процессууд энэ хязгаарлалтад хамаарахгүй.
Мөн аппын төлөвийг тусад нь тооцдог. Дэлгэц дээр интерфэйс нь харагдаж буй процесс илүү өндөр хязгаартай байх бол арын үйлчилгээ болон боловсруулагч процессууд илүү хатуу лимиттэй ажиллана. Кэшлэгдсэн процессуудыг Android царцааж, тэдний эзэлж буй санах ойг аль болох ихээр чөлөөлөх боломжтой.
Яагаад ийм хязгаарлалт хэрэгтэй болов
Өмнө нь санах ойн алдагдалтай нэг апп бүх системд ачаалал үүсгэж чаддаг байсан. Ийм үед Android санах ойг илүү идэвхтэй цэвэрлэж, хэвийн ажиллаж байсан бусад арын аппуудыг хаах шаардлагатай болдог байв.
Үүний улмаас хэрэглэгч өмнө нь нээсэн апп руугаа буцахад шууд сэргээгдэхийн оронд бүрэн шинэчлэн ачаалагдах тохиолдол гардаг. Энэ нь хэрэглэгчийн туршлагыг муутгаж, төхөөрөмжийн хурд, тогтвортой байдалд сөргөөр нөлөөлдөг байжээ.
Санах ойн удирдлагын системд нэмэлт ачаалал үүсэх нь процессорын хэрэглээ, эрчим хүчний зарцуулалтыг нэмэгдүүлж, интерфэйсийн гацалт, тасалдал үүсгэх эрсдэлтэй.
Memory Limiter энэ хандлагыг өөрчилж байна. Android одоо хэвийн бус их санах ой хэрэглэж буй аппын асуудлыг тухайн апп дотор нь хязгаарлахыг оролдоно. Ингэснээр нэг муу ажиллаж буй апп бүх системийн ажиллагааг дордуулах боломжийг багасгах зорилготой.
Google-ийн мэдэгдэж буйгаар, энгийн хэрэглээний ихэнх тохиолдолд хэрэглэгчид энэ хязгаарлалттай бараг тулгарахгүй. Android 17-д босгуудыг зориуд өндөр тавьсан бөгөөд энэ нь голчлон санах ойн ноцтой алдагдал болон хэвийн бус хэрэглээтэй нөхцөлд зориулагдсан аж.
Хөгжүүлэгчид апп яагаад хаагдсаныг мэдэх боломжтой
Google хөгжүүлэгчдэд зориулан тусгай оношилгооны хэрэгслүүд нэмсэн байна. Хэрэв процесс Memory Limiter-ийн улмаас зогссон бол Android дууссан шалтгааныг REASON_OTHER гэж хадгалж, MemoryLimiter:AnonSwap гэсэн мөрөөр тэмдэглэх юм.
Мөн системийг хязгаарт ойртох үед санах ойн dump автоматаар үүсгэхээр тохируулах боломжтой. Android Vitals-д энгийн санах ой болон swap санах ойн хэрэглээний үзүүлэлтүүд нэмэгдсэн бол Firebase Crashlytics 20.1.0 нь санах ой дутагдах алдаа болон Memory Limiter-ээр процесс дуусах тохиолдолд нэмэлт оношилгоо хийх боломжтой болжээ.
Хөгжүүлэгчид ADB ашиглан төхөөрөмжийн одоогийн хязгааруудыг харах, Memory Limiter-ийг түр хугацаанд унтраах, эсвэл тестийн үед тодорхой процесст гараар лимит тогтоох боломжтой.
Одоогоор шинэ систем Pixel ухаалаг утаснуудаас эхлэн түгэж эхэлсэн байна. Google ирэх нэг жилийн хугацаанд 4-16 ГБ болон түүнээс дээш RAM-тай Android төхөөрөмжүүдэд илүү олон үйлдвэрлэгч Memory Limiter-ийг нэвтрүүлнэ гэж хүлээж байна.