Ubuntu: утечка памяти

1740
Keener

У меня проблемы с поиском, откуда происходит утечка памяти. Я использую Ubuntu 8.04 LTS на Dell XPS M1530. У меня есть 3 ГБ оперативной памяти, и я обнаружил, что примерно через час использования top показывает мне 2 ГБ + используется. Странно то, что когда я складываю проценты памяти по PID из top или ps aux, я обнаруживаю, что мне нужно использовать только около 20-25% моего доступного оперативного памяти.

Это привлекло мое внимание к тому, что я снова запустил vmware server. Очевидно, что использование оперативной памяти резко возрастает, когда я загружаю виртуальную машину, но используемая VMware память не учитывает использование памяти, которое я вижу через top или free. Остановка сервера vmware освобождает память, которая была ему выделена, но я все еще не могу найти, где используется эта оперативная память. Конечно, после полной перезагрузки память в порядке, но очень быстро она загружается на 60-80%, а на процессы приходится только треть. Любые идеи, где я должен искать дополнительную информацию о том, что это может быть?

0

4 ответа на вопрос

3
Broam

Вы используете своп вообще?

Если бы не я, я бы не волновался. Linux любит использовать запасную память для кеширования дисковых блоков.

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

Ну, вот странная часть. Он не использует пространство подкачки, однако становится неприятно вялым, иногда даже отказывается загружать новые программы, когда использование памяти чрезвычайно велико, и все же он не погружается в обмен. Не имеет особого смысла для меня, но спасибо за совет. Keener 14 лет назад 0
Похоже, я не смог найти настоящую утечку памяти, поэтому это должно быть просто кэширование диска. Спасибо за помощь! Keener 14 лет назад 0
1
snies

Проверьте «реальное» использование памяти командой «free». Обратите внимание, что linux хранит содержимое в памяти как можно дольше, так как вы можете использовать его снова. Тем самым он создает большой кэш / буфер использования памяти.

Редактировать в ответ на комментарий Кинерса:

 total used free shared buffers cached Mem: 4058084 3974976 83108 0 89152 3520952 -/+ buffers/cache: 364872 3693212 Swap: 2040212 157048 1883164 

Вы проверили строку «- / + buffers / cache» (которая, я сомневаюсь, вы можете видеть это ясно вверху), у вас еще осталось очень мало свободного места в этой строке? Потому что, как вы можете видеть в моем примере, это «настоящая» свободная память, тогда как в первой строке или сверху вы видите только довольно бесполезное значение бесплатно. Теперь я просто хочу убедиться, что вы понимаете вывод, потому что если бы вы уже посмотрели на бесплатное, как вы сказали, вы бы увидели, что у вас нет утечки, и ваша машина просто кешируется, как вы сказали в своем последнем комментарии к решению ,

Free возвращает те же результаты, что и top, как я уже говорил выше. Keener 14 лет назад 0
@Keener - вы использовали инструмент "free" и смотрели на строку "- / + buffers / cache", как описано в редактировании моего поста выше? snies 14 лет назад 0
Да, я посмотрел на «бесплатный» инструмент. Проблема заключалась в том, что я не знал, что * nix кэшировал так много памяти, поэтому я предположил, что это утечка памяти, и теперь я вижу ошибку моих предположений. Спасибо вам за помощь! Keener 14 лет назад 0
1
wazoox

Поздравляем, это та же самая «ошибка», которая «ранит» пользователей Windows 7 :) Linux использует (и делал это по крайней мере в течение последних десяти лет) неиспользуемую ОЗУ для кэширования дисков и буферизации различных данных. Microsoft недавно поняла, что это чертовски хорошая идея, и многие недавно жаловались на это. Ищите "утечка памяти в Windows 7" для удовольствия :)

Windows Vista, на самом деле. Sathya 14 лет назад 2
1
rsa

Вы можете попробовать команду ниже, чтобы освободить кеш без перезагрузки сервера. Проверьте с topдо и после команды.

echo 1 > /proc/sys/vm/drop_caches 

Похожие вопросы