2

У нас много проблем с памятью на новой коробке OpenVZ. Предполагается, что он имеет 1 гигабайт памяти, я не уверен, сколько из этого является разрываемой или гарантированной памяти. Программы в целом, кажется, занимают больше виртуальной памяти, чем дома на моем компьютере и на нашем другом устройстве OpenVZ.

Я написал эту простую программу на C:

#include <stdio.h>
#include <stdlib.h>

int main(){
  char *thingy = malloc(500);
  getchar():
  return 0;
}

Таким образом, он просто выделяет 500 байтов, а затем возвращает. Я запустил программу на 3 компьютерах. На моей домашней машине и в нашем другом окне OpenVZ показано около 1 КБ используемой виртуальной памяти. На новой проблемной машине ее около 3к.

Я знаю, что это просто виртуальная память, а не резидентная память, но почему эта машина выделяет так много виртуальной памяти? Есть ли какие-то настройки, которые мне нужно настроить в соответствии с настройками памяти OpenVZ?

Я попытался изменить размер стека с помощью ulimit -s 256 и перезапустить некоторых демонов, но я все еще видел те же результаты.

Я делаю весь свой мониторинг с помощью htop, это даже хорошая программа для использования с OpenVZ vps? Я прочитал, что я должен анализировать выходные данные /proc /user_beancounters intead или что-то.

Я должен отметить, что это использование памяти, кажется, приводит к сбоям. :\

1 ответ1

2

Поскольку виртуальная память фактически свободна, никто не потрудится оптимизировать ее использование. Скорее всего, это просто выделение большой суммы, чтобы избежать необходимости выделять больше позже.

Большее распределение стоит так же, как небольшое распределение. Но два небольших выделения стоят больше, чем одно большое.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .