Рабочий процесс создания музыки в Linux без ядра с малой задержкой

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

[root@connect ~]# touch result.txt; while true; do ping  -c 1 -w 2 192.168.56.11 || echo “`date` ping faild” >> result.txt; sleep 1; done
1
02.05.2017, 01:58
1 ответ

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

Ядро low-latencyпозволит обрабатывать прерывания и короткие задачи с меньшей задержкой. В Ubuntu используются не настоящие исправления ядра в реальном времени, а так называемая PREEMPTконфигурация. Идея состоит в том, что без поддержки PREEMPT, как только ядро ​​​​начнет выполнять какой-либо системный вызов, он не будет прерван, даже если аппаратный запрос придет в (, например. MIDI-команда ). С помощью PREEMPTсистемный вызов будет прерван, если это необходимо.

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

Функции ядра, необходимые для того, чтобы сделать это -вытеснение возможным, вызывают некоторые накладные расходы, (возможно, 0 -2% )от общего использования ЦП, и по этой причине эти функции не включены в универсальном ядре. Кроме того, упреждение -легче вызывает некоторые еще -неизвестные программные ошибки в ядре. Это связано с тем, что системные вызовы могут быть прерваны, а неправильно написанный код ядра может случайно работать только тогда, когда этот код никогда не прерывался (, например. он не получает блокировки памяти для некоторой общей структуры, которая не может быть фактически разделена, если системный вызов не прерван, но общая структура может быть изменена несколькими ядрами ЦП одновременно, если системный вызов прерван ).

Я не знаю о текущей ситуации с драйверами NVIDIA, но, например, драйверы ядра VirtualBox раньше имели серьезные проблемы с ядрами с низкой -задержкой из-за множества ошибок в этих драйверах.В настоящее время драйверы ядра VirtualBox работают намного лучше с ядром low-latency— я не видел никаких проблем за пару лет.

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

У меня есть дешевый микрофон, подключенный через USB, и я использую звуковую карту, встроенную в материнскую плату, для вывода звука, и этого достаточно, чтобы получить задержку менее 10 мс между записью звука с микрофона и воспроизведением звуковой картой после прохождения звука через полный стек pulseaudio. С лучшим оборудованием вы сможете получить задержку менее 2 мс, особенно с JACK.

TL;DR:низкая -задержка Ядро должно уменьшить вашу задержку для всех действий, но это немного увеличит использование ЦП. А без ядра low-latencyмаксимальная задержка для входящих данных зависит от максимальной задержки системных вызовов всей системы . Если вы не будете осторожны с фоновыми процессами, вы получите пропуск звука или случайную задержку поведения MIDI. С ядром low-latencyфоновые задания не имеют большого значения, пока у вас не закончится оперативная память. Если вы не занимаетесь высокопроизводительными -вычислениями (HPC )или майнингом криптовалюты -, вам обычно требуется меньшая задержка по сравнению с максимальной пропускной способностью ЦП для всего, поэтому единственная причина не использовать ядро ​​с низкой -задержкой должна быть плохие драйверы устройств.

Если у вас возникают проблемы с пропуском звука или задержкой с ядром с малой -задержкой, я рекомендую протестировать драйверы графического процессора с открытым исходным кодом (драйверы Nouveau для графических процессоров NVIDIA ), и если проблема исчезнет, ​​вы нашел проблему.

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

И проверьте часы памяти;Ядро с низкой задержкой -может вызвать более резкое энергопотребление для вашей материнской платы, и если ваша материнская плата или блок питания недостаточно хороши, попытка запустить очень высокие тактовые частоты памяти может вызвать ошибки памяти, которые вызовут всевозможные случайные нестабильности. Попробуйте запустить mprimeв режиме стресс-теста, используя не менее 50% вашей оперативной памяти в фоновом режиме при выполнении других задач -, если он обнаружит какие-либо ошибки, ваша оперативная память работает неправильно, и вам не следует запускать -с низкой задержкой. ни общее ядро, если вам нужна стабильная система. Универсальное ядро ​​может быть менее требовательным к оборудованию, и вы увидите меньше ошибок из-за неисправной памяти, но будьте уверены, что рано или поздно это вызовет проблемы даже с универсальным ядром.

1
05.09.2021, 11:40

Теги

Похожие вопросы