Назад | Перейти на главную страницу

Что такое своп-память?

Я использую ОЗУ для хранения некоторых таблиц базы данных, а другие хранятся на жестком диске.

Сегодня я узнал, что мои процессы используют память подкачки. Что такое память подкачки и как я могу определить, какой процесс использует память подкачки, и как я могу остановить их использование?

Если у вас заканчивается физическая память, вы используете виртуальную память, в которой данные хранятся в памяти на диске. Чтение с диска на несколько порядков медленнее, чем чтение из памяти, так что это сильно замедляет все. (Обмен данными между реальной памятью и виртуальной памятью - это «свопинг». Пространство на диске - «пространство подкачки».)

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

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

У компьютера есть определенный объем физической памяти. Но в большинстве случаев мы хотим большего. Итак, мы меняем местами память на диске.

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

В окнах, если вы посмотрите в диспетчер задач, вы можете показать ошибки страницы столбца. Это показывает количество раз, когда приложение запрашивает часть памяти, которая была на диске и которую нужно переставить. Большое количество ошибок страниц = медленное приложение.

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

  • На уровне ЦП есть регистры. Это самая быстрая память, но ее объем ограничен.
  • Также на CPU есть небольшой кеш памяти. Здесь хранится небольшой фрагмент работающей программы для быстрого доступа. Поищите алгоритмы прогнозирования ветвей, если хотите узнать больше.
  • Иногда между ЦП и основной памятью есть кеш-память 2-го уровня.
  • Следующий уровень - это основная память (RAM).
  • Последний уровень и самый медленный - это диск, иногда вы можете использовать USB-накопители в качестве дополнительной памяти.
cat /proc/pid/smaps

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

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

Чтобы узнать, что такое своп и как работает виртуальная память ... Я бы порекомендовал вам взглянуть на некоторые лекции по операционной системе, возможно, MIT Open Courseware может помочь.

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

ОБНОВИТЬ

Чтобы узнать, где находится место подкачки (или виртуальная память), вы можете перейти в Диспетчер задач (CTRL + ALT + DEL) и включить его из ВИД -> КОЛОННЫ -> ВИРТУАЛЬНАЯ ПАМЯТЬ. Теперь просто посчитайте разницу между использованием памяти и виртуальной памятью. Также вот инструкция, как это увидеть, если вы используете Vista: http://www.ehow.com/how_5067693_increase-swap-space.html

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

Чтобы процессы не использовали своп - установите больше оперативной памяти.

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

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

У меня есть ноутбук с 768 МБ ОЗУ, который не использует память подкачки. Это достаточно хорошо для моих нужд. У меня есть сервер с 256 Мб оперативной памяти, который не использует память подкачки. На нем работает 8 виртуальных серверов, использующих виртуализацию OpenVZ, без проблем.

Так что, если вам нужна своп-память, решать только вам.