Unix: файлы с отображением памяти, применимы ли ограничения?

Этот вопрос предназначен для понимания ограничений вида, применимых к файлу Mem-Mapped в среде unix.

У нас есть приложение, работающее в среде unix, которое размещает и обслуживает файлы с отображенными в памяти файлами Key-Value с доступом только для чтения, а также может обновляться во время выполнения при копировании новой версии файла (вероятно, с большим количеством пар ключ-значение ).

Что я наблюдаю, так это то, что, поскольку файл Mem-Mapped, поскольку мы обновляем файл с большим количеством пар ключ-значение, потребление памяти VIRT увеличивается с небольшим потреблением памяти RES.

  PID    PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
12948    16   0 43240 9936 2996 S  0.0  0.1   0:00.00 lookup_server
12951    16   0  562m  16m 9972 S  0.0  0.1   0:00.09 lookup_server

Насколько я понимаю, это связано с тем, что весь файл копируется как страницы виртуальной памяти на жесткий диск, и только несколько востребованных страниц находятся в памяти RES.

Верны ли мои предположения, что

  1. с файлами Mem-Mapping размер файла не ограничивается доступной физической оперативной памятью, так как файлы будут загружаться/выгружаться операционной системой по запросу.
  2. и единственным ограничивающим фактором может быть дисковое пространство, сконфигурированное для виртуальной памяти. в этом случае, как я могу определить дисковое пространство, идентифицированное ОС для расширения виртуальной памяти? где на жестком диске хранится отпечаток виртуальной памяти файла?

person Shashi    schedule 31.01.2014    source источник
comment
интересно узнать, ограничена ли виртуальная память дисковым пространством и где на диске unix хранит страницы виртуальной памяти?   -  person Shashi    schedule 03.02.2014


Ответы (1)


Я думаю, 2) применяется только в том случае, если вы сопоставляете файл с MAP_PRIVATE, а затем только в том случае, если вы изменяете страницы в памяти. Если вы сопоставляете страницы без MAP_PRIVATE, файл уже находится на диске, и его не нужно копировать в файл подкачки. 1) Правильно - вы можете отображать файлы большего размера, чем доступная память. Но помните, что ОС по-прежнему должна выделять таблицы страниц, поэтому не пытайтесь сопоставить файл размером 1 ТБ.

person Community    schedule 27.03.2014