LINUX.ORG.RU

Зачем такие огромные буфера с пшшшшшаудио?

 , ,


0

2

У креведки в последнее время внезапно прыгает потребление памяти. А потом так же внезапно чистится. Даже когда жирносайтов не открыто.

Полез в /proc/<pid>/maps и вижу:

7f0407c00000-7f040bc00000 rw-s 00000000 00:05 367145936                  /memfd:pulseaudio (deleted)
7f040bc00000-7f040fc00000 rw-s 00000000 00:05 78911569                   /memfd:pulseaudio (deleted)
7f040fc00000-7f0413c00000 rw-s 00000000 00:05 367144927                  /memfd:pulseaudio (deleted)
7f0413c00000-7f0417c00000 rw-s 00000000 00:05 367144927                  /memfd:pulseaudio (deleted)
7f0417c00000-7f041bc00000 rw-s 00000000 00:05 366976687                  /memfd:pulseaudio (deleted)
7f041bc00000-7f041fc00000 rw-s 00000000 00:05 78911569                   /memfd:pulseaudio (deleted)
7f041fc00000-7f0423c00000 rw-s 00000000 00:05 366976678                  /memfd:pulseaudio (deleted)
7f0423c00000-7f0427c00000 rw-s 00000000 00:05 366976678                  /memfd:pulseaudio (deleted)
Зачем? Она даже звуков не играет, и в pavucontrol не отображается. По ходу, эти здоровые буфера попросту не успевают вовремя рассасываться и копятся.

UPD: я лох, пятая колонка — не объём памяти вовсе, а id дескриптора. Выходит, объём надо по первой мерять...

UPD2: напердолил скриптец, кому надо:

var fs = require('fs')

fs.readFileSync('/dev/stdin').toString().split('\n').forEach(function(line) {
    var columns = line.split(' ')
    var addresses = columns[0]
    addresses = addresses.split('-').map(address => parseInt('0x' + address))
    var amount = addresses[1] - addresses[0]
    columns.shift()
    console.log(amount + ' ' + columns.join(' '))
})

А это вообще НЁХ

7f04b25ac000-7f04b25ff000 rw-s 00000000 00:05 597590074                  /SYSV00000000 (deleted)
Куча таких, мегабайт по 600. Судя по ipcs — с иксами.

Оно совсем озверело, столько SHM выделять? Виртуальной хоть? У меня даже не HiDPI, на хрена там буфера больше пары мегабайт?

Moondancer ()

Ты бы лучше спросил зачем там буферы больше пары килобайт. А потом удивляются почему такие задержки и не реалтайм. В то время как в венде просто работает, что дефолтная подсистема, что wasapi, даже на картах из 2003 (которые древнее легаси уже лет 10 как минимум).

anonymous ()

Что ты имеешь против огромных буфферов пшшшшш-аудио? Они ведь не 0 байт на руте тебе устроили. Сидят себе в ОЗУ, никого не трогают.

А потом так же внезапно чистится
memory leak

Щитобря?

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

Чо, перекидывания звука от конкретных процессов между карточками мало? Впрочем, JACK для этого сгодится тоже, кабы его только софт умел, окромя звукарского...

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

на руте

Ви таки не поверите.

root@localhost:~# ls -l /.pulse*
-rw------- 1 root root  256 мая  4  2013 /.pulse-cookie

/.pulse:
итого 0
lrwxrwxrwx 1 root root 23 окт 10  2013 fe2628dfa15a1d3557a0c5585181a85c-runtime -> /tmp/pulse-PKdhtXMmr18n

Щитобря?

А толку мне с того, что пока оно почистится, уже тхрешинг наступает?

Moondancer ()
Ответ на: комментарий от Moondancer
less /usr/share/doc/alsa-plugins/README-jack

другое дело, что есть особенные, которые кроме как в пульсу больше ничего не могут

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

а ещё ты забыл про 150% громкости. это сарказм.

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

которые кроме как в пульсу больше ничего не могут

Но ведь для них apulse есть.

150% громкости

Ну это mpv могёт :D

Moondancer ()

seamonkey
Браузер, почтовый клиент, IRC-клиент, редактор HTML

Так всё таки, это браузер, это IRC-client или это редактор HTML?

robus ★★★★ ()

я догадывался что пожалуй всё созданное Поцтерингом отвратительно, но настолько?

anonymous ()

А у тебя это какие-то конкретные проблемы вызывает, или ты просто специально нашёл страшные и непонятные цифры и немедленно доложил об этом на ЛОР?

Deleted ()

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

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

А ты поясни ему что это за циферки он и бояться перестанет. Или ты зашёл показать только как ты потного любишь?

deep-purple ★★★★★ ()
Ответ на: комментарий от robus

Что же это за рут такой?

Тебе мало, что ли?

в тмпфс

Ну вотще, а если я спасти оттуда захочу что-то при внезапном шатдауне? И оперативки жалко.

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

Пофиг, я ещё тындырбырд отдельно держу, там и почта, и RSS, и даже IRC :3 Когда-то даже браузер был, но сломался, пилю новый взамен.

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

Ты первое предложение читал?

Читал. Я не знаю что такое креведка. И не знаю чем ты измерял потребление памяти этой креведкой. Ты просто показал кусок «/proc/<pid>/maps», который сам по себе ничего не означает.

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

Я не знаю что такое креведка

А это важно? Важно, что она жрёт.

И не знаю чем ты измерял потребление памяти этой креведкой

top.

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

А это важно?

Да.

Важно, что она жрёт.

Какие ваши доказательства?

top.

Там по умолчанию три столбца про память. В какой из них ты смотрел и что там видел?

А вообще такое отлаживается при помощи valgrind/massif и подобных инструметов.

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

Да.

Поцчему?

Какие ваши доказательства?

Усы, лапы и хвост.

по умолчанию

Посрать, я смотрю на RES и USED.

что там видел

Потребление внезапно прыгает на сотни мегабайт, а то и больше гига, а через несколько минут так же внезапно рассасывается. От такой наглости тхрешинг начинается, когда свободной оперативки меньше, и несколько минут превращаются в десятки; когда LA за 20-ку зашкаливает, прибиваю креведку нафиг, чтоб ещё надольше систему не положило.

valgrind

Он на хэллоувротах простыню высирает, а что будет с целой креведки? И толку с валгринда, когда там полпамяти JS-рантайм занимает? Мне неохото ковыряться в интёрналсах SpiderMonkey, знаешь ли.

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

А остальные брынькают на допотопных дуделках из дерева и металла, как диды, и записывают на кассетный магнитофон, ведь DAW для пидоров, понятно. А то и вообще не записывают, а только лайвы дают, а записывальщиков курощают средствами копирастии — удобно же.

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

Потребление внезапно прыгает на сотни мегабайт, а то и больше гига, а через несколько минут так же внезапно рассасывается. От такой наглости тхрешинг начинается, когда свободной оперативки меньше, и несколько минут превращаются в десятки; когда LA за 20-ку зашкаливает, прибиваю креведку нафиг, чтоб ещё надольше систему не положило.

Ищи значит разработчиков своей креветки и отправляй им багрепорт.

Он на хэллоувротах простыню высирает, а что будет с целой креведки? И толку с валгринда, когда там полпамяти JS-рантайм занимает?

Massif же, ну. Мне за тебя гуглить ещё?

Мне неохото ковыряться в интёрналсах SpiderMonkey, знаешь ли.

Ты перепутал ЛОР с багтрекером своей креветки.

Если изначальная цель - флуд, то пости такое сразу в толксы в следующий раз.

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

Ищи значит разработчиков своей креветки и отправляй им багрепорт

Разработчики молчат. И вообще не факт, что дело в самой креведке. И им не до этого, надо за ломающими изменениями от мозиллы бежать, а тут ещё всякие кривокопытые травоядные лезут.

Мне за тебя гуглить ещё?

Хочешь гуглозонд в отхожее отверстие запихивать — пожалуйста; я к такому без особой надобности не прибегаю.

Ты перепутал ЛОР с багтрекером своей креветки

Вопросам по связке софта, а не по конкретному софту, не место в багтрекерах конкретного софта. Для них форумы и нужны.

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

Так, короче...

Буферы pulseaudio, которые ты показал нам в первом посте, создаются по одному на каждое подключение. По идее, подключение должно быть ровно одно. Но если клиентский код кривой, либо не может в pulseaudio совсем (и использует pa через плагин для юзерспейсной части alsa), то новые подключения могут создаваться на каждый чих. Но, это хоть и криво, но не смертельно. Под эти буферы не выделяется физическая память если в них никто ничего не начинает писать. А ты говоришь, что звук у тебя не выводится, следовательно буферы не используются и память не занимают.

Кстати, у тебя не джента случаем? Может ты где-то забыл включить поддержку pulseaudio при сборке? Или может какой-нибудь проприетарный флешплеер стоит, который на каждый однопиксельный баннер открывает коннект к pulseaudio через alsa?

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

И варианта тут только два: либо ты осиливаешь инструменты и пытаешься сам разобраться с этим, либо пинаешь разработчиков seamonkey.

Deleted ()

UPD: я лох, пятая колонка — не объём памяти вовсе, а id дескриптора. Выходит, объём надо по первой мерять...

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

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

Это всё от того, что ты читать не умеешь.

Please note that anonymous memory mapped is not necessarily memory actually used.

...

Those file sizes only reflect allocated address space, not actual memory.

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

А потом ВНЕЗАПНО объедается.

Это ни чем не отличается от любой другой программы, которая может ВНЕЗАПНО сделать malloc(10 гигабайт) и сразу же все 10 гигабайт засрать рандомом.

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

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

Действительно, если смотреть по первой колонке то получается целых 512 МБ этот пышпыш сжирает!
Для шаренной видеопамяти это было бы ещё позволительно, но для звука?

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

Действительно, если смотреть по первой колонке то получается целых 512 МБ этот пышпыш сжирает! Для шаренной видеопамяти это было бы ещё позволительно, но для звука?

Мне это напоминает историю с https://www.linuxatemyram.com/, когда не очень умные люди находили страшные цифры, не понимали что эти цифры значат, пугались, и бежали строчить посты на линуксовые форумы.

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

которая может ВНЕЗАПНО сделать malloc(10 гигабайт)

Ну так поэтому у меня оверкоммит, zram и thrash-protect, спасу от этих обжор нет. Вон недавно внезапно kitty начал течь, ему нажатие несуществующего клавиша не нравится, видите ли — на каждое генерировал новую композё-таблицу, а старую не чистил.

Если есть конкретные доказательства

Доказательства накапываются; даже если дело не в пшшаудио, обжирание однозначно имеет место быть.

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

Но 512 МБ это реально много! А если у тебя оперативки 4 ГБ всего?

Там 512 MiB адресного пространства занято, а не 512 MiB оперативной памяти.

Ещё раз: ядро не выделяет страницы физической памяти, пока процесс не начнёт писать данные в смапленный кусок адресного пространства.

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

Тебе ж сказано, что речь о ситуации, когда процесс таки начал писать данные и внезапно засрал весь буфер. Поцчему ты ищешь под кроватью свидетелей VRAM? Если, например, один процесс завис, а другой нет, то один наполнит буфер полностью и будет ждать, пока другой развиснет. То же самое, если второй вообще отпал (по SIGKILL, например).

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

Тебе ж сказано, что речь о ситуации, когда процесс таки начал писать данные и внезапно засрал весь буфер.

...

Если, например, один процесс завис, а другой нет, то один наполнит буфер полностью и будет ждать, пока другой развиснет. То же самое, если второй вообще отпал (по SIGKILL, например).

У тебя есть конкретные доказательства того, что всё происходит именно так?

Или может ты расскажешь как именно это воспроизвести, чтобы я сам мог убедиться в твоей правоте?

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

Напиши два хеллоуврота на сишечке, которые гоняют рандомные данные через memfd между собой. И шли приёмнику SIGSTOP или SIGKILL, меряй память, собирай статистику. Ток сам пиши, мне впадлу :P

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

Тебе мало, что ли?

Очень мало. Для комфортного пользования этой ОС в 2019 рут должен быть минимум 8 Гб (4 Гб, если хомяк на отдельном разделе). А не то, что у тебя имеется, когда 2 крошечных файлика, общим размером меньше 1 кб, устраивают проблему «0 байт на руте».

Ну вотще, а если я спасти оттуда захочу что-то при внезапном шатдауне?

IPS? А вообще зачем ты в /tmp хранишь важную инфу?

И оперативки жалко.

Вот в чём смысл экономить раму, если не экономишь видеокарту (иксы, по сравнению с Wayland, дают лишнюю нагрузку на GPU, в результате ниже FPS), не экономишь проц (JS движок и алгоритмы рендеринга у лисы сильно хуже, чем у Chromium, даже если не учитывать vaapi). У тебя билд Threadripper + Vega RX64 + 4 Gb RAM, что-ли?

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

2 крошечных файлика, общим размером меньше 1 кб, устраивают проблему «0 байт на руте»

А, ты про исчерпание. Ну, это тоже хронически уже несколько лет. При том, что

root@localhost:~# df /
Файловая система 1K-блоков Использовано Доступно Использовано% Cмонтировано в
/dev/sda6         51465852     48232596   612280           99% /

IPS?

От паник ведра и прочих крашей не спасёт. У меня так-то ноутбук с живой батареей.

А вообще зачем ты в /tmp хранишь важную инфу?

Примерно затем, зачем хомячки юзают Корзину. Сам вгетю в специальную папочку всякое потенциально ненужное, плюс к тому, туда браузеры, например, сохраняют в /tmp/ файлы, которые передают напрямую программам. Мне чо, выгонять оттуда всех, как всякие фанатики делают девственно чистый от дотфайлов /home? И так симлинкаю на другой раздел всякое; например, шашлык, срёт туда зачем-то на старте образом на 700 МБ, а zip — VMS* любого размера (а места под это всё обычно нету, ибо см. п. 1, у меня всё на руте).

иксы, по сравнению с Wayland, дают лишнюю нагрузку на GPU

Тёплое с мягким сравниваешь, это разные вещи; иксы — это программа, а вяленый — это протокол; нельзя взять и запустить исполняемый файл вяленда, а под ним другие графические программы. Ты б ещё с фреймбуфером сравнивал.

ниже FPS

Задротопроблемы.

JS движок и алгоритмы рендеринга у лисы сильно хуже, чем у Chromium, даже если не учитывать vaapi

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

У тебя билд Threadripper + Vega RX64 + 4 Gb RAM, что-ли?

Ніт, просто проц у меня обычно не перегружен, хоть и всратый, а вот оперативка переедена хронически, и второй раз расширять её я не хочу, уж лучше всю тачку апгрейднуть, тут и винт уже поношен, и в целом железо, а Kasch визжит, что тут ещё и USB-хаб частый клиент у него, хотя УМВР вроде.

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

Напиши два хеллоуврота на сишечке, которые гоняют рандомные данные через memfd между собой. И шли приёмнику SIGSTOP или SIGKILL, меряй память, собирай статистику. Ток сам пиши, мне впадлу :P

И какую связь имеют гипотетический хеллоуворлд с искусственно созданным багом и реально работающие seamonkey и pulseaudio?

Ты случайно не из тех, кто дома в туалет ходит в каске и бронежилете? Ну, чисто на случай, если в туалете ВНЕЗАПНО окажутся террористы.

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