У нас есть система, в которой работает 32-разрядная версия RHEL 4 AS (2.6.9-42.ELsmp # 1 SMP) с 20 ГБ ОЗУ и 8 двухъядерными процессорами, на которой работает база данных Oracle 10g.
Это перебор, но я не могу объяснить почему. Мне также интересно, могут ли быть проблемы, связанные с памятью из-за непропорциональной конфигурации системы - может ли ОС тратить слишком много ресурсов на планирование процессоров и т. Д.?
Спасибо
Что касается количества ядер и памяти, вы говорите о 20 ГБ на 16 ядрах; это (оптимистично) 1,25 ГБ на ядро, что не является тонной памяти, если вы действительно закрепите все 16 ядер. Мы определенно используем системы с более высоким соотношением память / ядро, чем 20 ГБ / 16, и наш поставщик продолжает пытаться продавать нам коробки, которые могут быть сконфигурированы с памятью на многие сотни ГБ на 24 ядрах.
Что касается производительности приложений, то 16 ядер и 20 ГБ ОЗУ не обязательно должны быть превышены для Oracle; мы определенно запускаем такие большие системы. Тем не менее, 20 ГБ ОЗУ мало что делают, когда вы используете 32-разрядное ядро; восстановление на RHEL5-64 было бы хорошим выбором.
Вам также необходимо, чтобы ваш администратор баз данных изучил настройку Oracle для использования преимуществ большого объема физической памяти - наши администраторы баз данных отключили AMM и настроили huge_pages на наших более крупных серверах Oracle.
Даже если характеристики машины несколько завышены для вашей текущей рабочей нагрузки (и только долгосрочный статистический мониторинг действительно подтвердит это), велика вероятность, что вы вырастете в нее; а в периоды непредсказуемой большой нагрузки приятно иметь некоторые накладные расходы, с которыми можно поиграть, вместо того, чтобы мгновенно умереть.
Надеюсь, это поможет!
Я не думаю, что у вас, вероятно, возникнут проблемы с ресурсами, связанные с планированием ЦП или отображением памяти. Этого не произойдет, если в этом нет необходимости. Когда они все же происходят, накладные расходы относительно низкие по сравнению с запланированным процессом.
Я бы посмотрел на:
Если вы используете виртуальные хосты на сервере, вы можете закрепить ЦП для хоста. Вы можете сделать то же самое для однопоточных процессов с высокой загрузкой ЦП. Если вы это сделаете, распределите нагрузку между процессорами.
Вряд ли.
Для чего вы используете сервер? Только небольшое профилирование скажет вам, действительно ли он перегружен или нет.