MongoDB предполагает 64-битную систему - означает ли это аппаратное обеспечение или ядро ​​ОС или оба? - PullRequest
3 голосов
/ 15 сентября 2010

В этом сообщении говорится , что вам нужна 64-битная система для MongoDB, если ваши данные больше 2 ГБ.

На моем локальном компьютере 64-разрядная версия Intel C2D с 32-разрядной ОС Mac OS X Leopard 64-разрядная версия MongoDB работает без ошибок.

На сервере, на 64-битной машине с 32-битной CentOS 5.0, 64-битная MongoDB не будет работать. 32 бит работает нормально.

Мой вопрос: требует ли MongoDB как аппаратное обеспечение, так и ядро ​​ОС, чтобы оно было 64-битным? Если да, то почему расхождение в моем опыте в вышеуказанных системах?

Ответы [ 3 ]

1 голос
/ 16 сентября 2010

На самом деле требуется следующее: если вы хотите работать с более чем 2 ГБ данных, вам необходимо использовать 64-битную версию исполняемого файла mongod.Для этого требуется 64-разрядная ОС, которая, в свою очередь, требует 64-разрядного оборудования.

Требование не имеет ничего общего с физической оперативной памятью и касается того, сколько виртуальной памяти может обрабатывать один процесс.Поскольку mongodb использует mmap для сопоставления содержимого файлов данных, у вас должно быть как минимум достаточно виртуального адресного пространства, чтобы вместить все ваши данные.Обратите внимание, что виртуальное адресное пространство не увеличено на PAE.PAE - это просто расширение физических адресов, которое позволяет вам иметь более 3,5 ГБ ОЗУ.

Редактировать: похоже, что ядро, работающее в 32-битном режиме, может быть написано так, чтобы поддерживать 64-битную версиюв пользовательском пространстве.OSX, работающий на 64-битном оборудовании, - единственный известный мне пример, который использует это, хотя.В Windows и Linux вы должны установить 64-битную версию операционной системы для запуска 64-битного программного обеспечения.

1 голос
/ 15 сентября 2010

Если ваши данные> 2 ГБ, ядро ​​должно иметь возможность адресовать> 2 ГБ памяти. Для этого требуется либо 64-битное ядро, либо вы можете попробовать использовать расширение ядра PAE , чтобы 32-битное ядро ​​могло адресовать больше ОЗУ.

Возможно, MAC OS X уже имеет что-то вроде расширения PAE, отсюда и расхождение.

0 голосов
/ 16 сентября 2010

MAC OS X является особым случаем, поскольку он ОЧЕНЬ старается скрыть весь 32/64 битный материал от пользователя. Leopard, afaik, уже поддерживает некоторые 64-битные приложения с помощью некоторых хитростей.

...