Этот вопрос предназначен для понимания ограничений вида, применимых к файлу 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.
Верны ли мои предположения, что
- с файлами Mem-Mapping размер файла не ограничивается доступной физической оперативной памятью, так как файлы будут загружаться/выгружаться операционной системой по запросу.
- и единственным ограничивающим фактором может быть дисковое пространство, сконфигурированное для виртуальной памяти. в этом случае, как я могу определить дисковое пространство, идентифицированное ОС для расширения виртуальной памяти? где на жестком диске хранится отпечаток виртуальной памяти файла?