Каково соответствующее значение vm.swappiness при использовании zram?

Добавьте это к /etc/ssh/sshd_config:

useDNS no
13
15.03.2013, 16:11
3 ответа

Страницы должны быть выгружены (к диску), когда память полна. Если Вы используете память для создания места для выгрузки страниц, когда память полна, можно было бы думать, что это бьет цель, кроме того, если бы сжатие имеет значение (и затем было бы естественно сжать память непосредственно вместо того, чтобы пройти подкачку). Угадайте, что нужно было бы сравнить этого, поскольку компьютеры все больше быстры при сжатии и распаковке по сравнению со скоростью памяти.

0
27.01.2020, 19:54
  • 1
    я нашел, что сама zram-поддержанная подкачка довольно полезна, когда система исчерпывает память. Это сохранило меня несколько раз от того, чтобы быть полностью всунутым подкачивающий ад и имеющий необходимость перезапустить (я анализирую большие наборы данных, таким образом, мне нужна память, все 24 ГБ из него). Я просто задаюсь вопросом если vm.swappiness значение настраивается для поддержанной диском подкачки и если я должен изменить его, если я буду главным образом использовать zram-поддержанную подкачку. –  Ryan C. Thompson 13.03.2012, 06:35
  • 2
    "все больше быстро"? Динамическое сжатие выполняло лучше, чем прямой диск ввод-вывод для больше, чем прошлое десятилетие (его никогда попытка быть быстрее, чем доступ к памяти - это не точка), –  symcbean 13.03.2012, 12:47
  • 3
    symcbean, Вы забыли "по сравнению со скоростью памяти". Где разногласие? –  Alexander 13.03.2012, 13:22
  • 4
    я думаю точка symcbean, - то, что цель сжатой памяти отступила, страницы (zram) должен заменить свопинг к физической среде. Причина не "естественно сжать память непосредственно", состоит в том, потому что это было бы чревато сложностью для приложений для определения, какие части ее памяти могли быть сжаты и когда; подсистема VM является намного более легким местом для реализации этого. Рабочие нагрузки, которые извлекают выгоду из zram, имеют страницы, которые не находятся в рабочем наборе и могут быть легко сжаты. –  Daniel Papasian 08.06.2013, 14:44

Я действительно не рекомендовал бы поместить swappiness выше. Общий механизм в ядре - то, что оно поместит страницы (блок памяти) в подкачке для освобождения некоторой памяти для других выполняющихся задач.

Первая "проблема", когда ядро хочет, чтобы n страницы были освобождены, m (с m <n, m является числом сжатых страниц, требуемых содержать n) недавно создается в RAM, я не уверен, может ли это нарушить ядро или нет.

Затем так или иначе, когда у Вас есть страницы в подкачке, возможно, что Вы используете приложение позже с некоторыми его страницами в подкачке. То, что ядро делают, возвращают те страницы в физическую память, но не удаляет их из подкачки (который со стандартной подкачкой может рассматриваться как кэширование, поэтому когда приложение возвращается в фоновом режиме, ядро не должно записывать те страницы обратно в медленную подкачку). Однако с zram это - возможно, не мудрый прием, потому что у Вас затем есть в памяти m страницы в zram + n страницы, которые вернулись в памяти!

Ядро обычно имеет "общую память" thatit, может использовать для ведения ее бизнеса. Когда Вы добавляете zram, он рассчитывает в памяти "подкачки" только, как это было бы с любой находящейся на диске подкачкой, но он уменьшил фактическую "общую память", и это не ожидается/ожидается ядром. Иногда Вы можете иметь странный и не требуемое поведение из-за этого!

С zram было бы хорошо, что ядро не подкачивает слишком много к этой области, когда это испытывает давление памяти. И у Вас должен всегда быть очень твердый дисковый раздел подкачки, больше, по крайней мере, чем Ваш zram максимальный размер, так, чтобы система не получала OOM, тогда как одновременно Вы видели бы много свободного пространства, как сообщается free!

2
27.01.2020, 19:54
  • 1
    zram обеспечивает блочные устройства RAM. Все записанное в эти блочные устройства сжато. Если zram блочные устройства будут использоваться в качестве подкачки, когда система попытается переместиться, части памяти для свопинга ее будут эффективно перемещать память от одной части RAM другому, за исключением того, что данные будут сжаты прежде чем быть скопированным в место назначения. Это эффективно работает дешевым механизмом сжатия памяти для улучшения скорости отклика в системах с ограниченными объемами памяти.... Zram был в подготовке начиная с Linux 2.6.33. В 3.14 zram был перемещен из подготовки в drivers/block/zram. –  Elder Geek 29.02.2016, 05:54
  • 2
    @ElderGeek точно! И я возьму пример для иллюстрирования, почему это не прекрасно. Ядро попытается удалить 64 МБ RAM, оно поместило их в подкачку zram. Сжатый блок 64 МБ - теперь 32 МБ. Результатом является память, уменьшенная на 32 МБ и не 64 МБ. Теперь, что происходит, когда приложение требует 64 МБ назад в памяти, копия ядра (и не перемещаются), блок назад в памяти. У Вас есть теперь 64 МБ в RAM + 32 МБ в zram. Почему копия? Поскольку ядро кэширует страницы, как я объяснил в своем ответе. Оба поведения не идеальны. И когда память не хорошо сжимаема, это еще хуже. –  Huygens 01.03.2016, 13:37
  • 3
    Все еще в фазе тестирования. Я думал бы, что должен быть некоторый способ настроить алгоритм кэширования, что использование zram для освобождения сжатой страницы, когда это скопировало назад в несжатую RAM. –  Elder Geek 01.03.2016, 14:57
  • 4
    , я пробовал его несколько раз до 2012. В то время мой компьютер был ограничен 1 ГБ RAM и при просмотре Интернета, это было крайне медленно (у меня обычно есть 10-50 открытых вкладок). Но с тех пор я никогда не использовал его снова. У меня есть более чем достаточно RAM, что я больше не использую подкачку. При использовании zram с Firefox тогда, я быстро начал "подкачивать", учитывая небольшую RAM, которую я имел. И быстро у меня были безразличные системы со многими катастрофическими отказами. Без zram это было крайне медленно, но стабильно, по крайней мере. Моя проблема состояла в том, что, вероятно, это постоянно сжимало/распаковывало страницы памяти. –  Huygens 01.03.2016, 16:34
  • 5
    Да, мои результаты были несколько подобны в системе с 8 ГБ, я смог вызвать OOM путем запуска нескольких VM's во время задания кодирования. У Вас есть опыт с zswap? Кажется жизнеспособной альтернативой на основе того, что я считал. –  Elder Geek 01.03.2016, 17:01

Короткий ответ :vm.swappiness=100: подходящее значение для zram (По крайней мере, в Debian Stretch с Linux 4.9, я считаю, что это лучшее значение)

Я уже тестирую vm.swappiness=100для себя.

Я думаю, вы можете провести простой тест , чтобы определить, какое значение лучше для вас.

Также я сделал другую простую программу для проверки этого вопроса. Икс На моей машине очень низкое vm.swappinessзначение (, такое как vm.swappiness=1), вызовет очевидную проблему с откликом.

О SwapCachedв/proc/meminfo:

Во-первых, попробуйте vm.page-cluster=0, это может уменьшить количество бесполезных SwapCachedсвопов -в

SwapCached может ускорить zram так же, как -устройство подкачки без zram

SwapCachedможно повторно использовать (бесплатно )при необходимости:

./linux-4.9/mm$ grep -rn delete_from_swap_cache
memory-failure.c:715:   delete_from_swap_cache(p);
shmem.c:1115:       delete_from_swap_cache(*pagep);
shmem.c:1645:            * unaccounting, now delete_from_swap_cache() will do
shmem.c:1652:               delete_from_swap_cache(page);
shmem.c:1668:       delete_from_swap_cache(page);
vmscan.c:673:       __delete_from_swap_cache(page);
swap_state.c:137:void __delete_from_swap_cache(struct page *page)
swap_state.c:218:void delete_from_swap_cache(struct page *page)
swap_state.c:227:   __delete_from_swap_cache(page);
swapfile.c:947:         delete_from_swap_cache(page);
swapfile.c:987: delete_from_swap_cache(page);
swapfile.c:1023:            delete_from_swap_cache(page);
swapfile.c:1571:            delete_from_swap_cache(page);
./linux-4.9/mm$ 
3
27.01.2020, 19:54

Теги

Похожие вопросы