При запуске mke2fs -t [ext2|ext3|ext4] /dev/sda1
программа потребляет более 100 МБ памяти, что может быть довольно проблематично для встроенной системы. Это нормальное поведение? Есть ли способ как-то его опустить?
Дополнительная информация:
Я использую e2fsprogs 1.41.14. Пробовал запустить его на 1.42.11 с -D
опцией, которая дала мне аналогичные результаты. Это означает, что это не проблема очистки кэша ввода-вывода.
Изменить: Большая часть памяти используется при создании журнала и информации суперблока. Память освобождается по завершении программы, поэтому утечка памяти может быть исключена.
Другое Править: у меня есть идея, не уверен, насколько точной она может быть. В комментариях мы с Майклом установили (я очень благодарен за вашу помощь и время, потраченное на эту проблему), что я не могу исправить что-либо в самой программе, но может быть какой-то кэш, который записывает много информации в память. Может быть, есть какой-то способ выяснить, какие программы использует кэши и можно ли их отключить или нет?
источник
Ответы:
Я связался с автором e2fsprogs и задал этот вопрос. После консультации я обновился до последней версии (1.43) с github. В обычном режиме мало что изменилось. Использование памяти немного лучше (90 МБ вместо 100 МБ), но опция -D (используйте direct_io, опускайте буферы / кеши), делая процесс в два или три раза дольше, значительно сокращает объем памяти (~ 8-10 МБ). Стоит заметить, что я проводил аналогичный эксперимент с 1.42.x и не достиг аналогичных результатов.
Я могу принять эти результаты. Но их следует рассматривать как частичную победу, так как программа при использовании буферов / кэшей все еще потребляет много памяти.
Если кому-то нужна дополнительная информация по этой теме, я открыт для обсуждения.
У меня есть идея для решения этой проблемы, если я докажу, что эта идея работает, я опубликую результаты здесь
источник