LINUX.ORG.RU

Сообщения kirill_rrr

 

Некромантия, эксперименты и немного странного.

Галерея — Скриншоты(не подтверждено)

От сбежавшего арендатора мне достался трофейный ноубтук, которому теоретически пора бы на свалку чисто по состоянию корпуса... Но это не наш путь, тем более что так получилось, что у него самый быстрый в многопотоке процессор из того что у меня в наличии, к тому же всё это в сумме весьма энергоэффективно - 9-22Вт.

Железо: Какой то крайне бюджетный Леново, AMD A4-7210 (4 ядра, 1-2,2Ггц, 28нм), гибридная графика радеоны R3+R5, которые работают весьма неоднозначно и даже на винде могут включаться или не включаться в зависимости от версии драйвера. Однопоток медленней моего А6 (2 ядра, 1,4-2,9ГГц, 32нм), многопоток быстрее, видеокарты сливаются от 2 раз до почти паритета. Память 1 канал, но частота 1600 против 800Мгц! 1 планка, 4Гб из которой доступно только 3,2, причём 300Мб куда то растворилось - видеопамяти всего 512М.

А дальше я начал странное: сата-ссд на 128Гб был изъят, пригодится где нибудь в другом месте. Вместо диска использована юсб3-флешка на 32Гб. Т.к. портов всего 2, был присобачен дешёвый хаб на 4 порта.

Вместо дистрибутива выбран Арч. Тестировать так тестировать, к тому же надо на чём то посмотреть свежий софт и этот ваш вайланд. SDDM, КДЕ6,3/вайланд, XFCE4.20/Х11. КДЕ-Х11 и ХФЦЕ-вайланд не запускаются, ну и хрен с ними.

По ДЕ:
КДЕ красивый, крайне неудобный в настройке, из за чего не особо то удобный в работе. По крайней мере не нашёл ничего такого, что было бы хуже кде5. Пока не нашёл, но это я ещё до ткм оформления толком не добрался. Тратит 1Гб оперативки, и главный (скорее всего именно вайландо-) косяк - крайне высокая чувствительность к i/o. Вся плазма, Квин да и окна постоянно фризят и подвисают при малейшем обращении к диску. Без быстрого ССД с КДЕ/вайланд лучше не работать. Причём то же самое я мог сказать про гном/вайланд на другом ноуте с сата-ссд. А нефиг было объединять в одном процессе графический сервер с композитором и с половиной ДЕ. Ещё Kwin не даёт произвольно менять размеры окон если они были прилеплены к углу.
XFCE весит 0,5Гб, намного быстрее и отзывчивей, хотя по сравнению с 4.8-4.10 он мне не нравится дизайном, мелкими нюансами, gtk3 и составом виджетов. В теории паритет возможностей вроде как достигнут, но не то, практически всё немного но хуже, беднее, недоделаней. Разумеется в качестве основного сеанса я остановился на xfce/Х11 - он просто на голову лучше по отзывчивости.

По звуку: тут по дефолту пайпварь с эмуляцией пульса. Выпиливать пока не пробовал, хотя работой не доволен. 2-5% нагрузки на цпу, весьма много подлагиваний при свопинге, которых кмк быть не должно. При использовании протокола пульсы периодически есть сваливание на щелчки. Причём сеанс ХФЦЕ то соглашается работать с пайпварью, то блокирует вывод на неё и работает только с пульсом, а регулятор громеости на панели не работает ни с тем, ни с другим и требует Гстрёмер. Ну да хрен со звуком, этой штуке только по вебу прыгать и бенчи гонять.

И разумеется я не мог не прогнать тест на свопинг. Ядро 6.12-лтс, по дефолту zswap/zsmalloc/zstd. Физический своп прямо на флешке, работает ожидаемо ультрамедленно. Тюнинг минимальный, расширил пул до 40%, page-cluster выставил на 32 страницы, swappiness 150. Меня в первую очередь интересовала работа обновлённого zsmalloc, а сравнивать его надо с z3fold (которого хотят выпилить из ядра и в арче вообще не собрали. Так что мне пришлось пройти квест по сборке ядра с ним). Тестовый набор - Вивальди с двумя пакетами вкладок 30+53 шт.

Результаты удивительные - со свопом на флешке вместо тормозов я получаю регулярную зомбификацию одного из ключевых процессов Вивальди на уровне использования оперативки в 185-200%, где то примерно в тот момент, когда должны начаться настоящие тормоза. Темне менее, между пулами есть разница:

zbud     тормоза 125%, сильные тормоза 160%, зомби 185%
z3fold   тормоза 120%, сильные тормоза 180%, зомби 200%   ~80 вкладок
zsmaloc  лёгкие тормоза 115%, тормоза 150%, зомби 185%    ~70 вкладок
------------
ssd/z3fold     лёгкие тормоза 115%, тормоза 190%, сильные тормоза и резкий свопинг 215%
ssd/zsmalloc   до 230% без сильных тормозов, дальше прекратил тест
Итого: новый zsmalloc чуть менее предсказуем, но явно более отзывчив. Выявить эффект мёртвых данных при переполнении пула из за зомбификации не удалось, не понятно, то ли его там нет, то ли я до него не дошёл.

 , , ,

kirill_rrr
()

Всплывающие уведомления в kde6

Форум — Desktop

Кде 6.3, вайланд, Арч Линукс.

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

Кде6/вайланд умеет всплывающие уведомления, или придётся забыть про них?

 kde6,

kirill_rrr
()

Не применяются переменные при входе через su

Форум — General

В данный момент меня интересует переменная $EDITOR прописанная в /etc/environment, необходимая (хз с каких пор) для работы mc. Нормальное применение для обычного юзера и для root в консоли, но при входе как root через su -. Единственное что нагуглил - опция -m, которая не совместима с опцией -, без которой вероятно также полезут проблемы.

Как вернуть нормальное поведение su с применением переменных и без дополнительных портянок при логине?

 , ,

kirill_rrr
()

С кем я там срался полгода назад по поводу dpkg vs pacman?

Форум — Talks

liksys, с тобой точно срался!

Так вот, просидев 2 суток за установкой и настройкой Арча заявляю - система максимально примитивная, со Слакой не знаком, на ум приходит только Void. Лучше бы я Генту разворачивал - там по крайней мере после десятка понятных команд ты получаешь готовую и работоспособную систему! И ещё у них документация на две головы подробней. И довольно мало тупой обезьяней работы по ручному созданию дефолтных конфигов на пустом месте.

И по поводу конкретно пакетного менеджера: возможно код там и чище, возможно скорость действителньо на порядок лучше, возможно даже все возможности dpgk в пакмане и поддерживаются... Но ПЦ, как же отстойно всё организовано! Вот реавльно, 2 дня, а мне до сих пор нужна справка чтобы не перепутать нелогичные комбинации ключей на базовые действия. И никакого тебе aptitude или чего то сопоставимого, хотя сам пакетник как будто создан для создания сторонних пакетников! Короче пакман это для скриптов и роботов, а dpkg это для людей.

И самое главное - надёжность! Мог ли я предположить, что в официальном руководстве дебиана будет рекомендация сначала прочитать новости, убедиться что там не сказано о косяках обновления, требующих ручного разрешения, и что ещё крайне желательно перед обновлением сделать бэкап... И далее длинный список неочевидных опций, которые нельзя использовать потому что иначе пакман самосломается или убьёт систему. Нет уж, пусть лучше dpkg хоть в 100 раз дольше в последовательном режиме выполняет все эти проверки, перепроверки и защиты от дурака.

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

 , , ,

kirill_rrr
()

Raspberry Pi 1B + официальный 7" тачскрин 800х480

Форум — Desktop

Пытаюсь запустить данную комбинацию, но фиг там. С малинками 3 и 4 монитор работает как надо, с первой не запускается. В теории достаточно прописать в конфиг опции ignore_lcd=0 и display_auto_detect=1, ну и смириться с тем что тачскрин не будет работать без отдельного юсб-кабеля. На практике перепробовал все найденные и интернете рецепты (прямо скажем не густо) и перечитал доступные опции конфига - ничего относящегося к делу и работающего не нашёл.

Предполагаю что дело всё таки в комбинации параметров config.txt, какая нибудь неочевидная недокментированная зависимость. Кто нибудь запускал этот экран с платой 1-й версии? Есть рабочий конфиг?

 ,

kirill_rrr
()

TTS в онтопике.

Форум — General

Задался вопросом, а можно ли в 2025 году взять кусок книги/статьи/новости и попросить какую нибудь софтину зачитать его. Вроде бы уже пора...

На андроиде вопрос через жопу, но решается. А вот на линуксе вроде как по умолчанию рекомендуется Festival, но он же фактически неработоспособен! Говорить то вроде как умеет, но что это за идиотская политика вываливаться на каждом непонятном символе или английском слове или вообще знаке препинания? Быстрее самом начитать текст голосом чем отформатировать его в читаемую Фестивалем форму.

Есть какие то утилиты, способные переваривать произвольные новосные статьи с кучей англицизмов и аббривиатур и длинные книги? Желательно чтобы можно было запустить на Распберри Пи 4гб без видеокарты.

 

kirill_rrr
()

Перезапуск kwin по таймеру.

Форум — Desktop

Raspberry Pi 4, lxqt, kwin_x11. Разумеетсся глюкодром, но более-менее функциональный и довольно удобный. Отказываться от Kwin пока не собираюсь.

Проблема: утечка разделяемой памяти в kwin_x11 порядка 300-500Мб в сутки. Решение: ну перезапустить раз в сутки и не париться. Желательно автоматом.

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

Если воспользоваться cron'ом, то композитор просто не увидит нужного сеанса.

Если использовать xterm -e (или скрипт с xterm -e, или любой другой эмулятор терминала) - увидит, перезапустится, но при закрытии терминала все потомки будут убиты несмотря на то, что при ручной подаче команды с обыным '&' этого не происходит.

Если откреплять композитор с помощью nohup например из скрипта - всё как бы работает, но kwin запускается с дефолтными настройками (нахрен он в таком режиме нужен?), причём только если запускать его скриптом из хрона (вручную всё ОК).

Есть идеи как организовать автоматический перезапуск внутри сеанса без потери настроек? Крайне желательно чтобы это было лучше самодельного фонового скрипта типа while do; sleep 12h; kwin_x11 --replace; done. Желательно чтобы это был cron или хрен с ним, системд, а не какой нибудь дополнительный висящий процесс.

 , , , ,

kirill_rrr
()

Как ускорить и распаралелить qemu на arm?

Форум — Desktop

Учусь запускать старые игрушки в виртуалке на распбери Пи4-ноуте. Крайне желательно в кроссплатформенном и универсальном варианте одна-игра-на-виртуалку, чтобы таскать её по любым компам. Т.е. qemu, других с той же универсальностью не знаю. Целевые игры: homm 2/3, Pharaon, Planscape: Tourment.

Принципиально проблема решаема, люди игрались на смартфонах с ядрами вплоть до cortex-a53. А у меня -а72, но винХР устанавлвается по 3 суток с зависаними из за слишком низкой производительности. dosbox тоже удручает до «почти можно играть в doom».

Очевидно что то не так со сборкой/настройками qemu. Пока что не смог нащупать ничего принципиально более быстрого, всё в преелах ~20% от типа цпу.

Эмуляция нескольких ядер идёт в 1 поток и роняет производитеьность ещё сильнее. Хотя с 2015 года в теории в qemu входит многопоточный MTTCG, но он отказывается включаться для х86 виртулок. Хотя есть андроидовые обёртки над qemu, которые ~5 лет назад запускали на смартфонах винду и задействовали для этого несколько ядер.

 ,

kirill_rrr
()

Проблемы с повышением приоритета процесса.

Форум — General

В процессе разборок с найсом ( Когда nice не работает и процессы НЕвежливые ) выяснилось, что по какой то причине невозможно поднять приоритет процесса выше, чем он был при запуске. Циферки nice уходят в минус, процесс начинает порождать высокоприоритетных потомков, но сам не получает положенной ему доли ЦПУ.

Кто нибудь знает в чём дело и как починить? Желательно без участия cgroups.

 

kirill_rrr
()

Когда nice не работает и процессы НЕвежливые

Статьи — Desktop

Отключать ли автогруппировку процессов чтобы позволить приоритетам nice работать глобально?

( читать дальше... )

 ,

kirill_rrr
()

xfce 2021 года

Галерея — Скриншоты

Откопал и решил выложить скриншот, оставшийся от экспериментальной установки Void Linux на ноутбук в 2021 году. Тогда я ещё пытался остаться на XFCE/xfwm, файерфокс всё ещё был тортом, а вивальди не был. Привести систему к более-менее приятному внешнему виду мне удалось, а вот накидать всякого стороннего софта типа виртуалок, игрушек и тимвьювера — нет.

Конкретно скриншот — закладка на будущее в процессе прослушивания интернет-радио чтобы найти и добавить в колекцию новые песни.

 ,

kirill_rrr
()

Слишком много free памяти

Форум — Desktop

Raspberry Pi 4 4Gb, Raspbian, ядро 6.1

Наконец то нагрузил его более-менее серьёзно и заметил странную вещь: система очень упорно держит абсурдно много памяти свободной.

rrr@raspberrypi:/media/files $ free -m
               total        used        free      shared  buff/cache   available
Mem:            3794        1969         671         788        1152         431
Swap:          38145        2898       35247

Тюнинг памяти:

echo z3fold > /sys/module/zswap/parameters/zpool
echo 25 > /sys/module/zswap/parameters/max_pool_percent
echo 1 > /sys/module/zswap/parameters/enabled
echo 64 > /proc/sys/vm/page-cluster
echo 100 > /proc/sys/vm/swappiness
echo 500 > /proc/sys/vm/watermark_scale_factor
echo 32768 > /proc/sys/vm/min_free_kbytes

Также подключена tmpfs в /tmp и туда вынесены временные файлы пользователя, как минимум кеш браузера, миниатюр и qml.

Насколько я знаю, free-память это не всякие кеши и буферы, не tmpfs, не zswap. До сих пр я не встречался с ситуациями, когда +-15-20% памяти простаивает в холостую во время дефицита - кроме одного раза, когда cgrops_mem позволял пользователю использовать в сеансе не более 50%, но даже там память использовалась под дисковый кеш. При открытии новых вкладок браузера система удерживает свободными от 480М до 800М. При создании крупного файла в /tmp показатель free кратковременно снижается, но затем память откачивается до того же уровня.

Ядро 6.1 перешло на cgrops v2, и я вроде как не вижу там управления памятью (для v1 я его всегда отключал), но возможно я просто не знаю куда смотреть. Но вообще по ощущениям похоже на какой то лимит со стороны cgrops.

Что это мжет быть? Свопинг конечно мягкий, но он чувствуется и кажется могло бы работать ещё лучше на эти самые 300-500М.

 , ,

kirill_rrr
()

Отключить UAS для всех юсб-усройств.

Форум — General

Воюю с неприятным багом ЮСБ3 на Raspberry Pi 4.

Суть в том, что при активном i/o всё падает и помогает только ребут. Планы А и Б уже не помогли, план С состоит в том, чтобы отклчить UAS и это вроде как длжо помочь. Проблема - отключать его надо пераметром ядра при загрузке, причём для каждого конкретного устройства по его идентификаторам.

Нагуглил предложение вписать в строку параметров ядра usbcore.quirks=usb-storage:uas, но это не помогло (в смысле UAS не отключен).

Кто нибудь в курсе как это работает и отключается?

 , uas,

kirill_rrr
()

Возвращаем кнопку Turbo

Галерея — Скриншоты

Наконец организовал охлаждение Пи4, прокачал производительность, настроил управление температурой.

Во-первых, конечно, дырки в днище для притока воздуха снизу. Это дало падение температуры на 5 градусов в пассивном режиме. Надо было сразу думать, а не ждать, пока одноплатник ИК-излучением прогреет 3 слоя фанеры вниз.

Во-вторых, вентилятор на 12В, запитанный от 5В. Слышимо, но не противно.

Ну и в-третьих — cpufreqd с простым и эффективным конфигом:

rrr@raspberrypi:~/.komic $ cat /etc/cpufreqd.conf
# this is a comment
# see CPUFREQD.CONF(5) manpage for a complete reference
#
# Note: ondemand/conservative Profiles are disabled because
#       they are not available on many platforms.

[General]
pidfile=/var/run/cpufreqd.pid
poll_interval=2
verbosity=4
#enable_remote=1
#remote_group=root
[/General]


[Profile]
name=P600
minfreq=600000
maxfreq=600000
policy=ondemand
[/Profile]

[Profile]
name=P800
minfreq=600000
maxfreq=800000
policy=ondemand
[/Profile]

[Profile]
name=P1000
minfreq=600000
maxfreq=1000000
policy=ondemand
[/Profile]

[Profile]
name=P1200
minfreq=600000
maxfreq=1200000
policy=ondemand
[/Profile]

##

[Rule]
name=P600
sensor=temp1:66-100
profile=P600
[/Rule]
 
[Rule]
name=P800
sensor=temp1:61-65
profile=P800
[/Rule]

[Rule]
name=P1000
sensor=temp1:56-60
profile=P1000
[/Rule]

[Rule]
name=P1200
sensor=temp1:0-55
profile=P1200
[/Rule]

На скринах:

  • Нижний левый - пассивный, низкая нагрузка.
  • Верхний правый - пассивный, полная нагрузка.
  • Нижний правый - полная нагрузка с полным охлаждением.

Обратите внимание, как медленно одноплатник нагревается и охлаждается. Одна строка бенчмарка 7zip идёт полторы-две минуты. Общее потребление (ваттметром на розетке) в простое 9,8-10,5Вт, под максимальной нагрузкой с охлаждением 12,2-13Вт. Из них ~2,5Вт уходит на e-inc экран когда он включен, 0,7Вт теряется на заряднике и ещё сколько то на понижающем блоке 5В. Вентилятор в пределах 0,2Вт.

Интересный результат: несмотря на двухкратную разницу частот, попугаи 7-зипа растут всего на 41,5%. Кажется, у Пи4 крайне нелинейная производительность цпу (дооптимизировались, блин). Для сравнения у Пи3 одноядерная и многоядерная производительность меняется практически линейно с частотой. Возможно я сам частично виноват — я снизил максимальную частоту gpu с 500 до 400Мгц, от неё же назначается частота системной шины и оперативки, этим выигрывается 0,5Вт энергии. Позже проверю, насколько это влияет.

Кто нибудь знает многоядерный бенч цпу с выдачей результатов в реальном времени?

 , , ,

kirill_rrr
()

Alt Linux и aptitude

Форум — General

Пробую на вкус Alt на Raspberry Pi 4. Есть много странностей, но начать надо с пакетника.

Synaptic не умеет продвинутого разрешения зависимостей и чистки мусора, сидеть на чистом apt-get не интересно, но есть же лучший ПМ, aptitude!

Который вроде бы всё может, но почему то отказывается реагировать на большую часть команд, например g (применить изменения), или оно же, но через меню Ctrl+T. По сути не проходит ни одна операция с пакетами!

 , ,

kirill_rrr
()

Продолжаю модернизацию

Галерея — Рабочие места

Думаю, настало время похвалиться удвоенным набором мониторов на моём столе и попозориться камерой смартфона.

Raspberry Pi 4 в новом переносном корпусе занял своё место на столе, получил второй монитор в своё распоряжение (верхний слева) и начал кое что делать — а именно сёрфить.

Верхний справа всё ещё подключен к Pi3, его же мышь и клавиатура стоят в готовности. Но как-то так плавно получилось, что последнюю неделю я хожу туда по VNC.

Пока что переезд софта и задач (и главное, скриптов!) в начальной стадии. Пока или дистрибутив не поменяю, или ядро распбиана не пересоберу, потом можно будет нормально переразметить и зашифровать диск ну и далее по списку... Так что сшить 3 фотки пришлось в гимпе, запущенном на пи3, с доступом по VNC. И самое удивительное в том, что это юзабельно!

З.Ы. KRDC рулит, remmina даже близко не валяется по стабильности и удобству.

З.З.Ы. Четвёртый монитор на боковой стене — от видеонаблюдения. Оно внизу в тумбочке.

 ,

kirill_rrr
()

Настройка времени и косяки systemd

Форум — Admin

Тихо и незаметно подкрался ещё один косяк. С тех пор, когда я последний раз настраивал дуалбут, управление временем было передано в systemd, а эти обладатели мудрых фасеточных глаз по какой то причине решили, что при синхронизации времени через ntp не требуется переводить аппаратные часы. Так я узнал, что Local time и RTC time это отдельные понятия и всегда были.

За возвращение нормального поведения в теории должна отвечать timedatectl set-local-rtc 0 с опцией --adjust-system-clock, только это не работает. Другой полезной информации найти не удалось - яндекс упорно предлагает интрукции по настройке systemd-tymesyncd.

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

 , ,

kirill_rrr
()

Корпус для Raspberry Pi 4

Галерея — Рабочие места

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

Итак:

  • 4 гига, 4 ядра, 64 бита, распбиан 11.
  • Дисплей onyx Mira, e-ink, 2200x1650 (но из-за рамок, наползающих на рабочую область экрана и странной геометрии пикселей лучше использовать 1280х960. Если повезёт — заставлю его работать в масштабе ровно 50%), 38Гц. Короче факинг эту вашу плавность и 100% sRGB.
  • Второй порт свободен и ждёт монитора из ремонта.
  • Диски: 64Гб карта kingston повышенной скорости и ssd 120Гб, 5 лет отработавший свопом на Пи3. Что странно, даже при ехт4 на карте памяти и без тюнинга нет признаков бага 12309 (в отличиt от тройки).
  • 4 порта юсб3 с аппаратными выключателями. Но без выделенной линии питания это плохо.
  • Звук — noname-колонки, которые после пилы и саморезов начинают дребезжать на половине мощности.
  • Полноразмерная клавиатура.
  • Полноразмерная мышка.
  • БП 5В*5А
  • Батарея 27,6 Втч с вольтметром и портом для подключения всего что под руку подвернётся из диапазона 11...14,5В. Ожидаемое время автономной работы 2 часа.
  • Ручка для переноски и колёсики не планируются.

 ,

kirill_rrr
()

Raspberry Pi 4 и Wi-Fi

Форум — Linux-hardware

Запаковал таки Пи4 в самодельный корпус вместе с переферией и питанием, при запуске понял что не предусмотрел 2 маленькие детальки: во первых заблокировал доступ к эзернет-порту (это другой вопрос, не трогаем), а во вторых - сигнал wifi в горизонтальной плоскости напрочь забит то ли помехами, то ли окружающими устройствами.

Теореически сигнал роутера ловится если поставить корпус на бок перпендикулярно направлению на роутер, вот только корпус в форм-факторе ноутбука и это абсолютно нерабочее положение. Повернуть или вынести саму плату тоже не вариант.

Также вспомнился случай, когда я прикручивал Пи4 к официальному 7" тачскрину от Распберри - эффект был аналогичный, wifi забит наглухо - энергоэффективной мобильной торрентокачалки не получилось. Кажется терять связь в любой непонятной ситуации у этой пародии на антену хроническое. А ведь txpower заявлен на уровне 30дбм!

Есть 2 очевидных способа решения проблемы: внешний usb-wifi с антеной (будет планом-Б, у меня уже заняты все 4 порта) и инструкция по модификации https://www.youtube.com/watch?v=MTwWnZG8wUY которая кажется мне довольно трудно реализуемой и рискованной. Других инструкций по модификации антены Пи4 я не встретил (Для Пи3 есть сразу 2 варианта, причём они проще).

Собственно вопросы: Есть ли какие нибудь ещё варианты и чем грозит для платы неудачная попытка пайки по этому варианту? Сгорит всё, или просто останусь с и так нерабочим wifi-модулем?

 , , модификации

kirill_rrr
()

bash, ffmpeg, какой-то трындец и непонятки

Форум — Multimedia

Как то давно я написал себе скрипт-конвертер мультимедийных файлов, всё как положено, многопоточный с контролем потоков, с рекурсивным сбором из папки, и давно им пользуюсь иногда внося изменения. Он отлично работает на RPi3 с дебиан8 и ffmpeg 3.4. Но вот я решил ускорить кодирование сериала на нескольких машинах, отдал один сезон RPi3 а второй попробовал кодировать на других компах с помощью самбы. И на них начался трешак и падения в части многопоточности - 1-2 файла отправлялись на кодирование, медленная работа из за того, что ffmpeg срёт ошибками (вывод подавлен, но он это делает и вешает себе главный поток), и обрыв собственно скрипта-распределителя потоков.

Вот скрипт. Общий принцип: чистка мусора, подготовка рабочей папки, затем создание скрипта-модуля convert.bash, который принимает данные о кодируемом файле и дёргает собственно ffmpeg. В коде convert.bash захардкожена строка команды. Затем собираерся рекурсивный список файлов в папке и для него начинает крутиться цикл while read со встроенными замедлителями потоков через файлы блокировки. При запуске convert.bash файл-блокировка создаётся, а затем convert.bash его удаляет когда ffmpeg закончит работу. Обратите внимание: в нормальном состоянии вывод ffmpeg подавлен через > /dev/null 2>&1, но я его отключал для диагностики - на поведение и на глюк не влияет.

#!/bin/bash
CORE="1" # Создавать потоков

if [ "$1" = "-h" ]; then
echo 'Использование: paket_convert.bash <каталог для поиска файлов> <каталог для помещения результатов>'
echo 'Задействовано потоков: '"$CORE"
exit 0
fi

rm -R /tmp/ffmpeg/
rm /tmp/convert.bash
mkdir /tmp/ffmpeg/
id='1' # Начальный индекс файла
cd "$1"
mkdir "$2"
ALL=$( find -P ./ -type f | wc -l )

	# Создание второстепенного скрипта /tmp/convert.bash
	# $1 - id файла. $2 - путь к папке, куда надо положить результат. Файлы блокировок расположены в /tmp/ffmpeg/, имя = id, содержится строка с отн. адресом файла на перекодирование.
echo 'ALL=$( find -P ./ -type f | wc -l )' >> /tmp/convert.bash
echo 'FILE=$( cat /tmp/ffmpeg/$1 )' >> /tmp/convert.bash
echo 'DIR=${FILE%/*}' >> /tmp/convert.bash
echo 'LONG_DIR=${#DIR}+1' >> /tmp/convert.bash
echo 'NAME=${FILE:LONG_DIR}' >> /tmp/convert.bash
echo 'FILENAME=${NAME%.*}' >> /tmp/convert.bash

#
# здесь всякие варианты строк ffmpeg на все случаи жизни
#
echo 'ffmpeg -i "$FILE" -map 0:0 -map 0:1 -s 634x360 -acodec copy -vcodec libx264 -profile high -level 42 -qmax 22 "$2"/"$FILENAME".mp4 > /dev/null 2>&1' >> /tmp/convert.bash


echo 'rm /tmp/ffmpeg/"$1"' >> /tmp/convert.bash
echo 'echo $1 из $ALL завершено' >> /tmp/convert.bash
chmod +x /tmp/convert.bash
	# Конец создания второстепенного скрипта

# Начинаю крутить цикл
		find -P ./ -type f | while read FILE
		do
while [ $( ls -1A /tmp/ffmpeg | wc -l ) -ge "$CORE" ]; do
	sleep 20
done

echo "$FILE" >> /tmp/ffmpeg/"$id"
/tmp/convert.bash "$id" "$2" &
echo $id'/'$ALL" кодируется ""$FILE"
let id++
sleep 2
		done

# жду завершения задач
while [ $( ls -1A /tmp/ffmpeg | wc -l ) -gt "0" ]; do
	sleep 3
done

Собственно что произошло на компах с 10 и 11 дебианом и ffmpeg 4.1 и ещё каким то: в выводе ffmpeg начинают появляться ошибки о неправильных фреймах, битых данных, между ними проскакивают сообщения вида «кусок_имени_реально_существующего_файла не найден» ну и собственно куски имён. Через примерно минуту (2-3 цикла ожидания) основной скрипт наворачивается и перестаёт корректно считать потоки - запускает копии sleep, но не запускает convert.bash. После переборки определённого числа обрубков имён - заканчивает список и ждёт завершения задач.

Метод научного тыка показал, что в этом процессе ключевым является наличие в convert.bash строки ffmpeg -i "$FILE" {какие нибудь операции} "$2"/"$FILENAME".mp4. Самба/реальная ФС - не важно. 1 или много потоков - не важно. Аудио или видео - не важно. Кодек copy или реальное перекодирование - не важно. Наличие спецсимволов или пробелов в именах и путях - не важно.
В отрыве от ffmpeg все компоненты отрабатывают корректно, списки полные, имена целые, файлы-блокировки ставятся и удаляются, потоки считаются верно. Если оставить только ffmpeg -i "$FILE" без выходного файла - косяк не проявляется. Если вместо ffmpeg файлы дёргаются другими программами, например ffplay или vlc, или cp "$FILE" "$2"/"$FILENAME".mp4 - косяк не проявляется.

И самое интересное: изолирование ffmpeg в convert.bash в отдельном терминал командой xterm -e ffmpeg -i "$FILE" -acodec copy "$2"/"$FILENAME".mp4 вроде бы решает проблему! Но это же какой то хаос и трындец. было бы неплохо понять WTF тут происходит.

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

 , ,

kirill_rrr
()

RSS подписка на новые темы