Какая ОС (или дистрибутивы) поставляется с 64-битными ядрами (x86_64, SPARC64, PPC64, ..smth else? ..) и 32-битным пользовательским пространством?
Я хочу, чтобы все небольшие программы в пользовательском пространстве (например, ls, cat и т. Д.) Были 32-битными, потому что они действительно не обязательно должны быть 64-битными. Но для использования> = 3 ГБ ОЗУ ядро ОС должно быть 64-битным. Также программы базы данных (при использовании большого количества памяти) могут быть 64-битными.
64-битный режим может повредить некоторые программы, сделать их больше, съедать (тратить) память на указатели (особенно в больших абстрактных типах данных, таких как список, дерево и т. Д.).
64-битные программы ТРАТИТ дважды память на КАЖДЫЙ указатель. Я этого не хочу.
И вопрос не в том, нужны ли 32-битные программы при наличии 64-битного процессора. Вопрос: «Какая ОС поставляется с 32-битным пользовательским пространством и ядрами в 32/64 битном режиме». Примеры таких ОС: Solaris / SPARC64, MACOSX / X86_64 (10.5) / ....
Текущий консенсус, похоже, таков, что вы беспокоитесь напрасно. 64-разрядная версия - это нормально, и она не занимает намного больше места, чем 32-разрядная. Вот пара моих систем:
What 64-bit Size 32-bit Size
/bin/ls 101K 91K
/lib/libc.so 1.4M 1.3M
/usr/bin/php5 5.5M 5.1M
Видите - не так уж и важно. Также 64-битные указатели более полезны, чем вы думаете.
Я почти мог купить, что вы выиграете от 64-битного ядра и 32-битного пользовательского пространства больше, чем потеряете время на его обсуждение. Что, конечно, иногда может быть правдой (я делаю это для сервера Redis).
Но если вы хотите начать смешивать 64-битные и 32-битные двоичные файлы, как вы упомянули в комментарии, вам действительно нужны проблемы. Это будет означать, что многие библиотеки будут дважды отображены в памяти, что было бы довольно неэффективно. Ни один дистрибутив не предлагает этого (даже Debian multiarch
проект не распространяется на двоичные файлы).
Вы ссылаетесь на двоичные файлы, такие как «cat», «dd», «bash», даже «gcc», как на не требующие 64 бита, но это типичные примеры программ, в которых использование 32-битных указателей вместо 64-битных не спасет » что-нибудь". Вы уже потеряли больше времени на набор текста cat
в своем сообщении, чем вы когда-либо могли бы сохранить, запустив его 32-битную версию вместо 64-битной.
Не говоря уже о том, что x86_64
не только имеет большие указатели, но и имеет вдвое больше общих регистров, а компиляторы могут делать столько же предположений о доступных расширениях, сколько и с i686
(что больше, чем i586
, в свою очередь, более i486
, в свою очередь, более i386
). Производительность может в конечном итоге стать заметно лучше.
Если вы хотите использовать как 64-разрядные, так и 32-разрядные двоичные файлы, я лично рекомендую запустить (вероятно, очень мало) указательный Приложения требуется менее 4 ГБ ОЗУ и для которых вы действительно заботитесь о производительности в 32-битном chroot
(или любой контейнер). Если они не работают в стеке Java, в этом случае вам, вероятно, будет лучше придерживаться 64-битного пользовательского пространства и использовать гибридную JVM (со сжатыми указателями).
Если вам действительно нужно 64-битное ядро и 32-битное пользовательское пространство, и не только потому, что вы где-то читали, что у него будет лучшая производительность, вы всегда можете взять ядро из 64-битных пакетов вашего дистрибутива и сжать его. при 32-битной установке.
Я использую 64-битный KVM-сервер, на котором размещено несколько виртуальных серверов (debian / woody - debian / sqeeze и Windows XP). виртуальный Linux-сервер имеет 32-битный Userland и 64-битное ядро (aptitude install linux-image-2.6-amd64).
Поэтому я думаю, что вы можете установить каждый текущий дистрибутив Linux и запустить на нем 64-битное ядро - у меня нет проблем с этой настройкой.
Есть новый X32 ABI в работе, которая нацелена именно на то, что вы ищете: 32-битное пользовательское пространство с 64-битным ядром на оборудовании AMD64. Преимущество X32 перед традиционным i386 ABI состоит в том, что программы могут использовать преимущества других функций архитектуры AMD64, таких как новые инструкции и дополнительные регистры ЦП.
Однако X32 еще не готов к использованию, поэтому лучше всего на данный момент установить 32-разрядный дистрибутив с 64-разрядным ядром. В Debian, например, вы должны установить linux-image-2.6-amd64
(или linux-image-amd64
если вы используете wheezy, который еще не выпущен, но использует ядро 3.x).