Эти ограничения исходят не от Debian или Linux, а от аппаратного обеспечения. Различные архитектуры (процессора и шины памяти )имеют разные ограничения.
В современных процессорах x86 -64 PC MMU позволяет 48 бит виртуального адресного пространства . Это означает, что адресное пространство ограничено 256 ТБ. С одним битом, чтобы отличить адреса ядра от адресов пользовательской среды, остается 128 ТБ для адресного пространства процесса.
На текущих процессорах x86 -64 физические адреса могут использовать до 48 бит , что означает, что вы можете иметь до 256 ТБ. Предел постепенно увеличивался с тех пор, как была введена архитектура amd64 (с 40 бит, если я правильно помню ). Каждый бит адресного пространства требует некоторой логики подключения и декодирования (, что делает процессор дороже, медленнее и горячее ), поэтому у производителей оборудования есть стимул уменьшать размер.
Linux позволяет использовать физические адреса только до 2^46 (, поэтому вы можете иметь только до 64 ТБ ), поскольку это позволяет полностью отображать физическую память в пространстве ядра. Помните, что существует 48 бит адресного пространства; один бит для ядра/пользователя оставляет 47 бит для адресного пространства ядра. Половина из них обращается непосредственно к физической памяти, а другая половина позволяет ядру отображать все, что ему нужно. (Linux может работать с физической памятью, которая не может быть отображена полностью одновременно, но это создает дополнительную сложность, поэтому это делается только на тех платформах, где это требуется, таких как x86 -32 с PAE. и armv7 с LPAE.)
Полезно, чтобы виртуальная память была больше физической по нескольким причинам:
Да, включения этой опции было достаточно, чтобы MemoryMax работал должным образом.