LINUX.ORG.RU

Система тормозит при копировании с nvme ssd на hdd

 , , , ,


2

7

При копировании больших файлов (десятки гб) с nvme ssd на hdd буквально все начинает лагать и тормозить.

С тех пор как у меня были проблемы с ssd от ADATA, я поменял его на Kingston KC2500. Но окончательно проблемы с производительностью не устранились.

Debian 11.

Обновление

Пока что помогло (сразу сняло проблему)

echo 64000000 > /proc/sys/vm/dirty_bytes

и добавление (для следующих загрузок)

vm.dirty_bytes=64000000

в /etc/sysctl.conf по совету Анонимуса. Спасибо!



Последнее исправление: metaprog (всего исправлений: 4)

добро пожаловать в дивный мир grep . /proc/sys/vm/dirty*

anonymous
()

Но окончательно проблемы с производительностью не устранились.

как сказали выше известный линупсовый баг, поменяй планировщик i/o, и в правила 60-ssd-scheduler.rules допиши, если нет - создай, пример с работающего:

ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0",ATTR{queue/scheduler}="noop"
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1",ATTR{queue/scheduler}="cfq"
e000xf000h
()
Ответ на: комментарий от Minona

точно также происходит при копировании с HDD на USB.

Знаю не по наслышке.

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

Так она и не должна помогать. Решением является ограничение vm.dirty_bytes.

Добавь в sysctl.conf

vm.dirty_bytes=64000000

Прочие меры не помешают. Например swap на zram.

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

Добавь в sysctl.conf

vm.dirty_bytes=64000000

Пока вроде помогло. Спасибо!

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

Установи ядро 5.16, возможно что-то поменяется.

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

покушать печенек, пока оно копируется

Или почитать FreeBSD Handbook :)

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

Его из ядра выкинули давно.

можно доустановить и грузить модулем

Дефолтный mq-deadline достаточно хорош.

не тестировал

e000xf000h
()
Ответ на: комментарий от izzholtik

Предлагаю забить и покушать печенек, пока оно копируется.

А если сытой, то пойти делать обратный процесс.

Вот она жизнь линуксоида.

🌰

anonymous
()

Ничего не меняется, лол)

Помню, был у меня на одной из старых работ новый ПК (на то время): Intel Core i5-2400/8 Gb DDR3, система на SSD, в компе еще пару винтов. ОС - Debian stable с LXDE.

Втыкаю я SD карту в ридер и с винта скидываю 10+ Гб файлов разнобойных (Навител какой-то).

Все - DE стало колом, можно идти не просто пить чай с печеньками, а замешивать тесто на печеньки и собирать чайные листья с кустов. А когда этот уже готовый чай и печеньки будут сожраны, тогда как раз копирование закончится и DE проснется.

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

Настройки по умолчанию. Чтобы таких глупых проблем не было.

Лорчую.

@hakavlad собственно, мой ответ такой же.

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

Высокий vm.dirty_ratio может увеличивать производительность операций записи и снижать износ диска. Поэтому и не решают проблему.

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

Высокий vm.dirty_ratio может увеличивать производительность операций записи и снижать износ диска. Поэтому и не решают проблему.

Нет. Это самая обычная глупость, на которую никто не обращает внимание.

Вот интересное чтиво на эту тему: https://lwn.net/Articles/572933/

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

- Пап, а правда, что Linux - многозадачная система?
- Конечно, сынок, иди, покажу, вот только пара файликов сначала докопируется...

LamerOk ★★★★★
()

Угадал автора по заголовку.

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

<зануда>Изначально это был анекдот про Windows.</зануда>

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

это не глупость, это legacy
резервировать 20% под «грязь» вполне себе решение, если у тебя 256/512мб оперативки
резервировать 20% под «грязь» на 4Гб оперативки уже как-то некрасиво смотрится (у меня так, это 800М под кэш получается)
на современных компах обычно 8-32Гб озу - тут уже 20% выглядят глупо, как ты говоришь
решение тут простое - граммотно зарепортить это дело (похожий пример legacy, который был положительно разрешён - это net.core.somaxconn ещё год назад был 128 и тоже смотрелся глупо)

anonymous
()

метапрог купил себе ssd? поздравляю.

слушай, вся эта эпопея с генерацией сишки. я тут посмотрел на Ch который Си интерпретатор. там прям на сайте история успеха с LabVIEW – компонента написана на Ch которая запускается из LabVIEW и рисует графики.

думается мне, эдак можно и саму сишку генерировать.

то есть: если бы ты взял для раскрутки тот же самый Ch который платный, ну или примерный его аналог бесплатный : язык Pike, Cint из ROOT, ещё была пара реализаций, будешь смеяться, на питоне (то есть: интерпретатор Си включая парсер написан на питоне).

то мог бы свой метадиаграммер с кластером метапарадигм на самом себе уже бы давным-давно написать.

да, вот ещё, во славу Одина: – язык Odin

компилируется через LLVM, есть SDL в пакетах, интеграция с сишкой.

ну чёго же ещё надо, а? возми себе нечто подобное да допиши же уже наконец свой проект – невозбранно, достигнув желаемого. во славу Одина.

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

граммотно зарепортить это дело

На уровне ядра обсуждали сто раз. Позиция Линуса - ставьте себе сами 48МБ для грязи.

Limiting the amount of dirty memory to 100MB/200MB (for "start
background writing" and "wait synchronously" respectively) even if you
happen to have 16GB of memory sounds like a good idea. Sure, it might
make some benchmarks a bit slower, but it will at least avoid the
"wait forever" symptom. And if you really have a very studly IO
subsystem, the fact that it starts writing out earlier won't really be
a problem.

https://lwn.net/Articles/572933/

Если проблема не решается в ядре винильном, то могла бы решаться на уровне десктоп-ориентированных дистрибутивов. По-видимому, нужно репортить дистроделам, а не в ядро.

Если проблему не решают дистроделы, значит проблемы нет. В противном случае покажите мне ссылку на этот баг в багтрекере Федоры.

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

На уровне ядра обсуждали сто раз. Позиция Линуса - ставьте себе сами 48МБ для грязи.

Вот:

Yeah, I think we default to a 10% "dirty background memory" (and
allows up to 20% dirty), so on your 16GB machine, we allow up to 1.6GB
of dirty memory for writeout before we even start writing, and twice
that before we start *waiting* for it.

On 32-bit x86, we only count the memory in the low 1GB (really
actually up to about 890MB), so "10% dirty" really means just about
90MB of buffering (and a "hard limit" of ~180MB of dirty).

And that "up to 3.2GB of dirty memory" is just crazy. Our defaults
come from the old days of less memory (and perhaps servers that don't
much care), and the fact that x86-32 ends up having much lower limits
even if you end up having more memory.

You can easily tune it:

    echo $((16*1024*1024)) > /proc/sys/vm/dirty_background_bytes
    echo $((48*1024*1024)) > /proc/sys/vm/dirty_bytes

or similar. But you're right, we need to make the defaults much saner.

https://lore.kernel.org/linux-mm/CA+55aFxj81TRhe1+FJWqER7VVH_z_Sk0+hwtHvniA0ATsF_eKw@mail.gmail.com/

Но дефолты much saner так и не стали.

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

на современных компах обычно 8-32Гб озу - тут уже 20% выглядят глупо, как ты говоришь

Это не выглядит глупо, это и есть глупо. Решить проблему можно было хотя бы на уровне поставляемого sysctl.conf дистрибутивом. Поразительно, что косяк известен и имеет простое решение, но из года в год приносит тонну проблем пользователям.

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

Репортил ли баг в трекер своего дистра?

Лол. На моей памяти, этой проблемой заваливали форумы и багтрекеры дистрибутивов лет 15.

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

Нужно не оставлять попытки. Вот у федоры были тормоза при нехватке памяти - сосредоточились и практически решили проблему: https://pagure.io/fedora-workstation/issue/98 - добавили earlyoom, uresourced, своп перевели на zram.

Может таки стоит снова попробовать в 2022 решить проблему 12309?

anonymous
()
Ответ на: комментарий от altwazar

багтрекеры дистрибутивов лет 15

Тогда и проблема имела другой масштаб, проблема тогда действительно была другой и получила решение в ядре 4.10:

Интегрированы патчи с улучшенной реализацией механизма фонового сброса данных на накопитель, решающие проблемы с подвисаниями во время копирования данных на медленный USB-накопитель. На системах с большим объёмом ОЗУ и медленными устройствами ввода/вывода переносимые на накопитель данные буферизируются в кэше обратной записи и копирование завершается в фоне. Ранее, операции сброса кэша обратной записи приводили к существенному снижению отзывчивости интерфейса приложений, подобных Firefox, вплоть до невозможности нормальной работы в течение нескольких минут. Например, выполнение "dd if=/dev/zero of=foo bs=1M count=10k" или копирование большого файла на USB-накопитель не давало запустить браузер или любое крупное приложение пока оставался не сброшен кэш обратной записи. 

https://www.opennet.ru/opennews/art.shtml?num=46035

После этого 12309 обрел другую, более мягкую форму.

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

После этого 12309 обрел другую, более мягкую форму.

Вместо полностью зависшей системы теперь просто заикается видео и всё тормозит. Dirty_ratio по прежнему 10%, у пользователей по прежнему бомбит при попытке записать что-нибудь на флешку. Еще не было такого года, чтобы на эту проблему кто-нибудь не пожаловался. Когда можно было просто добавить вменяемые значения в конфиг минта/манжары.

altwazar ★★★★
()

BTW, сколько у вас памяти? Сколько памяти было не занято при начале копирования? Есть ли своп, какова его конфигурация и объем? своп на том же SSD или на ZRAM?

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

anonymous
()

и да, в этом треде хотелось бы услышать оправдания 12309-диссидентов, таких как @intelfx и @post-factum

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

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

Не ТС, но проблема знакомая.

Из последнего что помню: ядро 5.4 или 5.11. Памяти 32 Гб, во время фризов гигабайт 16 свободно. По ощущениям, чем больше памяти на машине, тем жестче проявляется проблема.

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

Может таки стоит снова попробовать в 2022 решить проблему 12309?

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

pinus_nigra
()
Ответ на: комментарий от anonymous

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

Это только один из возможных сценариев. Куда как более популярен другой:

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

Легко воспроизводится на хроме, который при старте вычитывает тонны устаревших кэшей и прочего говна из профиля пользователя. Запускаем чтение в /dev/null какого-нибудь ремуска блюрея в цикле и пытаемся запустить хром «на холодную». Наслаждаемся, идём заваривать чаёк. «На горячую» повеселее, но всё равно хреново.

Свободной памяти можно иметь хоть петабайты.

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

Запускаем чтение в /dev/null какого-нибудь ремуска блюрея в цикле и пытаемся запустить хром «на холодную».

Это совсем не то. Просто притормаживания при интенсивном чтении с системного диска - это почти ок и не проявляется на ссд и тем более те имеет отношения к 12309. Это даже не вешает гуй.

anonymous
()
Ответ на: комментарий от altwazar

Из последнего что помню: ядро 5.4 или 5.11. Памяти 32 Гб, во время фризов гигабайт 16 свободно. По ощущениям, чем больше памяти на машине, тем жестче проявляется проблема.

Сейчас сможете это воспроизвести?

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

Просто притормаживания Это даже не вешает гуй.

Экран приложения не реагирует на события ввода и не обновляется. Иногда до секунд. Если это - «не вешает гуй», то у нас разные понимания завешенного гуя.

LamerOk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.