Как удалить swap, если есть свободная оперативная память?

Это очень похоже на повреждение кеша глифов. Это, конечно, не настоящий шрифт или набор символов, но вместо этого он нарезается и смешивается вокруг кусочков обычного латинского алфавита. У вас также есть случайное повреждение в виде этих пунктирных линий с правой стороны.

Эта ошибка обычно вызвана драйверами вашей видеокарты, хотя обычно это не так сложно. Например, см. Скриншоты в этом отчете об ошибке:

https://bugzilla.redhat.com/show_bug.cgi?id=495323

Это также может быть вызвано перегревом или сбоя видеокарты или других аппаратных проблем.

1
задан 11 December 2013 в 21:05

5 ответов

Ядро Linux, лежащее в основе Ubuntu, автоматически «поменяет» эти страницы с диска на RAM по мере необходимости, поэтому, в общем, я бы сказал, просто позвольте этому произойти естественным образом.

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

sudo swapoff -a
sudo swapon -a

ИЛИ, альтернативно, как единую команду

swapoff -a && swapon -a

Будьте осторожны, так как вы можете сделать вашу систему неустойчивой, особенно если она уже неактивна в ОЗУ.

321
ответ дан 29 May 2018 в 12:55
  • 1
    Это сделал трюк, своп был скопирован на баран. Думаю, вам просто нужно убедиться, что по крайней мере количество подкачки, используемое в качестве бесплатного бара, перед запуском swapoff, не так ли? – jfoucher 6 August 2010 в 13:22
  • 2
    Обмен не был скопирован в ОЗУ. Это было просто отключено. Прежде чем делать это, вы должны убедиться, что коробка не заменяется. Если вы это сделаете, ядро ​​увидит, что память исчезнет, ​​и OOM-Killer, вероятно, начнет произвольно убивать приложения. Нет причин, по которым вам нужно будет «очистить» своп таким образом. (см. мой другой комментарий) :) – popey 6 August 2010 в 15:06
  • 3
    На самом деле своп, в основном, скопирован на баран, или, точнее, страницы заменяются обратно с диска на ОЗУ, прежде чем своп может быть отключен. – SpamapS 7 August 2010 в 20:00
  • 4
    Страницы копируются в ОЗУ только в том случае, если они по-прежнему необходимы для некоторых процессов. Иногда поменявшаяся страница принадлежит процессу, который уже завершен, и ядро ​​не хочет немедленно удалять эти страницы из swap. – BrunoJCM 30 December 2013 в 20:57
  • 5
    Это должен быть правильный ответ, так как это способ вернуть обмениваемые страницы в ОЗУ и затем освободить память подкачки – Alfonso Jiménez 5 May 2016 в 11:58

Вы также можете установить значение «swappiness» из значения по умолчанию 60, таким образом своп не будет настолько велик, чтобы начать с него. Почему для доставки по умолчанию установлено значение 60, когда рекомендуемое значение составляет 10 сомнений. Из Ubuntu SwapFAQ:

Значение по умолчанию в Ubuntu - swappiness = 60. Уменьшение значения по умолчанию для swappiness, вероятно, улучшит общую производительность для типичной установки рабочего стола Ubuntu. Рекомендуется значение swappiness = 10, но вы можете поэкспериментировать.

Изменяя это значение на 10 или даже 0, вы можете добавить значительное и воспринимаемое ускорение скорости в более старую систему с медленным приводом. Установка этого значения в 0 не отключает swap для ядра Linux 3.4 и ниже, но с 3.5+ оно делает так, что вам нужно будет использовать значение 1, если вы хотите сохранить его на самом низком уровне *.

[d6 ] Я не вижу причин не устанавливать это значение 0, поскольку все, что попадает на диск, медленнее, чем оперативная память. У меня есть 8 виртуальных ядер, быстрый SSD и amp; 8 ГБ памяти, а мой swap установлен на 0. На данный момент у меня работает 3 виртуальных машины, мое использование памяти - 7,1 7,7 ГБ, мой обмен - только 576 КБ 952 МБ, и все системы работают бесперебойно!

Из Ubuntu SwapFAQ :

Значение по умолчанию в Ubuntu - swappiness = 60. Уменьшение значения по умолчанию для swappiness, вероятно, улучшит общую производительность для типичной установки рабочего стола Ubuntu. Рекомендуется значение swappiness = 10, но вы можете поэкспериментировать.

swappiness может иметь значение от 0 до 100 swappiness = 0, чтобы ядро ​​избегало замены процессов из физической памяти до тех пор, пока возможно swappiness = 100 сообщает ядру агрессивно менять процессы из физической памяти и перемещать их в swap cache

Параметр swappiness управляет тенденцией ядра перемещать процессы из физической памяти и на диск подкачки. Поскольку диски намного медленнее, чем оперативная память, это может привести к более медленному времени отклика для системы и приложений, если процессы слишком агрессивно перемещены из памяти.

Ниже приведены основные инструкции для проверки swappiness, опорожнения вашего свопа и изменения swappiness to 0:

cat /proc/sys/vm/swappiness

Чтобы проверить значение swappiness:

Чтобы временно установить swap на 0 (как предложено SpamapS):

sudo swapoff --all

Это освободит ваш своп и переведет всю своп обратно в память. Сначала убедитесь, что у вас достаточно памяти, просмотрев вкладку ресурсов gnome-system-monitor, ваша свободная память должна быть больше, чем используемый swap.

sudo sysctl vm.swappiness=0 

Чтобы установить новое значение в 0:

sudo swapon --all

Чтобы включить его, используйте gnome-system-monitor для контроля и проверки прогресса.

sudo sysctl vm.swappiness=0 

swap back on:

sudoedit /etc/sysctl.conf Добавить эту строку vm.swappiness = 0 sudo shutdown -r now # restart system

Чтобы постоянно установить swappiness на 0:

110
ответ дан 29 May 2018 в 12:55
  • 1
    Это должен быть принятый ответ. – quant 4 February 2015 в 02:09
  • 2
    Я просто обновил ответ, включив в него постоянный способ установить swappiness. Не уверен, как это получилось так много, я предполагаю, что никто его не проверял. – Elijah Lynn 1 July 2015 в 16:23
  • 3
    Более хорошее чтение о swappiness в этом ответе = & gt; askubuntu.com/a/103916/11929 – Elijah Lynn 1 July 2015 в 16:24
  • 4
    Добавлена ​​заметка о поведении swappiness = 0 с ядром Linux версии 3.5+. – Elijah Lynn 1 July 2015 в 16:37
  • 5
    Я не уверен, что это было доступно, когда автор первоначально опубликовал ответ, но значение swappiness «60». существует для установки сервера ubuntu, поскольку у этой среды есть другой набор спецификаций для производительности. help.ubuntu.com/community/&hellip – Frito 6 June 2016 в 17:10

Я обнаружил, что перезапуск swap может очень помочь в системах с медленными дисками и ограниченной оперативной памятью. Конечно, как уже упоминалось, способ сделать это - запустить sudo swapoff -a; sudo swapon -a. Проблема здесь в том, что если объема памяти недостаточно, это вызовет всевозможные проблемы.

Я написал сценарий, который я называю toggle_swap, который работал для меня в течение последних нескольких лет. Он проверяет наличие достаточной свободной памяти перед фактическим отключением обмена. Вот он:

#!/bin/bash

free_data="$(free)"
mem_data="$(echo "$free_data" | grep 'Mem:')"
free_mem="$(echo "$mem_data" | awk '{print $4}')"
buffers="$(echo "$mem_data" | awk '{print $6}')"
cache="$(echo "$mem_data" | awk '{print $7}')"
total_free=$((free_mem + buffers + cache))
used_swap="$(echo "$free_data" | grep 'Swap:' | awk '{print $3}')"

echo -e "Free memory:\t$total_free kB ($((total_free / 1024)) MB)\nUsed swap:\t$used_swap kB ($((used_swap / 1024)) MB)"
if [[ $used_swap -eq 0 ]]; then
    echo "Congratulations! No swap is in use."
elif [[ $used_swap -lt $total_free ]]; then
    echo "Freeing swap..."
    sudo swapoff -a
    sudo swapon -a
else
    echo "Not enough free memory. Exiting."
    exit 1
fi
42
ответ дан 29 May 2018 в 12:55
  • 1
    Это было действительно полезно, спасибо! – Luke Cousins 16 September 2014 в 02:33
  • 2
    Эй, это лучшее решение. Благодаря! – Fabio A. Correa 20 September 2016 в 15:26
  • 3
    Удивительно, я искал что-то вроде этого. Возможно, чтобы быть немного более безопасным, вы можете представить количество и проценты, а затем спросить, просто быть абсолютно уверенным. – Atherion 27 January 2017 в 04:09
  • 4
    Я обновил код и создал gist на основе gist.github.com/Jekis/6c8fe9dfb999fa76479058e2d769ee5c – Jekis 24 August 2017 в 11:06
  • 5
    Это вывод, который я сделал после прочтения всех советов, так как нужно как-то убедиться в достаточной памяти, прежде чем убить своп. Спасибо, сэр, замечательный сценарий. Должен быть включен в Ubuntu по умолчанию (не шутите, это действительно musthave.) – Shiki 28 August 2017 в 21:55

После того, как пару дней обрушился на swappiness, я пришел к выводу, что ядро ​​должно быть оставлено на свои устройства. Он знает, что он делает, и он оптимизирован, чтобы дать вам лучший опыт.

Если у вас нет веской причины для того, чтобы вернуть этот диск, я бы оставил его.

23
ответ дан 29 May 2018 в 12:55
  • 1
    У меня было кое-что в свопе, vmstat показал мне, что происходит swapin и swapout, а Chrome был немного отстающим, а мой процессор почти не использовался. Хорошая причина, нет? – Xerus 6 May 2018 в 18:27

Это не влияет на производительность, если ваше место подкачки занято. Единственное нарушение производительности - это то, что происходит в / из подкачки. Если ничто не заменяется / не заменяется, вам не о чем беспокоиться.

1
ответ дан 29 May 2018 в 12:55
  • 1
    Да, но если что-то заменено , оно влияет на производительность , следовательно, этот вопрос. – quant 4 February 2015 в 02:18

Другие вопросы по тегам:

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