2 ГБ барьер для приложения X64, работающего на процессоре x64 (Xeon 7650) с ОС x64 (redhat 5.6) - почему + что проверить - PullRequest
1 голос
/ 11 сентября 2011

Я использую x64-версию некоторого приложения-симулятора на очень хорошем x-сервере IBM (4 8-ядерных процессора).ОС Linux - redhat 5.6 x64 kernel.Так что это приложение вылетает именно тогда, когда ему требуется более 2 ГБ памяти (как видно из его собственных файлов журнала).

Мой вопрос на самом деле состоит в том, как отладить эту проблему - какие соответствующие параметры среды мне следует посмотреть?Имеет ли отношение ulimit (или sysctl.conf) к этой проблеме?Какую дополнительную информацию я могу опубликовать, чтобы вы могли мне помочь?

Ответы [ 2 ]

1 голос
/ 11 сентября 2011

Это было бы проблемой приложения. Хотя приложение скомпилировано как 64-разрядное приложение, оно все равно использует 32-разрядные целые числа со знаком вместо некоторых указателей или соответствующих типов *_t.

Если вы сами скомпилируете приложение, найдите все «неподписанные» или «усеченные» предупреждения в выходных данных компиляции и исправьте их.

0 голосов
/ 12 сентября 2011

Значение shmmax определяет объем памяти, который могут использовать приложения, вы должны проверить значение с помощью этой команды:

cat /proc/sys/kernel/shmmax

Если вам нужно увеличить, вы можете использовать:

echo 4096000000 > /proc/sys/kernel/shmmax

Bye

...