100 ГБ виртуальной памяти на сервере 64 ГБ без подкачки [дубликат]

Возможный дубликат:
Общие сведения об использовании виртуальной памяти> подкачка + физическая в Linux

У нас есть следующий процесс:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                         
10684 root       8 -15 89.6g  13g 1.1g S 406.9 21.8 316:34.89 java 

Подходит ли этот объем виртуальной памяти, если предположить, что у нас только 64 ГБ оперативной памяти. Также вот информация о физической памяти:

Mem:  65995412k total, 64967388k used,  1028024k free,  3976288k buffers
Swap: 32764556k total,     1236k used, 32763320k free, 19534812k cached

Как видите, заменено только 1236k.

Интересно, а где же недостающие 30 ГБ + ОЗУ? На диске ли они?

Сколько виртуальной памяти подходит для конкретного процесса? Какая связь между виртуальной памятью и ОЗУ.

1
задан 13 April 2017 в 15:13
1 ответ

ВИРТ отражает количество виртуальной памяти , выделенной процессом, а не реальным. Адресное пространство процесса может содержать определенные области , сопоставленные с соответствующими файлами, которые не находятся в ОЗУ.

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

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

Также Linux может разрежать идентичные страницы в памяти. Если два процесса используют одни и те же страницы в памяти, ядро ​​может отобразить обе виртуальные страницы в одну реальную (и освободить вторую).

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

5
ответ дан 3 December 2019 в 17:11

Теги

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