2

У нас есть встроенная система Linux (yocto 1.8), работающая на i.Плата MX6 с 1 Гб оперативной памяти. Ядро сконфигурировано так, чтобы зарезервировать 320MB CMA и не иметь подкачки. Ядро 3.10.53

Когда мы запускаем небольшое тестовое приложение просто для того, чтобы съесть память, мы видим странное поведение, когда мы освобождаем около 250 МБайт, буферы / кэши начинают уменьшаться, а объем свободной памяти остается на уровне около 250 МБайт. Если мы продолжаем выделять память, система становится все более и более вялой, пока она полностью не остановится или не начнется убийца ООМ.

Я думаю, что меня интересует, как на самом деле работает CMA, потому что мы отключаем CMA, мы видим то же поведение, что и выше, но это происходит, когда у нас свободно около 40-50 МБайт, и я считаю, что это ожидается. Прочитав о CMA, я считаю, что пул не должен полностью выводиться из системы, он все же должен быть жизнеспособным для кешей и т.д., Но в нашем случае кажется, что система отбрасывает кеши, пока остается много памяти.

Кто-нибудь знает, является ли это ожидаемым поведением, или есть ли лучшее место, чтобы задать этот вопрос?

Редактировать: кажется, мы изменили значение vm.min_free_kbytes на 32MBytes. Возвращение к значению по умолчанию, кажется, позволяет нам использовать всю память.

Мы все еще не уверены, как CMA на самом деле влияет на систему, но это, возможно, уже не так важно.

0