LINUX.ORG.RU
ФорумAdmin

Openwrt x86/generic кэширует копируемые файлы.

 


0

2

Долго пытался нарыть инфу сам, но познаний в Linux совсем немного. И так, установил Openwrt на комп который был так сказать установил samba4 для хранения всякого, но при закачки в папку всё попадает в «Закэшировано» и после заполнения кэша начинает грузиться вся система скорость закачки падает порой до нуля. Понаблюдал и всё то ре самое происходит и SFTP, пробовал FTP, аналогичное поведение. Забиваются все 16 гигов оперативной памяти и скорость падает пары мегабит. Куда капать и как починить данный недуг. Версия встроенного ПО OpenWrt 24.10.2 r28739-d9340319c6 / LuCI openwrt-24.10 branch 25.168.50434~d6b13f6

Перемещено hobbit из general

Ответ на: комментарий от NyXzOr

Файлы пишутся на отдельный диск, но по какой то причине кэшируются в оперативную память при копировании. Есть 2 смонтированых раздела /dev/sda3 /home/share и /dev/sdc1 /home/share3 ведут себя одинаково. 2 скриншота. https://disk.yandex.ru/i/CiUVQnpdhyknLQ https://disk.yandex.ru/i/AByzh2UrqKcHsQ

SakuraTV
() автор топика

А скорость диска какая? Может он по сети принимает файлы быстрее, чем они пишутся на диск, поэтому они забивают кеш.

u5er ★★★
()
Ответ на: комментарий от SakuraTV

Попробуй в консоли сделать что-то типа dd if=/dev/zero of=/home/share/test.write bs=1G count=1 oflag=dsync

Так же посмотри SMART дисков.

vitruss ★★★★★
()
Ответ на: комментарий от u5er

2.5" жесткий диск, проверял до установки 115-120 мб/с на запись больших файлов. После копирования кэш не отчищается, при копировании он пишет и на диск и в оперативка забивается.

SakuraTV
() автор топика

Задай лимит грязного кэша:

sysctl vm.dirty_background_bytes=$((16*1024*1024))
sysctl vm.dirty_bytes=$((16*1024*1024))

Если эти настройки помогут, внеси их в /etc/sysctl.conf.

iliyap ★★★★★
()
Ответ на: комментарий от iliyap

Спасибо помогло, теперь скорость не падет. А само отчистку кэша как то можно сделать или это не скажется на системе?

SakuraTV
() автор топика
Ответ на: комментарий от SakuraTV

Однократный сброс системного кэша на диски (заблокируется, пока не сбросит, надо подождать):

sysctl vm.drop_caches=3

Либо я не понял что значит «Само очистка». Настройки dirty_bytes не дают write кэшу (который грязный) разрастаться до неприличных размеров. Read кэш (который чистый) они не затрагивают. Но это обычно не проблема. Поскольку страницы чистого кэша ядро дискардит мгновенно и переиспользует на другие нужды (например, отдаёт процессу при пейджфолте анонимного маппинга). А страницы грязного кэша ядро должно сначала сбросить на диск. Сброс страниц кэша это в общем случае random write. Если диск механический, то сброс это не быстро.

iliyap ★★★★★
()
Последнее исправление: iliyap (всего исправлений: 1)

Openwrt x86/generic

Поставь нормальную версию, может уйдёт проблема?

64 is for modern PC hardware (anything from around 2007 onward), it is built for 64-bit capable computers and has support for modern CPU features. Choose this unless you have good reasons not to.

Generic is for 32-bit-only hardware (either old hardware or some Atom processors), should be i686 Linux architecture, will work on Pentium 4 and later. Use this only if your hardware can’t run the 64-bit version.

NyXzOr ★★★★★
()
Ответ на: комментарий от iliyap

Под «Само очисткай» отчищать оперативную память после записи данных на диск, как ты написал с Грязного кэша. Как я вижу у меня после копирования в расширенную папку, допустим архива в 12 гигабайт, оперативная память постоянно занята на этот объем, даже спустя час или два, хотя данные вроде уже записаны на диск. И при чтении с расширенной папки того же архива он начинает кешировать тот же объем в память. Запускаю фильм сразу из расширенной папки, то же данные кэшируются. Просто пытаюсь разобраться это нормальное поведение? Ведь как же устройства на которых оперативной памяти практически нет 64 или 128 мегабайта.

SakuraTV
() автор топика
Ответ на: комментарий от NyXzOr

Спасибо за совет, позже попробую х64 поставить.

SakuraTV
() автор топика
Ответ на: комментарий от SakuraTV

Нет пользы в просто свободной памяти. Память, занятая чистым кэшем, страницы которого ядро может мгновенно продискардить и переиспользовать, это практически то же самое что свободная память, но приносящая пользу.

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

Память нет смысла «чистить». Есть смысл только снижать количество грязной памяти (которая не может быть мгновенно переиспользована). Посмотреть количество грязной памяти можно в grep Dirty: /proc/meminfo. Если там гигабайты (которые должны быть сброшены на медленный механический диск), то это проблема. Если там килобайты, то проблем нет.

А устройствам с малым размером памяти приходится просто чаще переиспользовать страницы памяти (то для чтения одного блока диска, то для чтения другого блока диска). Они просто делают больше чтений с диска, чем устройство с 16 гигабайтами.

iliyap ★★★★★
()
Последнее исправление: iliyap (всего исправлений: 1)
Ответ на: комментарий от SakuraTV

это нормальное поведение?

Да. Для описание того, что постоянно занятая кэшем на чтение ОЗУ - это норма в Linux даже целый сайт сделали :-)

Pinkbyte ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.