Что такое отложенное резервирование подкачки?

Вам нужно +xterm_clipboardв информации о версии, а не -xterm_clipboard. Я думаю, вам нужно установить vim-gui-common, чтобы решить эту проблему, затем вы можете вставить в регистр *, например. "*yy", чтобы скопировать одну строку в буфер обмена.

Тем не менее, я думаю, здесь есть основания для neovim. Одна из его целей — поставлять со всеми включенными функциями, поэтому вам не нужно выполнять всю эту настройку и устанавливать/компилировать отдельные функции. Может быть, это сработает для вас в этом случае.

1
04.03.2020, 09:09
2 ответа

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

Подкачка резервирование вступает в игру, когда учет памяти отслеживает избыточное выделение (см. таблицу 49 -4 в LPI). Когда чрезмерная фиксация не разрешена, ядру необходимо во время выделения определить, возможно ли выделение. Для частных отображений с возможностью записи и общих анонимных отображений это означает, что у него должно быть достаточно адресного пространства и достаточно места в подкачке (, чтобы ядро ​​могло гарантировать, что содержимое отображенной памяти может быть записано туда, таким образом гарантируя, что записи в отображенную память никогда не вызоветSIGSEGV).

Ленивое резервирование подкачки требуется для избыточной фиксации. :Это означает, что ядро ​​может выделять резервную карту памяти подкачки -без резервирования соответствующего пространства подкачки. Как упоминалось в LPI ,это позволяет программам выделять гораздо больше памяти, чем реально доступно, и это следует запрашивать с помощью MAP_NORESERVE. В этом случае резервирование происходит только тогда, когда страница записывается, что означает, что запись может завершиться ошибкой с SIGSEGVили привести к вмешательству убийцы OOM.

Это становится важным для гораздо больших распределений, чем ваш пример 16KiB. Представьте, что вам нужен разреженный массив размером 64 ГБ, 262 144 × 262 144, чтобы упростить написание вашей программы :со строгим резервированием, вам потребуется вся эта память; без строгого резервирования у вас нет, и фактически будут выделены только те страницы, на которые вы пишете.

Обратите внимание, что все это зависит от Linux -и тесно связано с выбранной системной политикой перегрузки(/proc/sys/vm/overcommit_memory):в режимах 1 (всегда перегрузка )и 2 (никогда не перегрузка ), MAP_NORESERVEничего не меняет, действует только в режиме 0.

3
28.04.2021, 23:21

swap space is a chunk of space in disk

Кусок какого пространства? Виртуальная память.

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

It's like a second level cache for memory/ram.

Но на самом деле не быстрее, чем "тот" диск, большую часть времени (без выделенного устройства подкачки)

Скорее наоборот, особенно при чрезмерной нагрузке:

Подкачка превращает (физическую )оперативную память в кэш для устройства хранения (с ).

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


Здесь речь идет о чрезмерном выделении пространства подкачки, а не только ОЗУ. С свопом или без него это может привести к ситуации OOM после чрезмерной фиксации.

1
28.04.2021, 23:21

Теги

Похожие вопросы