LINUX.ORG.RU

Баг 12309


0

1

Как вы думаете, какова техническая причина?

★★★★★

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

Ну а че, просто пусть люди выскажут что слышали. Как прогресс на этом фронте? Как залатать костылем?

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

мне помогло

vm.dirty_background_bytes = 2097152
vm.dirty_bytes = 2097152
sergej ★★★★★
()
Ответ на: комментарий от vertexua

Как прогресс на этом фронте? Как залатать костылем?

У половины это не проявляеться, другой половине потребовался pf-sources, у третьей половины - карма ...

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

а как же в других ОС?

В других ОС хорошая программная архитектура, которой этот технический аспект по барабану.

iZEN ★★★★★
()

У меня последнее время на амд-десктопе и интел-ноутбуке очень жестко временами подвисает все. Наверное, 12309?

Покупка 4Гб памяти немного улучшила ситуацию.

note173 ★★★★★
()

Во времена, когда десктоп надолго задумывался из-за 12309, приходили идеи как это можно было бы исправить.

Моя идея не является инструкцией как всё сделать хорошо, а лишь «как надо было правильно делать ядро». Суть её такова: чем меньше байт записывается за операцию, тем выше у неё должен быть приоритет. То есть, если мы копируем 100ГБ файл, то у него IO-приоритет должен быть близкий к idle. Стоит какой-нибудь программе записать 10 байт, как этой операции установится максимальный приоритет и она выполнится тут же, приостановив запись 100 ГБ.

Обоснование:

1) Если файл копируется 1 час, то ничего плохого, что он скопируется на несколько минут дольше.

2) Если файл копируется 1 секунду, то даже промедление на несколько секунд будет заметно.

Поэтому любые мелкие дисковые операции должны вытеснять более продолжительные.

Где я не прав и почему так не сделали в ядре?

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

Это называется earliest deadline first scheduling. BFS реализует разновидность этого алгоритма для планирования задач, что даёт существенный прирост отзывчивости, по сравнению с CFS. Думаю, ты прав, планировщик ввода-вывода с таким алгоритмом улучшил бы ситуацию.

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

Нет, именно кэширование записи. А переупорядочиванием сейчас вообще NCQ занимается. И это еще как противоречит.

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

Если для каждой операции известен deadline, мы можем планировать ввод-вывод с учетом переупорядочивания операций, пока вписываемся в deadline-ы. Думай.

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

Я не имел ввиду sync. Я имел ввиду, что есть очередь запросов на запись. Обычно операции добавляются в конец очереди и выполняются по порядку. Но если мы хотим записать 10 байт, то это эта операция добавляется в самое начало очереди, нарушая порядок.

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

Если для каждой операции известен deadline

Ключевое слово «известен». А когда он бывает известен на уровне ядра? Ну записал я BMPHeader и подготавливаю картинку туманности M31 в разрешении дофига*дофига, откуда ядру знать, что за записью десятков байт через пару секунд пойдет запись десятков мегабайт в этот же файл?

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

Посмотри, как BFS устроен. Мы можем назначать операциям виртуальные deadline-ы на основании поведения программы. Плюс к этому, на deadline влияет значение nice.

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

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

redgremlin ★★★★★
()

Не верил всем, что есть 12309 . Но однажды столкнулся, потом поставил другое ядро и снова: «А разве 12309 существует?»

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

Я говорил про очередь сброса кеша на диск.

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

BFS никакого отношения к проблеме 12309 не имеет.

geekless ★★
()

Причина в современном железе у разработчиков ядра.
У меня на одной машинке с 8Gb RAM 12309 тоже не проявляется.
Посадить бы их всех на какие-нибудь P4/1Gb - быстро бы починили... :)

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

Прописал в sysctl.conf:

vm.overcommit_memory = 2
vm.dirty_background_bytes = 2097152
vm.dirty_bytes = 2097152
Сделал /etc/init.d/sysctl restart — работает.
А после ребута:
$ cat /proc/sys/vm/{overcommit_memory,dirty_bytes,dirty_background_bytes}
2
0
0
$ eselect rc list | grep sysctl
  sysctl                    boot
Странно... Что-то трогает эти параметры уже после sysctl?

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

Техническая причина в интеграции контроллёра памяти в ядро процессора.

Интересно, отчего же это он тогда на Core 2 проявлялся вовсю?

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

Техническая причина в интеграции контроллёра памяти в ядро процессора.

феерический бред

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

Что-то трогает эти параметры уже после sysctl?

Вероятно. Что-то дистроспецифичное.

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

Я подозреваю, что дело - только в чипсете.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от redgremlin

Есть разные машинки - 512Mb, 1Gb, 2Gb, везде 12309 нету. Как включить?

Напиши в багтрекер, что у тебя не включается.

Я тоже хочу увидеть, и у меня тоже без него - наверное, Linux бракованный.

.

А вообще, это больше элемент пропаганды.

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

А вообще, это больше элемент пропаганды.

Отнюдь нет. Я вообще сторонник Linux и сую его куда надо и не надо, так что очернять его специально не буду. Однако признаю, что на моём декстопе 12309 ЕСТЬ. Чтобы его увидеть надо скопировать файл в несколько ГБ.

В то же время у двух знакомых (у одного 6 ГБ оперативки, у другого ноут с SSD) 12309 НЕТ.

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

Захешировать 10Гб по^W мультиков про Винни-Пуха rtorrent-ом.
Законпелять chromium/virtualbox.
На моей P4/2Gb это гарантированно вызывает 12309.

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

Захешировать 10Гб по^W мультиков про Винни-Пуха rtorrent-ом.

Хоть сто. Отзывчивость не теряется.

Законпелять chromium/virtualbox

С make -j1 даже не замечу. С рекомендованным make -j3 (число_ядер+1) определенная неспешность появляется, но 100% загрузка процессора к 12309 отношения не имеет.

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

С рекомендованным make -j3 (число_ядер+1) определенная неспешность появляется

Это лечится при помощи BFS и verynice.

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

Хоть сто. Отзывчивость не теряется.

Реквестирую рецепт.

С make -j1 даже не замечу.

У меня тоже MAKEOPTS="-j1".
В процессе сборки virtualbox в какой-то момент времени cc и as в сумме начинают отхавывать ~1.8Gb памяти. В этот момент даже в консольке не залогиниться - вылетает по таймауту.

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

В процессе сборки virtualbox в какой-то момент времени cc и as в сумме начинают отхавывать ~1.8Gb памяти. В этот момент даже в консольке не залогиниться - вылетает по таймауту.

ОЗУ сколько в системе? Своп есть?

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

Это лечится при помощи BFS и verynice.

Найс не помогает:
PORTAGE_NICENESS=15
PORTAGE_IONICE_COMMAND=«ionice -c 3 -p \${PID}»

А от BFS вроде бы нет толку на одноядерных CPU.

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

Найс не помогает:

И не поможет на CFS. CFS игнорирует приоритеты.

А от BFS вроде бы нет толку на одноядерных CPU.

А разработчик BFS об этой шокирующей новости знает?

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

А разработчик BFS об этой шокирующей новости знает?

Наверное знает, одноядерные железки практически вымерли уже.

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