Chia lại bộ nhớ trong android

-
Sử dụng tủ đồ để thu xếp ngăn nắp những trang Lưu với phân các loại nội dung dựa vào lựa chọn ưu tiên của bạn.

Nền tảng loadingvn.com vận động trên cơ sở bộ nhớ lưu trữ trống là bộ nhớ bị lãng phí. Khối hệ thống sẽ luôn cố thực hiện tất cả bộ nhớ có sẵn. Ví dụ: sau khi các vận dụng đã đóng, hệ thống sẽ vẫn giữ gìn chúng trong bộ nhớ để tín đồ dùng có thể nhanh chóng chuyển về áp dụng khi được mở lại. Vì vì sao này, các thiết bị game loadingvn.com thường chạy với cực kỳ ít bộ nhớ trống. Vấn đề quản lý bộ lưu trữ là rất đặc trưng để phân bổ bộ nhớ đúng cách giữa các quy trình hệ thống quan trọng đặc biệt và nhiều vận dụng của fan dùng.

Bạn đang xem: Chia lại bộ nhớ trong android

Trang này thảo luận những tin tức cơ bạn dạng về cách loadingvn.com phân bổ bộ nhớ cho hệ thống và cho các ứng dụng của bạn dùng. Nó cũng giải thích cách hệ quản lý điều hành xử lý các tình huống dung lượng bộ nhớ thấp.

Loại cỗ nhớ

Thiết bị loadingvn.com chứa tía loại bộ nhớ khác nhau: RAM, zRAM và bộ nhớ lưu trữ lưu trữ.Vui lòng chú ý cả CPU cùng GPU đều truy vấn vào cùng một RAM.

*

Hình 1. các loại bộ nhớ – RAM, zRAM và bộ nhớ lưu trữ

RAM là loại bộ nhớ lưu trữ nhanh nhất, tuy vậy thường bị số lượng giới hạn về dung lượng. Những thiết bị cao cấp thường có dung tích RAM bự nhất.

zRAM là 1 phân vùng RAM được dùng để hoán thay đổi không gian. đa số thứ các được nén lại lúc để vào zRAM, tiếp đến được bung file khi sao chép khỏi zRAM. Phân vùng RAM này tăng hoặc giảm dung tích khi các trang được di chuyển vào hoặc thoát ra khỏi zRAM. Những nhà sản xuất thiết bị có thể đặt form size tối đa cho nó.

Bộ nhớ lưu trữ chứa tất cả dữ liệu cố kỉnh định, chẳng hạn như khối hệ thống tệp và mã đối tượng đi kèm theo cho toàn bộ ứng dụng, thư viện và nền tảng. Bộ nhớ lưu trữ có dung tích lớn hơn những so với 2 loại bộ nhớ còn lại kia. Bên trên loadingvn.com, dung lượng lưu trữkhông được dùng cho vấn đề hoán đổi không khí như những phương thức thực thi khác trên hệ quản lý Linux, vì việc ghi thường xuyên rất có thể làm lờ lững và giảm thời hạn sử dụng phương tiện lưu trữ.

Trang bộ nhớ

RAM được chia thành các trang. Thông thường, từng trang số đông có bộ nhớ là 4KB.

Trang rất có thể là làm việc trạng thái trống hoặc đang được sử dụng. Trang trống là phần dung lượng RAM chưa sử dụng. Những trang đang được sử dụng là RAM mà khối hệ thống đang sử dụng, bên cạnh đó được team thành các danh mục sau:

Bộ lưu giữ đệm: bộ nhớ lưu trữ do một tệp giữ trữ cung ứng (ví dụ: mã hoặc những tệp được links với bộ nhớ). Tất cả 2 loại bộ nhớ đệm:Riêng tư: thuộc sở hữu của một quá trình và không được phân tách sẻSửa đổi: bản sao vẫn sửa thay đổi của tệp trên bộ nhớ lưu trữ lưu trữ, có thể được dịch chuyển hoặc nén vào zRAM bởi kswapd nhằm tăng bộ nhớ lưu trữ trốngChia sẻ: Được sử dụng trong không ít quy trìnhSạch: bản chưa sửa thay đổi của tệp trên bộ nhớ lưu trữ, rất có thể được xóa bằngkswapd nhằm tăng bộ nhớ lưu trữ trốngẨn danh: bộ nhớ không được tệp giữ trữ cung cấp (ví dụ: được phân chia bởimmap() cùng với cờ MAP_ANONYMOUS được thiết lập)Sửa đổi: hoàn toàn có thể di chuyển/nén trong zRAM bằng kswapd nhằm tăng bộ nhớ lưu trữ trốngLưu ý: những trang sạch sẽ chứa bạn dạng sao của một tệp (hoặc 1 phần của tệp) có trong bộ lưu trữ lưu trữ. Trang thật sạch sẽ trở thành trang sửa thay đổi khi nó không thể chứa phiên bản sao của tệp (ví dụ: hiệu quả của một hoạt động trong ứng dụng). Trang sạch hoàn toàn có thể xóa được vày nó luôn có thể được chế tác lại bằng dữ liệu từ bộ lưu trữ lưu trữ; mặc dù không thể xóa những trang sửa đổi, nếu không dữ liệu sẽ bị mất.

Tỷ lệ trang trống và đã sử dụng sẽ biến hóa theo thời gian khi khối hệ thống chủ động quản lý RAM. Các khái niệm được ra mắt trong phần này là khóa xe để cai quản các trường hợp dung lượng bộ lưu trữ thấp. Phần tiếp theo của tư liệu này sẽ biểu hiện các tình huống này một cách cụ thể hơn.

Quản lý bộ lưu trữ thấp

loadingvn.com gồm hai cơ chế chủ yếu để cách xử trí các trường hợp về bộ lưu trữ thấp: kernel swap daemon (chuyển đổi bộ nhớ lưu trữ đã áp dụng thành bộ nhớ trống) và low-memory killer (đóng các chuyển động để tạo ra thêm bộ nhớ trống).

kernel swap daemon

Kernel swap daemon (kswapd) là một phần của Linux kernel, nó biến đổi bộ nhớ đã thực hiện thành bộ nhớ lưu trữ trống. Daemon (trình nền) vẫn chạy khi bộ nhớ trống bên trên thiết bị chuẩn bị hết. Linux kernel bảo trì bộ nhớ trống ở những ngưỡng cao với thấp.Khi bộ nhớ còn trống dưới ngưỡng thấp, kswapd sẽ ban đầu hoạt động để lấy lại cỗ nhớ. Một khi bộ nhớ trống đạt mang lại ngưỡng cao, kswapd sẽ ngừng việcthu hồi cỗ nhớ.

kswapd rất có thể lấy lại những trang sạch lúc xóa những trang đó do nó có bộ nhớ đệm cung ứng và không được sửa đổi. Nếu như một quy trình cố gắng xử lý một trang sạch đã biết thành xóa, thì khối hệ thống sẽ xào luộc trang đó từ bộ nhớ lưu trữ lưu trữ lịch sự RAM. Thao tác này được gọi là cách phân trang theo nhu cầu.

*

Hình 2. Đã xóa trang sạch mát do bộ nhớ đệm hỗ trợ

kswapd rất có thể di chuyển những trang sửa đổi bộ nhớ đệm riêng tư và các trang sửa thay đổi ẩn danh vào zRAM, vị trí chúng được nén. Bài toán này vẫn giải phóng bộ nhớ lưu trữ hiện gồm trong RAM (các trang trống). Trường hợp một quy trình cố tiếp cận một trang sửa đổi trong zRAM, thì trang đó sẽ tiến hành giải nén và chuyển trở lại RAM. Nếu quá trình liên kết với 1 trang nén bị hủy, thì trang đó sẽ bị xóa sổ zRAM.

Nếu dung lượng bộ lưu trữ trống giảm đi dưới một ngưỡng tốt nhất định, khối hệ thống sẽ bắt đầu đóng những quá trình.

*

Hình 3.

Xem thêm: Một Số Cách Tắt Ứng Dụng Chạy Ngầm Trên Android Khi Máy Bị Chậm

Đã dịch rời trang sửa đảo qua zRAM cùng nén

Mô đun tắt áp dụng khi bộ lưu trữ thấp

Có đôi khi kswapd thiết yếu giải phóng đủ bộ lưu trữ cho hệ thống. Vào trường thích hợp này, hệ thống sẽ sử dụngonTrimMemory()để thông tin cho ứng dụng là bộ lưu trữ sắp hết và nó sẽ giảm mức phân bổ. Nếu điều đó chưa đủ, kernel sẽ bước đầu hủy các quy trình đểgiải phóng cỗ nhớ. Nó sử dụng low-memory killer (LMK) để triển khai điều này.

Để quyết định cần vứt bỏ quy trình nào, LMK sẽ áp dụng điểm "hết cỗ nhớ" được gọi làoom_adj_scoređể ưu tiên các quy trình đang chạy. Những quy trình có điểm cao sẽ bị xóa trước. Ứng dụng nền thường sẽ bị loại bỏ bỏ đầu tiên, còn những quy trình hệ thống sẽ bị loại bỏ sau cùng. Bảng tiếp sau đây liệt kê những danh mục có điểm LMK từ cao đến thấp. Các mục trong danh mục có điểm số cao nhất ở hàng một sẽ bị xóa trước:

*

Hình 4. những quy trình của loadingvn.com, với điểm cao ở trên thuộc và điểm tốt ở dưới cùng

Dưới đó là nội dung mô tả cho các danh mục khác nhau trong bảng trên:

Ứng dụng nền: Ứng dụng đang chạy trước đây và hiện nay không hoạt động.Trước tiên, LMK sẽ loại bỏ các vận dụng nền, bước đầu với vận dụng cóoom_adj_score cao nhất.

Ứng dụng trước: Ứng dụng nền được sử dụng vừa mới đây nhất. Ứng dụng trước bao gồm mức độ ưu tiên cao hơn (điểm tốt hơn) so với những ứng dụng nền, vày nhiều khả năng người cần sử dụng sẽ chuyển sang ứng dụng đó hơn là một trong những trong những ứng dụng nền.

Ứng dụng trên màn hình chính: Đây là ứng dụng trình chạy. Việc loại trừ nó sẽ khiến cho hình nền cũng trở thành biến mất.

Dịch vụ: Dịch vụ ban đầu bằng các ứng dụng và tất cả thể bao gồm việc đồng điệu hóa hoặc sở hữu lên đám mây.

Các ứng dụng dễ dấn biết: người dùng hoàn toàn có thể nhận biết các ứng dụng không ở nền trướctheo một cách nào đó, ví dụ như chạy một quy trình tìm kiếm nhằm hiển thị một giao diện người dùng nhỏ dại hoặc nghe nhạc.

Ứng dụng bên trên nền trước: Ứng dụng hiện đang được sử dụng. Việc sa thải ứng dụng trên nền trước trông giống như một sự vắt ứng dụng, gồm thể cho tất cả những người dùng biết là vật dụng đang gặp gỡ sự cụ nào đó.

Cố định sở hữu tính liên tục (dịch vụ): Đây là các dịch vụ chính dành riêng cho thiết bị, ví dụ điển hình nhưđiện thoại với wifi.

Hệ thống: những quy trình của hệ thống. Khi các quy trình này bị hủy, điện thoại có thể khởi rượu cồn lại.

Gốc: các quy trình ở cung cấp rất tốt mà hệ thống sử dụng (ví dụ như kswapd).

Các nhà chế tạo thiết bị bao gồm thể biến đổi hành vi của LMK.

Đang đo lường mức thực hiện bộ nhớ

Kernel theo dõi toàn bộ các trang bộ lưu trữ trong hệ thống.

*

Hình 5. các trang được áp dụng theo các quy trình không giống nhau

Khi khẳng định dung lượng bộ lưu trữ mà một vận dụng đang dùng, hệ thống phải tính đến các trang sử dụng chung. Các ứng dụng truy cập cùng một dịch vụ thương mại hoặc thư viện sẽ được chia sẻ các trang cỗ nhớ. Lấy một ví dụ như thương mại & dịch vụ Google Play và vận dụng trò chơi hoàn toàn có thể đang chia sẻ dịch vụ vị trí. Điều này gây trở ngại cho việc xác định dung lượng bộ nhớ lưu trữ mà dịch vụ thương mại sử dụng bên trên từng ứng dụng.

*

Hình 6. các trang được share bởi hai vận dụng ( nghỉ ngơi giữa)

Để xác định dấu vết bộ nhớ lưu trữ cho một ứng dụng, chúng ta cũng có thể sử dụng ngẫu nhiên chỉ số nào dưới đây:

Kích thước setup thường trú (RSS): Số trang được share và không được chia sẻ mà vận dụng sử dụngKích thước thiết đặt theo phần trăm (PSS): Số trang không được chia sẻ mà áp dụng dùng và trưng bày đồng đều các trang được chia sẻ (ví dụ: nếu 3 tiến trình có phổ biến 3MB, thì mỗi tiến trình nhận được 1MB vào PSS)Kích thước mua đặt hiếm hoi (USS): Số trang không được chia sẻ mà ứng dụng thực hiện (không bao gồm các trang được phân chia sẻ)

PSS hữu ích cho những hệ quản lý điều hành muốn biết nấc dung lượng bộ nhớ mà tất cả quy trình sử dụng, vì các trang không được tính nhiều lần. PSS mất quá nhiều thời gian để giám sát và đo lường vì hệ thống cần xác định những trang được share và số lượng quy trình. RSS không rõ ràng giữa những trang được share và ko được share (giúp đo lường nhanh hơn) và cân xứng hơn nhằm theo dõi cầm cố đổitrong vượt trình phân bổ bộ nhớ.