На машине с Linux мы можем включить свопинг с помощью следующих команд
sudo fallocate -l 500M /data/swapfile
sudo chmod 600 /data/swapfile
sudo mkswap /data/swapfile
sudo swapon /data/swapfile
Но даже если это не разрешено, ядро по-прежнему выполняет подкачку, когда страницы нет в памяти.
Мы можем проверить это, запустив sar -B 1 30
на машине без установки файла подкачки.
03:08:40 AM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
03:08:41 AM 0.00 0.00 3.00 0.00 44.00 0.00 0.00 0.00 0.00
03:08:42 AM 0.00 0.00 19.00 0.00 30.00 0.00 0.00 0.00 0.00
03:08:43 AM 0.00 0.00 0.00 0.00 3.00 0.00 0.00 0.00 0.00
03:08:44 AM 24.00 0.00 2.00 1.00 7.00 0.00 0.00 0.00 0.00
03:08:45 AM 364.00 60.00 18.00 3.00 4.00 0.00 0.00 0.00 0.00
03:08:46 AM 140.00 0.00 392.00 2.00 243.00 0.00 0.00 0.00 0.00
Все еще Majflt что запустит выгрузку данных на диск.
Мои вопросы:
Я знаю некоторые люди сказали:
Под свопингом понимается копирование всего адресного пространства процесса или, по крайней мере, сегмента данных, не предназначенного для совместного использования, на устройство подкачки или обратно за один раз (обычно на диск).
Тогда как подкачка относится к копированию в / из одной или нескольких страниц адресного пространства. В частности, это гораздо более мелкое зерно. Например, в адресном пространстве ОЗУ 1 ГБ содержится ~ 250 000 страниц размером 4 КБ.
Однако в книге Общие сведения о диспетчере виртуальной памяти Linux, похоже, что в Linux все иначе.
Строго говоря, Linux не выполняет подкачку, поскольку «подкачка» относится к копированию всего адресного пространства процесса на диск, а «подкачка» - к копированию отдельных страниц. Linux фактически реализует разбиение на страницы, поскольку современное оборудование поддерживает его, но традиционно в обсуждениях и документации это называется свопингом. Чтобы соответствовать использованию этого слова в Linux, мы также будем называть его своппингом.
Может ли кто-нибудь пролить свет на это? Спасибо!
Современные операционные системы обычно реализуют свою виртуальную память в виде небольших фрагментов, называемых страницами, включая подкачку на диск. Это улучшение по сравнению с необходимостью заменять целые программы, как это было сделано в ранней UNIX System V.
Некоторые подчеркнули, что подкачка отличается от старой подкачки, в том числе в Общие сведения о диспетчере виртуальной памяти Linux. Но обратите внимание, что термин обмена сохраняется.
Как ни странно, свопинг - это только подмножество подкачки. Исполняемые файлы или файлы с отображением памяти являются примерами, в которых сбои страниц могут возникать независимо от пространства подкачки. Эти карты файлов уже поддерживаются постоянным хранилищем. Напротив, пространство подкачки перемещается по анонимным страницам.
Так sar
статистика страниц - это другой показатель, чем vmstat
поменять местами / поменять местами.
Без пространства подкачки невозможно вернуть анонимные страницы. Рабочим нагрузкам по-прежнему нужна их память, поэтому нагрузка на кеши файлов возрастает. Добавление некоторого места для подкачки также помогает перемещаться. Это бесполезно в качестве «аварийной памяти», агрессивное восстановление для медленного пространства подкачки ужасно для производительности.
Аналогия: рассмотрим физический переезд. «График» распределения памяти может вызвать критическую по времени спешку для «движителей» ядра, чтобы собрать и переместить все. Добавьте внешний шкафчик для хранения, и вещи, которые не нужны немедленно, могут быть сохранены там раньше времени с менее разрушительными небольшими грузами. Это пространство подкачки используется эффективно.
Даже если у вас не включен своп, но ядро по-прежнему использует виртуальную память
В Linux структурами определения процессов является память ядра (логические адреса), это означает, что в случае нехватки памяти ядро Linux не меняет местами структуры процессов.
Linux не заменяет себя, как Solaris, Solaris также меняет структуру ядра процессов.
почти каждая операционная система использует подкачку для преобразования виртуальной памяти в физическую.
Linux использует систему восстановления страниц, чтобы освободить память в случае нехватки памяти или неиспользуемых страниц с пользовательскими данными. По этой причине используется своп.
Страницы процессов, относящиеся к пользовательскому пространству, называются виртуальной памятью, эти пользовательские страницы могут оказаться в пространстве подкачки.
Многие из этих терминов являются общими для unix, с небольшими различиями между linux и unix.
Процесс сегментов text, data, s tack, bss, heap находится в пользовательском пространстве.