4

Я запускаю скрипт на python для сбора статистики, и фактически используемая память невелика, около 10%.И никакой другой процесс не стоил больше памяти.Однако, когда я использую free -m это показывает, что почти 95% памяти было использовано.Дело в том, что мой скрипт должен много читать из файлов, поэтому мне интересно, есть ли какой-нибудь механизм кеша памяти Linux, который вызвал проблему?echo 1 >> /proc/sys/vm/drop_caches работает, но кажется вручную.Как я могу уменьшить стоимость памяти и не оказать плохого влияния на чтение файлов?

2 ответа2

7

Ядро Linux автоматически кэширует файлы в памяти для эффективности. Это неплохая вещь. При запуске free -m вы увидите справа количество памяти, используемой в кеше. Если приложению нужна память, ядро освободит часть кеша. Вы не должны пытаться управлять им самостоятельно.

5

Я не думаю, что у вас есть настоящая проблема здесь.

Почему вас волнует, сколько всего памяти используется? Больно что-нибудь?

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

Есть несколько необычных случаев, когда большое кеширование может быть плохим. Может быть, всплеск чтения всегда происходит прямо перед всплеском выделения памяти. Возможно, что-то в вашем конкретном случае означает, что нет никакой возможной выгоды, и вам нужно выжать последние 0,1% затрат на производительность. Возможно, вы используете встроенную систему, которая использует ОЗУ с ограниченным сроком службы. Если у вас есть такой случай, скажите нам, что это такое.

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