У меня есть один роутер с встроенным Linux с запущенным на нем ядром версии 2.4.22. Я знаю его очень старую версию, но мне приходится с ней разбираться. Пожалуйста, взгляните на бесплатный вывод команды, когда я запустил ее на своем компьютере
[8300002902-3] Отладка> бесплатно
total used free shared buffers
Mem: 128104 123928 4176 0 2164
Swap: 0 0 0
Total: 128104 123928 4176
Теперь моя проблема в том, что всякий раз, когда он выполняет некоторые команды и перенаправляет свой вывод в какой-либо файл с помощью оператора>, размер буфера увеличивается на 4 КБ, и даже если я удаляю тот же файл с помощью tm -rf, буфер снова увеличивается на 4 КБ. из-за этого, когда размер моего буфера достигает примерно 5,3 МБ, возникает проблема OOM, поскольку вы видите, что у меня доступно только 128 МБ свободного места. Я думаю, что ядро не освобождает буферное пространство. Подскажите пожалуйста, что можно сделать, чтобы избавиться от этой проблемы. Я пробовал много вещей, которые есть в Интернете, например, установив значение drop_caches в / proc / sys / vm, эта команда недоступна в моей версии ядра. Пожалуйста, предложите заранее спасибо.
Я знаю, что вы не хотите этого слышать, но версия 2.4.22 действительно устарела и содержала ряд ошибок, связанных с вводом-выводом и памятью. Это явно не ожидаемое поведение ядра, и я подозреваю, что оно не имеет ничего общего непосредственно с перенаправлением вывода или rm.
Например, эта ошибка происходит каждый раз, когда файл открывается и закрывается, когда включен режим O_DIRECT, и эта ошибка утечка памяти каждый раз, когда процесс разветвляется (что делает bash при перенаправлении stdout).
Эти утечки памяти были небольшими, поэтому их не так легко заметить в невстроенных системах, но когда у вас всего 128 МБ ОЗУ, считается каждый КБ.
И было еще много мелких разовых утечек памяти, подобных этой. Ядро Linux просто не было надежной рабочей лошадкой в первые дни 2.4, как сегодня.
К сожалению, я не думаю, что вы сможете что-то сделать с этим, кроме обновления ядра, выпущенного где-то в этом тысячелетии. :П