Intereting Posts
Как установить VirtualBox Extension Pack Как просматривать выходные данные для ВСЕХ процессов одновременно? Вывод gzip трубы для передачи Bluetooth? Не удалось подключиться к сети WiFi на Fedora 20? Невозможно выполнить команду с помощью su для другого (системного) пользователя Копирование файла с использованием scp в несуществующий локальный каталог – вводящее в заблуждение сообщение об ошибке Совместное использование нагрузки через несколько интерфейсов с использованием tc Ошибка OpenLDAP при добавлении ACL Разрешенные и безопасные символы для файловой системы ZFS во FreeBSD Как сделать определенную команду sudo-only на Debian? Как разбирать сотни html файлов исходного кода в оболочке? find -exec sed, чтобы найти / заменить строку многократного использования Разрешения и сохранение файлов Как перезапустить контейнер systemd-nspawn после того, как гость выдает команду перезагрузки? Как анализировать файл, подобный этому, и определять переменные?

Как я могу понять, когда пространство подкачки будет использоваться на нашей Linux-машине?

Мы пытаемся настроить серверы приложений, которые являются машинами Amazon Linux …

[myuser@mymachine ~]$ uname -a Linux mymachine.myco.org 4.3.17-14.25.amzn1.x86_64 #1 SMP Wed May 10 01:58:40 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 

У нас только процесс JBoss работает на нашей машине (процесс, который мы начали, то есть). Аппарат имеет 30 ГБ памяти, а процесс Jboss выделяет 25 ГБ (с использованием опции «-Xmx25600m» Java). Когда машина начнет использовать пространство подкачки? Когда я запускаю «free -m», я не вижу никакого пространства подкачки, которое я ожидаю …

 [myuser@mymachine ~]$ free -m total used free shared buffers cached Mem: 30103 7238 22864 0 172 4438 -/+ buffers/cache: 2627 27475 Swap: 0 0 0 

Я думал, что обмен будет использоваться, только если у нас закончится память, но мне сказали, что это не обязательно так. Когда машина начнет использовать пространство подкачки?

Linux, как правило, пытается удержать вещи в барах, и любая замена только начинается, когда у вас заканчивается доступный ram (то есть общий барабан, используемый приложениями, буферами и кэшированными файлами). Когда начать переключение настраивается, тем не менее, это может варьироваться в зависимости от вашей настройки и контролируется значением swappiness . Чтобы узнать, для чего установлено текущее значение swappiness

 cat /proc/sys/vm/swappiness 

В большинстве систем по умолчанию используется значение около 60. Чем ниже значение, тем более агрессивным ядро ​​будет работать, чтобы сохранить что-то внутри ram и установить его на 0 отключить полностью замену (swap будет использоваться для спящего режима, но не активно используется во время работы).

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

Вы можете настроить swappiness системы на лету с помощью

 sysctl vm.swappiness=10 

И установите его навсегда, отредактировав /etc/sysctl.conf чтобы включить

 vm.swappiness = 10 

Для вашей ситуации, когда у вас есть сервер с достаточным количеством ram и JVM, используя большинство из них, вы, вероятно, не хотите меняться, если вообще снижать это значение до 10 или даже 1, может быть полезно. Опускание его до 10 довольно часто выгодно для большинства современных систем с большим количеством баранов.

С практической точки зрения, из-за того, как Java обрабатывает память, это сводится к:

«Мой сервер имеет 5 ГБ оперативной памяти, когда он начнет замену?»

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

Тем не менее, вы можете подумать о том, чтобы иметь на всякий случай. В частности, поскольку вы, вероятно, предпочли бы сэкономить деньги (я предполагаю, что вы используете Amazon Linux, что вы на EC2, и, следовательно, дисковое пространство стоит денег в единицу времени), я бы предложил использовать сжатую память для swap space с помощью драйвера zram (я не уверен на 100%, если Amazon Linux включает этот драйвер, но я был бы удивлен, если бы они не имели его как модуль).

Раздел подкачки также используется для спящего режима (т. Е. Приостанавливается на диск). И вы можете поменять местами некоторые файлы (заполнить новый файл подкачки нулем, используя dd , сделать его mkswap с помощью mkswap , использовать его как своп с помощью swapon ….).

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