Поменяйте местами, но память доступна в оперативной памяти
У меня есть экземпляр AWS ec2 под управлением Ubuntu 16.04 с 64 ГБ оперативной памяти и файл подкачки, настроенный на 8 ГБ. Во время ночного пакетного процесса, который синхронизирует данные резервной копии из тома EBS этого экземпляра с корзиной S3, память подкачки используется почти на 100%, но в основной памяти по-прежнему имеется достаточно места в диапазоне 10-15 ГБ.
Вот перестановка по умолчанию:
$ cat /proc/sys/vm/swappiness
60
Это беспокоит? Если да, я добавлю больше места подкачки, имея больший файл подкачки, или вместо этого выберу раздел подкачки?
3 ответа
Это наблюдение, при котором вы наблюдаете значительное использование свопа после ночной пакетной работы, несмотря на наличие большого количества оперативной памяти, не беспокоит. Это особенно не беспокоит, потому что это происходит ночью без пользователей перед компьютером. Таким образом, использование пользователем свопа никак не влияет на ваш пользовательский опыт. Вероятно, в настоящее время ваши конкретные пакетные процессы выполняются с максимальной эффективностью и скоростью.
Такое интенсивное использование подкачки будет иметь практическое значение только в том случае, если вы в течение этого времени находились перед компьютером и выполняли другие задачи. Высокая склонность к свопу иногда приводила бы к небольшой задержке отклика пользовательского интерфейса, так как определенная оперативная память ваших приложений должна извлекаться из свопинга по мере необходимости. Низкая тенденция к обмену снизит вероятность того, что программное обеспечение будет выгружено, и у вас возникнут задержки. Вы будете воспринимать это как более быструю производительность, то есть мгновенную реакцию всей системы, но за счет других процессов, у которых меньше "передышки" для выполнения своей деятельности, потому что вы продолжаете занимать RA даже для процессов, которые вам больше не нужны немедленно.
Если вам нужна более строгая политика обмена, вы можете понизить установленный вами параметр обмена. Этот ответ хорошо объясняет, что такое своппинг.
По своему личному опыту я видел, что подкачка в 10 прекрасно работает, если вы хотите использовать как можно больше оперативной памяти без потери стабильности системы.
Это не обязательно является причиной для беспокойства, и это не указывает на уменьшение или настройку перестановки.
Ответ от vandium довольно исчерпывающий, но я также хотел бы упомянуть пару вещей.
Это может помочь представить более низкие значения подкачки более рискованными, а более высокие значения более консервативными. Таким образом, более низкие значения подкачки будут ожидать, пока ситуация с памятью не станет более плачевной и напряженной, с небольшим количеством оставшегося для кеширования, прежде чем он будет меняться, в то время как более высокая перестановка будет меняться, когда доступная память и размер кеша будут лишь слегка угрожать. Многие люди думают, что сокращение перестановки - это общий способ уменьшения перестановки, но так часто случается, что вы все равно будете менять местами, но в более позднее время, когда ваша система более отчаянно нуждается в памяти. Реальное общее решение для уменьшения перестановки - это добавление дополнительной оперативной памяти.
Во-вторых, поведение подкачанных данных заключается в том, что они остаются в режиме подкачки до тех пор, пока они не будут запрошены снова, а не заменяются, как только потребность в памяти снова уменьшается. Некоторые люди видят это и считают это нежелательным; они думают, что свопа следует избегать, но оправдание этому заключается в том, что снижение производительности при замене примерно такое же, как при замене, поэтому система избегает ненужной замены. Если вам в конечном итоге понадобится что-то, что находится в разделе подкачки, это обмен, который мог бы произойти в любом случае на каком-то этапе, но, отложив его до тех пор, пока он не будет запрошен, он оставит доступную память и пространство кеша хорошим и высоким (для хорошей производительности системы и для лучшего ответ в случае, если спрос на память быстро возвращается к своему предыдущему максимуму (например, если событие высокой памяти было в расписании) и избегает ненужных операций ввода-вывода.