2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2
 
 Re: Парадокс потребления памяти виртуальной машиной
Сообщение15.05.2017, 16:16 
Аватара пользователя
Нет и не должна. Но это нелогично: использовать только малую часть выделенной оперативной памяти хоста, а для остального использовать жёсткий диск хоста. Это должно сильно замедлять работу (чего я не замечаю) вплоть до заметного «шур-шур-шур» HDD, чего тоже не замечаю.

 
 
 
 Re: Парадокс потребления памяти виртуальной машиной
Сообщение16.05.2017, 12:54 
Аватара пользователя
В современных ОС с точностью до коэфициентов приоритизации, других мелочей и используемого API, на уровне приложений нет различия между работой с файлами и выделенной памятью.

Файлы кешируются с предсказанием в физической оперативной памяти. А выделенная приложениями память может физически сбрасываться на диск - и совершенно не обязательно только в случае, если последней не хватает - при неактивном использовании участка выделенной памяти система может сбросить его на диск и использовать физическую память под файловый кеш.

Более того, само выделение памяти - это всего лишь обозначивание намерения ее использовать. Как и создание файла или загрузка exe/dll, впрочем.

С точки зрения используемого API есть File Mapping, окончательно размывающий для приложений границу файл-память. Собственно, виртуальные машины его активно и используют.

 
 
 
 Re: Парадокс потребления памяти виртуальной машиной
Сообщение17.05.2017, 23:38 
Аватара пользователя
Я более-менее понимаю все эти абстракции, но говорил совершенно не об этом, а о разнице в скорости работы между случаями, когда используется физическая RAM и физический HDD.

 
 
 
 Re: Парадокс потребления памяти виртуальной машиной
Сообщение18.05.2017, 01:28 
Аватара пользователя
Aritaborian в сообщении #1217044 писал(а):
Я более-менее понимаю все эти абстракции
Учитывая вышесказанное и вообще существование данной темы, думаю, все-таки скорее менее, чем более.

 
 
 
 Re: Парадокс потребления памяти виртуальной машиной
Сообщение18.05.2017, 12:01 
Аватара пользователя
Пусть так; готов признать, что скорее Осло, чем Копенгаген. Учитывая существование данной темы ;-) Но и вы, plz, не юродствуйте, а ответьте, в чём именно я неправ.

 
 
 
 Re: Парадокс потребления памяти виртуальной машиной
Сообщение18.05.2017, 19:39 
Аватара пользователя
На мой взгляд, тут изложен ответ на первое сообщение данной темы. Затем вы ушли не туда, вот это, в частности, заблуждение.

Выделив "физическую" память в виртуальной машине вы не выделите физическую память в машине-хосте. Что бы там она выделилась, ее нужно, в частности, активно использовать.

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

 
 
 
 Re: Парадокс потребления памяти виртуальной машиной
Сообщение19.05.2017, 11:32 
Аватара пользователя
Мне казалось, что я уже неоднократно всё сформулировал и переформулировывал ;-( Что ж, попробую снова.
Априори считаем, что оперативная память в разы, а то и на порядки быстрее жёсткого диска, и использовать нужно в первую очередь её, пока есть такая возможность. А виртуальная машина под управлением Oracle VM VirtualBox не желает, как мне кажется, использовать всю выделенную ей оперативку хоста (но при запуске резервирует: i. e., не запускается, если в момент запуска нет свободного объёма RAM, большего или равного чем тот, что выделен ей в настройках). Или всё же использует, но это по непонятным причинам не отражается адекватно в диспетчере задач хоста. Вопрос: что за фигня?

 
 
 
 Re: Парадокс потребления памяти виртуальной машиной
Сообщение19.05.2017, 13:13 
Аватара пользователя
Что ж, попробую еще раз. Если упрощенно, то так:
1) Виртуальная машина создает файл-образ, соответвующий объему "физической" памяти эмулируемой машины.
2) Виртуальная машина использует File Map для отображения этого файла-образа в свое адресное пространство.
3) Виртуальная машина не контролирует, какая часть этого образа находится в физической памяти машины-хоста, а какая лишь зарезервирована (или уже сброшена) на диске в файле-образе. Этим занимается операционная система машины-хоста на свое усмотрение.
4) При запуске виртуальная машина лишь делает проверку на соответствие объему свободной памяти машины-хоста объему "физической" памяти эмулируемой машины, во избежание возможных диких тормозов. Что такое эта свободная память на самом деле - отдельный разговор.

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

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

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

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

 
 
 
 Re: Парадокс потребления памяти виртуальной машиной
Сообщение19.05.2017, 13:24 
Аватара пользователя
Спасибо.

 
 
 [ Сообщений: 24 ]  На страницу Пред.  1, 2


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group