В старые времена (до виртуализации) память использовалась в степени, кратной 2, потому что именно так производилась память. В наши дни, когда мы создаем виртуальные серверы, у которых нет реальной физической памяти, люди все еще создают их, используя степень / кратную 2.
Есть ли причина продолжать делать это (выступление или что-то еще), или это просто то, что люди делают, потому что это то, к чему они привыкли?
Нет причин продолжать эту тенденцию, по крайней мере, для VMware ... То же самое и для процессоров. Не стыдно сказать, что у меня есть виртуальные машины с 3 процессорами 🐼.
Я подозреваю, что каждая виртуальная машина по-прежнему использует число, кратное четырем байтам. Не два.
Обратите внимание, что 3 МБ - это 3072 КБ, что кратно двум и четырем (2x1536 или 4x768), хотя это не сразу становится ясно, когда вы смотрите на значение 3.
(Относительно того, почему кратно 2 или 4 байтам: доступ к памяти обычно составляет 1, 2 или 4 байта.)
Ответ на ваш вопрос обычно больше связан с гостевыми ОС, чем с используемым гипервизором. Windows в течение многих лет не особо заботилась о том, была ли размещена память каким-либо определенным образом, за исключением некоторых требований к тому, чтобы она выглядела как ПК, чтобы загрузчик работал. Linux также гибок.
Hyper-V, например, выделяет память гостевым ОС фрагментами по 2 МБ. Это сделано только для того, чтобы аппаратное обеспечение таблиц страниц в процессорах могло быть настроено на использование страниц размером 2 МБ, что более эффективно, поскольку оно использует меньше памяти для таблиц страниц и меньше записей в TLB процессора.