Я пытаюсь настроить сервер с 4 Гб оперативной памяти, используя 32-битную Ubuntu 16.04 LTS, и столкнулся с интересной проблемой, с которой, надеюсь, мне удастся помочь.
Я пытаюсь обработать некоторые большие файлы данных на этом новом сервере с помощью python, но python падает с ошибкой памяти (он запускает наш ram). Я установил раздел подкачки с объемом памяти в несколько ГБ, но сервер практически не использует этот раздел.
Едва ли это важное слово, так как используется своп на сумму около 80 Мб. Поэтому я думаю (пожалуйста, поправьте меня, если я ошибаюсь здесь), что своп настроен правильно, так как система использует его.
Теперь я попытался поиграть с swapiness, но это, похоже, не помогает (текущее значение равно 100).
Обработка этих больших файлов данных происходит ночью, и поэтому низкая производительность из-за использования подкачки не является проблемой.
Кто-нибудь сможет мне объяснить, почему Ubuntu не может использовать свою память подкачки и просто выдает ошибку памяти?
Заранее спасибо,
Приветствия, Гильберт
32-разрядный процесс не будет использовать больше что 4 ГБ памяти, реальной или виртуальной.
Используя PAE [*] позволяет ОС использовать больше чем 4 ГБ RAM, но каждый процесс все еще ограничивается 4 ГБ виртуального пространства.
Если Вы хотите использовать больше RAM, чем это в процессе, необходимо использовать 64-разрядный ЦП, 64-разрядную ОС и 64-разрядные приложения (т.е., интерпретатор Python).
Если Вы хотите придерживаться 32-разрядной ОС, то посмотрите, можно ли разделить процесс Python на несколько процессов что каждое использование менее чем 4 ГБ RAM.
[*] IIRC все последние 32-разрядные ядра Ubuntu включает поддержку PAE.