it-swarm.xyz

Что такое подкачка памяти?

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

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

30
developer

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

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

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

45
jrockway

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

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

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

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

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

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

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

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

3
fortran

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

[~ # ~] Обновление [~ # ~]

Чтобы выяснить, где находится пространство подкачки (или виртуальная память), вы можете перейти к диспетчеру задач (CTRL + ALT + DEL) и включить из меню VIEW -> COLUMNS -> VIRTUAL MEMORY. Теперь просто посчитайте разницу между использованием памяти и виртуальной памятью. Также вот инструкция, как это увидеть, если вы работаете в Vista: http://www.ehow.com/how_5067693_increase-swap-space.html

1
faya