Bagaimana partisi / file swap mempengaruhi sistem?

20

Beberapa teman mengatakan kepada saya bahwa ponsel Android mereka memiliki sangat sedikit (<100MB) memori yang tersedia untuk aplikasi biasa, karena OS dan beberapa layanan yang tidak dapat dibunuh mengambil sebagian besar RAM. Misalnya, satu ponsel dengan 512MB hanya menunjukkan memori yang tersedia 90MB, jadi hanya 2-3 aplikasi yang dapat berjalan secara bersamaan.

Saya bertanya-tanya apakah membuat partisi swap / file akan membantu, tetapi saya melihat beragam pendapat di seluruh web dan saya tidak yakin apa yang harus dilakukan. Ini pertanyaan saya:

(1) Apakah akan ada banyak halaman memori yang tidak sering digunakan untuk bertukar, terutama di OS dan layanan yang tidak dapat dibunuh?

(2) Bagaimana menukar halaman memori kecil akan merusak masa pakai memori flash? Apakah flash (atau kartu SD?) Melakukan level-aus secara otomatis?

(3) Apakah bertukar sangat membantu kinerja saat menjalankan beberapa aplikasi? Saya berasumsi jika jawaban untuk (1) adalah ya, itu akan.

(4) Apakah menulis ke flash terlalu lambat dan karenanya melukai respons ketika bertukar terjadi?

(5) Benarkah Android menyimpan mekanisme swapping dari kernel Linux, jadi selama ada partisi swapping / file, itu akan melakukan swapping tanpa konfigurasi tambahan?

Terima kasih sudah membaca.

hijau abadi
sumber

Jawaban:

8

Saya tidak berpikir akan ada banyak manfaat dengan swapping untuk Android, karena Android Application Life Cycle adalah bentuk swapping yang jauh lebih maju.

(1) Apakah akan ada banyak halaman memori yang tidak sering digunakan untuk bertukar, terutama di OS dan layanan yang tidak dapat dibunuh?

Anda tidak dapat menukar kernel OS bahkan di Desktop Linux dan Android sudah mematikan layanan ketika membutuhkan lebih banyak RAM. Jika vendor perangkat Anda bersikeras bahwa Anda harus menjalankan layanan yang tidak berguna setiap saat, maka root perangkat Anda.

(2) Bagaimana menukar halaman memori kecil akan merusak masa pakai memori flash? Apakah flash (atau kartu SD?) Melakukan level-aus secara otomatis?

Bahkan jika SD-card tidak memakai leveling, bertukar akan sangat menyakitkan.

(3) Apakah bertukar sangat membantu kinerja saat menjalankan beberapa aplikasi? Saya berasumsi jika jawaban untuk (1) adalah ya, itu akan.

Tidak dalam konteks Android. Tidak seperti OS tradisional yang akan terus mencoba melakukan proses sesuai permintaan Anda, Android akan memaksa Kill lebih lama, proses yang tidak digunakan dan mengambil kembali memori mereka; Pembunuhan ini berlangsung cepat karena aplikasi sudah akan menyimpan statusnya saat Anda beralih tugas.

(4) Apakah menulis ke flash terlalu lambat dan karenanya melukai respons ketika bertukar terjadi?

Mungkin, mungkin juga tidak. Perlu tolok ukur untuk itu.

(5) Benarkah Android menyimpan mekanisme swapping dari kernel Linux, jadi selama ada partisi swapping / file, itu akan melakukan swapping tanpa konfigurasi tambahan?

Saya tidak tahu apakah Android tetap menggunakan mekanisme swapping, tetapi meskipun demikian (atau jika Anda mengkompilasi kernel Anda sendiri), Anda masih memerlukan beberapa konfigurasi. Biasanya hanya memiliki fstabfile yang mengarah ke file swap dan melakukan swapon -a.

Sebenarnya saya punya alasan mengapa bertukar dapat merusak kinerja: ini mencegah Application Life Cycle, skema manajemen memori Android, untuk bekerja dengan benar.

Lie Ryan
sumber
Terima kasih atas jawabannya. Saya masih memiliki pertanyaan. Pada Samsung Fascinate, 10 layanan yang tidak dapat dibunuh menempati sekitar 110 juta memori. Ada 22 layanan lain yang dapat dijalankan yang berjalan tetapi "Aplikasi Berjalan" tidak menunjukkan aplikasi yang berjalan. Ini ponsel teman saya dan saya tidak tahu persis apa yang dia lakukan sebelumnya, tetapi sepertinya sangat mungkin banyak layanan / aplikasi dapat berjalan pada saat yang bersamaan. Saya tidak berpikir semua layanan latar belakang / aplikasi ini menggunakan semua halaman yang mereka butuhkan ketika mereka mulai. Selain itu, simpan status aplikasi + muat ulang dan mulai ulang aplikasi + pengembalian akan lambat juga.
evergreen
Cara lain untuk memikirkan masalah ini adalah ini: anggap masa hidup flash bukan masalah, haruskah Android bertukar? Jika tidak, apa perbedaan utama antara aplikasi Android dan aplikasi desktop yang membuat bertukar tidak berguna di Android? Saya tidak berpikir Android Life Cycle berfungsi untuk aplikasi desktop / server.
evergreen
@evergreen: Status aplikasi disimpan saat aplikasi beralih ke latar belakang (mis. ketika pengguna menekan home untuk berganti tugas). Kemudian, ketika beberapa aplikasi lain membutuhkan memori, aplikasi lama atau layanan latar belakang akan dipaksa mati (FK tidak membutuhkan waktu lama). Ini berarti tugas membunuh segera, karena keadaan aplikasi sudah lama disimpan. Ketika Anda memuat ulang aplikasi yang sudah ada dalam memori, Anda akan mendapatkan waktu memuat ulang tercepat; tetapi jika aplikasi sudah dibongkar, maka aplikasi perlu melakukan isi ulang penuh (yang merupakan situasi yang sama dengan swapping)
Lie Ryan
@evergreen: jika Anda menggunakan pembunuh tugas, maka Anda akan memaksa aplikasi untuk membongkar, dan Anda akan selalu harus melakukan isi ulang penuh, alih-alih memuat ulang cepat ketika aplikasi tetap berada di memori. Jika Anda menggunakan file swap / partisi, aplikasi (yang lebih lama) akan ditukar, dan memulihkan akan membutuhkan jumlah pekerjaan yang hampir sama dengan pengisian ulang penuh. Kecuali: dengan memuat ulang penuh, pengembang aplikasi telah memisahkan data persisten dengan data sementara, dan dapat mengoptimalkan apa yang harus disimpan dan apa yang tidak untuk meningkatkan penyimpanan. Sementara dengan mengembalikan swap, Anda membiarkan pengembang aplikasi tidak mengatakan, dan menukar segalanya.
Lie Ryan
@evergreen: Sekalipun menganggap masa pakai flash bukan masalah, Android seharusnya tidak bertukar, karena Application Life Cycle melakukan pekerjaan yang lebih baik. Android Life Cycle dirancang untuk lingkungan dengan keterbatasan memori, di lingkungan desktop dan server, Anda memiliki jumlah memori yang sangat besar, dan pengguna melakukan lebih banyak tugas banyak, dan mereka tidak mengharapkan program latar belakang untuk dimatikan oleh OS. Kelemahan Android Life Cycle adalah ia membutuhkan dukungan aplikasi. Aplikasi harus siap untuk dibunuh kapan saja, dan harus menyelamatkan negara pada titik yang telah ditentukan. Kompleksitas seperti itu tidak cocok untuk aplikasi desktop.
Lie Ryan
5

Pasti ada manfaatnya untuk bertukar, meskipun apa yang orang lain di Internet akan katakan kepada Anda. Cobalah dan lihat sendiri. Secara empiris, pada G1 atau ponsel lain dengan memori rendah, swap membuat ponsel berjalan lebih baik dan lebih cepat.

Ya, Android memiliki siklus hidup "manajemen tugas" bawaan, tapi itu tidak terlalu baik. Itu secara rutin membunuh proses ketika kehabisan memori, dan aplikasi diharapkan untuk menyimpan keadaan mereka menggunakan " Bundel " sehingga ketika Anda me-restart mereka, mereka memulai kembali dalam keadaan yang sama seperti yang terakhir.

Setelah Android menentukan bahwa ia perlu menghapus suatu proses, ia melakukan ini secara brutal, cukup dengan membunuhnya secara paksa. Kernel kemudian dapat segera mengklaim kembali semua sumber daya yang dibutuhkan oleh proses, tanpa bergantung pada aplikasi yang ditulis dengan baik dan responsif terhadap permintaan sopan untuk keluar. Mengizinkan kernel untuk segera mendapatkan kembali sumber daya aplikasi membuatnya jauh lebih mudah untuk menghindari situasi kehabisan memori yang serius.

Ini akan bagus jika itu benar-benar berhasil, dan akan lebih baik daripada pertukaran tanpa pandang bulu. Tetapi aplikasi tidak benar-benar menyelamatkan negara mereka; mereka hanya menyimpan jumlah minimal informasi untuk kembali ke keadaan itu. (Dan beberapa aplikasi bahkan tidak repot-repot melakukan ini.) Kembali ke keadaan itu membutuhkan waktu. Karena swap sebenarnya menyimpan seluruh keadaan aplikasi, yang hanya harus dimuat ulang, itu membuat pergantian aplikasi lebih cepat.

Jika Anda beralih ke aplikasi lain dari browser, misalnya, browser hampir selalu terbunuh, dan kemudian harus memuat ulang seluruh halaman dari Internet ketika Anda kembali ke sana. Ini membutuhkan waktu lebih lama daripada memuat ulang status dari swap, membuang-buang uang Anda jika Anda menggunakan paket data, dan menyebabkan masalah status saat halaman web dinamis.

Banyak aplikasi membutuhkan waktu yang lebih lama untuk memulai dari yang seharusnya, atau tidak benar-benar kembali ke kondisi yang sama ketika dihidupkan ulang, jadi menukarnya berfungsi lebih baik.

Saya menduga orang-orang yang senang dengan sistem persediaan menggunakan telepon mereka secara berbeda.

Haruskah saya menggunakan partisi swap dengan Cyanogenmod?

endolith
sumber
Jika Anda menyerahkannya ke Siklus Hidup, itu akan menjadi keputusan aplikasi untuk menyimpan data tambahan untuk meningkatkan kinerja (mis. Halaman web yang dimuat). Jika Anda menggunakan swap, itu adalah keputusan OS, tetapi OS tidak dalam posisi terbaik untuk menentukan apa yang harus disimpan dan apa yang tidak disimpan untuk mengoptimalkan kinerja terbaik, sehingga harus menyimpan dan memulihkan semuanya. Browser tidak mengunduh ulang halaman dari Internet jika Anda berpindah tugas, saya sering membuka Browser, beralih ke banyak permainan dan aktivitas lainnya, dan kembali ke Browser dengan halaman terakhir saya dengan semua yang ada di tempat dimuat secara instan.
Lie Ryan
Kanan. Tidak ada sistem yang optimal, tetapi swap lebih baik untuk sebagian besar aplikasi. Browser hanya memuat ulang halaman jika terbunuh sebelum Anda membukanya kembali. Pada ponsel dengan memori rendah, hampir selalu terbunuh.
endolith
@LieRyan - "kembali ke Browser dengan halaman terakhir saya dengan semua yang ada di tempat dimuat secara instan" apakah browser Anda mengembalikan posisi gulir pada halaman yang dibuka setelah memuat ulang? Itulah yang Chrome tidak lakukan (walaupun saya sangat menyukai browser ini) yang sangat disayangkan ketika Anda berhenti membaca di tengah-tengah beberapa halaman web yang agak masuk sebelum beralih ke, katakanlah, telepon ...
kerim
2

Saya memiliki Spice mi-435 (hanya dijual di India) yang memiliki RAM hanya 340 juta. Ya ampun, file swap sangat membantu. Ponsel saya menjalankan ICS pada RAM yang begitu rendah dan pasti memasukkan banyak dari status memori dan ada file swap yang sangat membantu. Semua status aplikasi ditransfer untuk swap ketika tidak digunakan secara aktif. Ini memberi ruang ponsel saya untuk lebih banyak aplikasi dan aplikasi yang membutuhkan RAM agar dapat berjalan dengan lancar dengan jauh lebih sedikit lag daripada sebelumnya. Meskipun ada masalah ketika saya membuka aplikasi yang telah saya gunakan sebelumnya. Butuh waktu untuk memuat kondisinya karena SD jauh lebih lambat daripada RAM kecepatan tinggi di papan. Tapi, opsi swap lebih baik untuk RAM yang lebih sedikit. Saya akan merekomendasikan untuk menukar partisi untuk RAM kurang dari 512M tetapi tidak lebih dari 512M.

Semoga bermanfaat.

sambit rout
sumber
1

Swap file membantu bahkan pada sistem dengan RAM yang lebih tinggi. Tablet quad core 1GB ram 7 inci saya mendapatkan dorongan multi-tugas besar dari membuang dalam pertukaran 2gb, pada kartu micro sd uhs-1. Dan tentu saja, harga memori turun dengan cepat, dan bahkan pada saat menulis konstan, nand flash seharusnya bertahan bertahun-tahun.

Saya pada dasarnya berpendapat, karena perbedaan kinerja sangat radikal, bahwa mungkin siapa pun dengan jumlah RAM yang sangat kecil harus melakukan ini. Bahkan itu mungkin harus datang sebagai opsi standar di android (bersama dengan cache aplikasi yang lebih besar, dan cache internet berukuran tepat).

Maksud saya Anda memiliki micro sd 64-128gb (uhs-1), atau bahkan uhs-2 yang keluar tahun ini, ditambah 16-64gb internal nand, sering "cepat" nand, yang merupakan jenis ssd primitif atau bahkan SSD, seperti yang digunakan pada windows slate - Anda tidak sepenuhnya mengisi semua ruang kecepatan tinggi dengan banyak. Kecepatan hanya benar-benar berperan dengan video, atau memuat aplikasi ke memori - yang persis digunakan di sini.

Tentu saja idealnya, produsen akan lebih fokus pada RAM, daripada resolusi atau core tambahan, karena jelas kecepatan sistem mendapat banyak manfaat dari ram yang lebih tinggi - dan mereka mungkin juga harus meningkatkan kecepatan penyimpanan internal juga (seperti beralih ke sistem tipe ssd penuh) , atau minimal "fast" nand. Namun sementara itu, sementara resolusi tinggi cenderung menyebabkan semacam defisit RAM di semua perangkat, file swap, dan caching ke sd eksternal yang cukup tajam masuk akal.

Memang akan menyenangkan untuk melihat beberapa browser menyimpan caching yang lebih penuh juga, sebagian besar browser lambat, atau fitur rendah, jarang fitur cepat dan penuh - dan itu sebagian karena ruang untuk cache aplikasi pada drive internal sangat kecil. Mereka dirancang untuk beroperasi dalam memori rendah dan lingkungan penyimpanan, dan keseluruhan cerita berubah. Bahkan jika ram tidak memotong sebanyak yang seharusnya, penyimpanan tentu saja, dan itu bisa sangat sangat cepat pada standar UHS-1 (atau uhs-2 dirilis tahun ini), bahkan jika tidak " cepat "atau SSD.

Dan biaya memori eksternal, benar-benar kacang, bahkan untuk kapasitas yang lebih tinggi uhs-1. Setidaknya 64GB uhs-1 sangat terjangkau (50 dolar di mana saya berada, tetapi akan lebih sedikit USD), jauh lebih murah daripada perangkat, dan 32 GB dan di bawah pada dasarnya adalah beberapa penyewa.

Banyak pelajaran yang dapat dipelajari dari desktop sebenarnya, terutama sekarang spesifikasi semakin tinggi - tautan kinerja paling lambat memuat dari penyimpanan ke ram. Semakin banyak yang dapat Anda lakukan untuk mengurangi itu, semakin baik.

Jamie
sumber