Як вплине своп розділ / файл на систему?


20

Деякі друзі сказали мені, що їхні Android-телефони мають дуже мало (<100 МБ) вільної пам’яті для звичайних додатків, тому що ОС і деякі незаконні послуги займають більшу частину оперативної пам'яті. Наприклад, один телефон із 512 Мб показує лише доступну пам'ять на 90 МБ, тому одночасно можуть працювати лише 2-3 програми.

Мені цікаво, чи допоможе створення swap-розділу / файлу, але я бачив неоднозначні думки в усьому Інтернеті, і я не впевнений, що робити. Ось мої запитання:

(1) Чи буде багато сторінок пам'яті, які не часто використовуються, для обміну, особливо в ОС та тих, що не підлягають забороні?

(2) Як заміни невеликих сторінок пам’яті зашкодять тривалості життя флеш-пам’яті? Чи спалах (або SD-карта?) Автоматично вирівнює знос?

(3) Чи дійсно допоможе заміна сприяти продуктивності при запуску декількох додатків? Я припускаю, що якщо відповідь на (1) - так, то буде.

(4) Чи буде писати спалах занадто повільно і, таким чином, зашкодити чуйності, коли відбувається обмін?

(5) Чи правда, що Android зберігає механізм заміни від ядра Linux, так що, поки є розділ / файл, що підміняється, він буде робити заміну без додаткової конфігурації?

Дякуємо за прочитане

Відповіді:


8

Я не думаю, що при обміні для Android не буде великої користі, оскільки життєвий цикл додатків для Android є значно більш розвиненою формою заміни.

(1) Чи буде багато сторінок пам'яті, які не часто використовуються, для обміну, особливо в ОС та тих, що не підлягають забороні?

Ви не можете замінити ядро ​​ОС навіть у Desktop Linux, а Android вже вбиває сервіси, коли їй потрібно більше оперативної пам'яті. Якщо постачальник вашого пристрою наполягає на тому, що вам потрібно постійно працювати з марними службами, виконайте кореневі роботи пристрою.

(2) Як заміни невеликих сторінок пам’яті зашкодять тривалості життя флеш-пам’яті? Чи спалах (або SD-карта?) Автоматично вирівнює знос?

Навіть якщо SD-карта робить вирівнювання зносом, заміна буде зашкодити досить сильно.

(3) Чи дійсно допоможе заміна сприяти продуктивності при запуску декількох додатків? Я припускаю, що якщо відповідь на (1) - так, то буде.

Не в контексті Android. На відміну від традиційної ОС, яка продовжуватиме намагатись поспішати в процесах так, як ви цього вимагали, Android змушує вбивати старі, невикористані процеси та відновлювати їх пам’ять; це вбивство швидко, оскільки програми вже збережуть свій стан, коли ви переключаєтесь на завдання.

(4) Чи буде писати спалах занадто повільно і, таким чином, зашкодити чуйності, коли відбувається обмін?

Напевно, напевно, ні. Для цього знадобляться орієнтири.

(5) Чи правда, що Android зберігає механізм заміни від ядра Linux, так що, поки є розділ / файл, що підміняється, він буде робити заміну без додаткової конфігурації?

Я не знаю, чи зберігає Android механізм заміни, але навіть якщо він (або якщо ви збираєте власне ядро), вам все одно знадобляться деякі конфігурації. Зазвичай це просто мати fstabфайл, який вказує на файл swap і робить swapon -a.

Насправді у мене є причини, за якими обмін може насправді погіршити продуктивність: це заважає Життєвому циклу програми, схемі управління пам’яттю Android, правильно працювати.


Дякую за відповідь. У мене все ще є питання. На Samsung Fascinate 10 послуг, які не підлягають забороні, займають близько 110 мільйонів пам'яті. Існують 22 інші послуги, які можна захистити, але "Запуск програми" показує, що жодна програма не працює. Це телефон мого друга, і я не знав, що саме вона робила раніше, але, здається, цілком можливо, що багато служб / додатків можуть працювати одночасно. Я не думаю, що всі ці фонові послуги / програми використовують усі необхідні сторінки під час їх запуску. Крім того, зберегти стан програми + перезавантажити та перезапустити додаток + стан відновлення також буде повільним.
вічнозелений

Ще один спосіб думати про цю проблему такий: припустимо, що тривалість спалаху не є проблемою, чи повинен Android робити заміну? Якщо ні, то в чому полягає ключова відмінність програм Android від настільних програм, що робить обмін не корисним для Android? Я не думаю, що життєвий цикл Android працює для додатків для настільних ПК та серверів.
вічнозелений

@evergreen: стан програми зберігається, коли програма переходить у фоновий режим (наприклад, коли користувач натискає додому, щоб переключити завдання). Пізніше, коли якійсь іншій програмі потрібна пам'ять, застарілі програми або фонові послуги будуть вбиті (ФК займає практично не час). Це означає, що вбивство завдання негайне, оскільки стан програми вже давно збережено. Перезавантаживши програму, яка вже є в пам'яті, ви отримаєте найшвидший час перезавантаження; але якщо додаток уже завантажено, то програмі потрібно зробити повне перезавантаження (те саме, що ситуація з заміною)
Lie Ryan

@evergreen: якщо ви використовуєте вбивцю завдань, тоді ви змусите програми завантажуватися, і вам доведеться завжди робити повне перезавантаження, замість швидкого перезавантаження, коли програма залишається в пам'яті. Якщо ви користуєтеся файлом / розділом swap, (старіші) програми будуть замінені, а відновлення займе майже стільки ж роботи, скільки повне перезавантаження. За винятком: при повному перезавантаженні розробник додатку відокремив стійкі дані з тимчасовими даними і може оптимізувати, що зберегти, а що не покращити сховище. Хоча при відновленні swap, ви не залишаєте розробнику додатків нічого не говорити і заміняєте все.
Лежи Райан

@evergreen: Навіть якщо припустити, що тривалість спалаху не є проблемою, Android не повинен робити заміни, оскільки життєвий цикл програми робить кращу роботу. Android Life Cycle розроблений для обмеженої пам’яті середовища, у робочому середовищі та сервері у вас величезний об'єм пам’яті, а користувачі роблять набагато більше багатозадачність, і вони не очікують, що фонові програми будуть вбиті ОС. Слабкою стороною Android Life Cycle є те, що вона потребує підтримки додатків. Додаток має бути готовим до вбиття в будь-який час і має зберігати стан у визначених точках. Така складність є чужою для настільних додатків.
Лежи Райан

5

Однозначно є користь від обміну, незважаючи на те, що вам скажуть усі інші в Інтернеті. Спробуйте і переконаєтеся самі. Емпірично, на G1 або іншому телефоні з низькою пам'яттю, своп робить телефон швидшим і швидшим.

Так, Android має вбудований "управління завданнями" життєвого циклу, але це не дуже добре. Він звичайно вбиває процеси, коли у нього не вистачає пам'яті, і додатки, як очікується, збережуть їх стан за допомогою " Пакетів ", щоб після їх перезавантаження вони перезапустилися в тому ж стані, в якому вони були останніми.

Після того, як Android визначить, що йому потрібно видалити процес, він робить це жорстоко, просто змушує його вбивати. Потім ядро ​​може негайно відновити всі ресурси, необхідні для процесу, не покладаючись на те, що ця програма добре написана та відповідає на ввічливий запит на вихід. Дозвіл ядра негайно повернути ресурси додатків значно спрощує уникнення серйозних ситуацій із пам'яттю.

Це було б чудово, якби це насправді спрацювало, і було б краще, ніж безрозбірливий своп. Але додатки насправді не рятують свій стан; вони просто зберігають мінімальну кількість інформації, щоб повернутися до цього стану. (А деякі програми навіть не намагаються це робити.) Повернення до цього стану вимагає часу. Оскільки своп фактично економить весь стан програми, який потрібно лише перезавантажити, перехід між додатками значно швидше.

Наприклад, якщо ви переходите на інший додаток із браузера, наприклад, браузер майже завжди вбивається, і тоді він повинен перезавантажувати всю сторінку з Інтернету, коли ви переходите на нього. Це займає набагато більше часу, ніж перезавантаження штату за допомогою swap, витрачає гроші, якщо ви перебуваєте на плані даних, і спричиняє проблеми з державою, коли веб-сторінка динамічна.

Запуск багатьох додатків займає набагато більше часу, ніж слід, або фактично не повертаються в той самий стан, коли вони перезапускаються, тому заміна їх працює краще.

Я здогадуюсь, люди, які задоволені акційною системою, використовують свої телефони по-різному.

Чи слід використовувати розділ swap із Cyanogenmod?


Якщо ви залишите це на життєвий цикл, рішення програми буде кешувати додаткові дані для підвищення продуктивності (наприклад, завантажені веб-сторінки). Якщо ви користуєтеся свопом, це рішення ОС, але ОС не в кращому становищі для визначення, що зберегти, а що не для збереження, щоб оптимізувати продуктивність, тому доводиться зберігати і відновлювати все. Браузер не перезавантажує сторінки з Інтернету, якщо ви перемикаєте завдання, я часто відкриваю браузер, переходячи на купу важких ігор та інших заходів, і повертаюся до браузера зі своєю останньою сторінкою, де все завантажується на мить.
Лі Лі Райан

Правильно. Жодна система не є оптимальною, але підміна найкраща для більшості програм. Веб-переглядач перезавантажує сторінку лише в тому випадку, коли вона вбита, перш ніж повторно її відкрити. На телефоні з низькою пам’яттю він майже завжди вбивається.
ендоліт

@LieRyan - "поверніться до браузера з моєю останньою сторінкою, де все завантажене миттєво", чи відновить браузер позицію прокрутки на відкритих сторінках після перезавантаження? Це те, що Chrome не робить (хоча мені дуже подобається цей браузер), що дуже прикро, коли ви перестали читати на середині якоїсь досить веб-сторінки журналу, перш ніж переходити, скажімо, на дзвінок ...
kerim

2

У мене є Spice mi-435 (продається лише в Індії), який має оперативну пам’ять всього 340М. Чорт забирай, файли свопінгу дуже допомагають. Мій телефон працює на ICS з такою низькою оперативною пам’яттю і, безумовно, увійшов у багато станів пам'яті, і там файл swap дуже допомагає. Усі стани програми передаються під заміну, коли вони не перебувають у активному використанні. Це дає моєму номеру телефону більше додатків, і голодні програми, що працюють в оперативній пам'яті, працюють безперебійно з набагато меншим затримкою, ніж раніше. Хоча виникає проблема, коли я відкриваю додаток, яким я користувався раніше. Щоб завантажити свій стан, потрібен час, оскільки SD набагато повільніше, ніж швидкість оперативної пам'яті на борту. Але варіант swap краще для меншої кількості оперативної пам'яті. Я б рекомендував міняти розділ на оперативну пам’ять менше 512М, але не більше 512М.

Сподіваюся, це корисно.


1

Файл swap допомагає навіть у системах з більш високою оперативною пам’яттю. Мій чотирьохядерний операційний 7-дюймовий планшетний планшет отримує велике багатозадачне підсилення від патронажу в 2gb свопі, на micro sd-картці uhs-1. І звичайно, ціна пам’яті швидко падає, і навіть при постійному записі флеш-пам'ять повинна тривати років.

Я в основному на думку, оскільки різниця в продуктивності настільки радикальна, що, мабуть, кожен, хто має менше, ніж дійсно великий об'єм оперативної пам’яті, повинен робити це. Насправді це, мабуть, має стати стандартним варіантом для Android (разом із більшими кешами додатків та кеш-інтернетом належного розміру).

Я маю на увазі, у вас є 64-128 Гб мікро sd (uhs-1), або навіть uhs-2, що вийшов цього року, плюс 16-64gb внутрішній нанд, часто "швидкий" nand, який є своєрідним примітивним ssd або навіть SSD, як вони використовуються на сланцях Windows - ваш не зовсім заповнить весь цей швидкісний простір багато. Швидкість тільки насправді грає з відео чи завантаженням програм у пам'ять - саме тут і є користь.

Звичайно, в ідеалі виробники зосереджуватимуться більше на оперативній пам'яті, ніж на роздільній здатності або на додаткових ядрах, тому що, очевидно, швидкість системи значно виграє від більш високої оперативної пам'яті - і, ймовірно, вони також повинні підвищувати швидкість внутрішнього зберігання (наприклад, перехід на повні системи ssd типу) або, як мінімум, "швидка" nand. Але в той же час, хоча високі роздільні здатності викликають своєрідний дефіцит оперативної пам’яті на всіх пристроях, файл swap та кешування на досить спритний зовнішній sd має багато сенсу.

Дійсно, було б непогано бачити, що деякі браузери також зберігають повніше кешування, більшість браузерів є або повільними, або малофункціональними, рідко швидкими та повнофункціональними - і це частково тому, що місця для кешу додатків на внутрішньому диску є невеликим. Вони розроблені для роботи в умовах низької пам’яті та пам’яті, і вся ця історія змінюється. Навіть якщо оперативної пам’яті не рубати стільки, скільки має бути, сховище, безумовно, є, і це може бути досить проклятим швидко за стандартами UHS-1 (або uhs-2, випущених цього року), навіть якщо його немає » швидкий "або ssd.

А вартість зовнішньої пам’яті - це арахіс справді навіть для більшої ємності uhs-1. Принаймні, 64 Гб uhs-1 є цілком доступним (50 баксів, де я є, але це було б менше доларів), набагато дешевше, ніж пристрій, і 32 ГБ і менше - це в основному пара тенерів.

Дуже багато уроків, які слід дізнатись із робочого столу, особливо зараз технічні характеристики стають все вище - найповільніша посилання на продуктивність завантажується від зберігання до оперативної пам’яті. Чим більше ви можете зробити, щоб пом’якшити це, тим краще.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.