[{"data":1,"prerenderedAt":42},["ShallowReactive",2],{"note-hosting-paths-compared-ca":3},{"slug":4,"order":5,"title":6,"summary":7,"measured":8,"topic":9,"toc":10,"html":41},"hosting-paths-compared",140,"\"Camins d'allotjament comparats: mod-host, omx-clap-host, l'adaptador LV2 i dins del procés\"","Els mateixos plugins costen el mateix per plugin en tots els camins d'allotjament, amb un microsegon de diferència i cap camí no afegeix latència. Les diferències a tot el graf vénen dels estats de repòs de la CPU i del nombre de nodes, no de com un amfitrió fa córrer un plugin; el que separa els camins és la memòria, l'arrencada i el que s'emporta una fallada.","Una màquina de compilació Intel Core Ultra 9 285K compartida amb altres feines, Fedora 44, nucli 7.2, PipeWire 1.6.9 amb el controlador fictici, 48 i 96 kHz de 64 a 512 mostres, tres execucions de 60 s, octubre del 2026; omx-plugins 0.7.0 i plugins LV2 i CLAP de sèrie.","core",[11,14,17,20,23,26,29,32,35,38],{"id":12,"title":13},"els-camins","Els camins",{"id":15,"title":16},"que-s-ha-mesurat","Què s'ha mesurat",{"id":18,"title":19},"tot-el-graf","Tot el graf",{"id":21,"title":22},"per-plugin","Per plugin",{"id":24,"title":25},"arrencada-i-memoria","Arrencada i memòria",{"id":27,"title":28},"una-fallada","Una fallada",{"id":30,"title":31},"que-diuen-les-xifres","Què diuen les xifres",{"id":33,"title":34},"que-mesura-la-xifra-de-tot-el-graf","Què mesura la xifra de tot el graf",{"id":36,"title":37},"limits","Límits",{"id":39,"title":40},"que-en-va-sortir","Què en va sortir","\u003Ch2 id=\"els-camins\">Els camins\u003C\u002Fh2>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>camí\u003C\u002Fth>\n\u003Cth>què fa córrer el plugin\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>mod-host\u003C\u002Ftd>\n\u003Ctd>mod-host 0.10.6 (el paquet de la distribució), la versió LV2, un client JACK per plugin\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>omx-clap-host\u003C\u002Ftd>\n\u003Ctd>la versió CLAP, un client JACK per plugin\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>l'adaptador\u003C\u002Ftd>\n\u003Ctd>el mateix omx-clap-host, la versió LV2 a través de libomx-clap-lv2\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>CLAP dins del procés\u003C\u002Ftd>\n\u003Ctd>la versió CLAP dins de la crida de procés d'un filtre PipeWire natiu, a través de libomx-clap-core\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>LV2 dins del procés\u003C\u002Ftd>\n\u003Ctd>la versió LV2 de la mateixa manera, oberta a través de libomx-clap-lv2\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>Aleshores omx-clap-host no podia carregar tot sol un plugin LV2, de manera que el camí de l'adaptador carregava els plugins\nLV2 a través d'un \u003Ccode>.clap\u003C\u002Fcode> fet només per al banc de proves que enllaça libomx-clap-lv2: mesura el codi de l'adaptador dins\nd'un omx-clap-host sense modificar. Els camins dins del procés fan les crides que fa el nivell dins del procés de la consola\n(obrir, activar, publicar, fer córrer al fil de dades de PipeWire, amb la limitació, la revisió de valors no finits i\nl'escalfament del nucli activats), però donen a cada plugin un node de filtre propi, on la consola fa córrer els plugins\nd'un carril en línia dins del seu node. Se'n donen dues xifres: el temps del node, comparable amb el dels nodes dels altres\ncamins i el temps en línia, només la crida de procés, que és el que un plugin afegeix al cicle d'una consola.\u003C\u002Fp>\n\u003Cp>Els plugins: comp, delay, deesser, eq8 i reverb d'omx-plugins en totes dues versions; un compressor estèreo LSP i Dragonfly\nRoom com a CLAP; ZamCompX2, caps PlateX2 i caps CompressX2 com a LV2. Per tant, els camins CLAP fan córrer set plugins i els\nLV2 vuit i la comparació entre formats és la dels cinc bessons omx. Tots els plugins d'un camí es munten en un sol\namfitrió, cadascun alimentat amb el mateix soroll blanc estèreo a -20 dBFS i enregistrat; un pas porta un impuls unitari\nquatre vegades per segon, contra un enllaç directe que porta el mateix impuls.\u003C\u002Fp>\n\u003Ch2 id=\"que-s-ha-mesurat\">Què s'ha mesurat\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>Temps de node per cicle\u003C\u002Fstrong>: el temps d'actiu a acabat de pw-profiler per al node de cada plugin, cada cicle de la\nfinestra: el plugin més el que hi fa el seu amfitrió al voltant.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Temps en línia\u003C\u002Fstrong> (només dins del procés): la crida de procés cronometrada al fil de dades.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Final del cicle\u003C\u002Fstrong>: el temps del controlador des del despertar fins que acaba l'últim node.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Excessos\u003C\u002Fstrong>: cicles que acaben passat el seu període; \u003Cstrong>tardans\u003C\u002Fstrong>: cicles de la sonda que arriben més d'1,5 períodes\ndesprés de l'anterior.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Latència afegida\u003C\u002Fstrong>: l'impuls a través del pas contra l'enllaç directe, en mostres.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Memòria\u003C\u002Fstrong>: la memòria resident de l'amfitrió, buit i amb tots els plugins muntats.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Arrencada\u003C\u002Fstrong>: de llançar l'amfitrió a tenir-lo a punt; d'\u003Ccode>add\u003C\u002Fcode> a la seva resposta; d'\u003Ccode>add\u003C\u002Fcode> al primer so a l'enregistrador.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Fallada\u003C\u002Fstrong>: l'amfitrió mort mentre fa córrer un plugin i després reiniciat; i als camins CLAP, un plugin de prova que\navorta al costat d'un de sa al mateix amfitrió.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"tot-el-graf\">Tot el graf\u003C\u002Fh2>\n\u003Cp>Mediana de tres execucions de 60 s. mod-host, l'adaptador i LV2 dins del procés fan córrer els mateixos vuit plugins;\nomx-clap-host i CLAP dins del procés els mateixos set.\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>freqüència\u003C\u002Fth>\n\u003Cth>quàntum\u003C\u002Fth>\n\u003Cth>camí\u003C\u002Fth>\n\u003Cth>plugins\u003C\u002Fth>\n\u003Cth>final del cicle p50 µs\u003C\u002Fth>\n\u003Cth>final del cicle p99 µs\u003C\u002Fth>\n\u003Cth>excessos\u003C\u002Fth>\n\u003Cth>CPU de l'amfitrió %\u003C\u002Fth>\n\u003Cth>RSS MiB\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>48000\u003C\u002Ftd>\n\u003Ctd>128\u003C\u002Ftd>\n\u003Ctd>mod-host\u003C\u002Ftd>\n\u003Ctd>8\u003C\u002Ftd>\n\u003Ctd>250,2\u003C\u002Ftd>\n\u003Ctd>719,4\u003C\u002Ftd>\n\u003Ctd>3\u003C\u002Ftd>\n\u003Ctd>8,2\u003C\u002Ftd>\n\u003Ctd>40,0\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>48000\u003C\u002Ftd>\n\u003Ctd>128\u003C\u002Ftd>\n\u003Ctd>omx-clap-host\u003C\u002Ftd>\n\u003Ctd>7\u003C\u002Ftd>\n\u003Ctd>287,5\u003C\u002Ftd>\n\u003Ctd>759,9\u003C\u002Ftd>\n\u003Ctd>5\u003C\u002Ftd>\n\u003Ctd>9,1\u003C\u002Ftd>\n\u003Ctd>40,1\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>48000\u003C\u002Ftd>\n\u003Ctd>128\u003C\u002Ftd>\n\u003Ctd>adaptador\u003C\u002Ftd>\n\u003Ctd>8\u003C\u002Ftd>\n\u003Ctd>293,3\u003C\u002Ftd>\n\u003Ctd>772,7\u003C\u002Ftd>\n\u003Ctd>3\u003C\u002Ftd>\n\u003Ctd>10,0\u003C\u002Ftd>\n\u003Ctd>26,5\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>48000\u003C\u002Ftd>\n\u003Ctd>128\u003C\u002Ftd>\n\u003Ctd>CLAP dins del procés\u003C\u002Ftd>\n\u003Ctd>7\u003C\u002Ftd>\n\u003Ctd>337,5\u003C\u002Ftd>\n\u003Ctd>788,5\u003C\u002Ftd>\n\u003Ctd>2\u003C\u002Ftd>\n\u003Ctd>8,5\u003C\u002Ftd>\n\u003Ctd>38,3\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>48000\u003C\u002Ftd>\n\u003Ctd>128\u003C\u002Ftd>\n\u003Ctd>LV2 dins del procés\u003C\u002Ftd>\n\u003Ctd>8\u003C\u002Ftd>\n\u003Ctd>265,5\u003C\u002Ftd>\n\u003Ctd>692,5\u003C\u002Ftd>\n\u003Ctd>4\u003C\u002Ftd>\n\u003Ctd>7,9\u003C\u002Ftd>\n\u003Ctd>22,8\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>96000\u003C\u002Ftd>\n\u003Ctd>128\u003C\u002Ftd>\n\u003Ctd>mod-host\u003C\u002Ftd>\n\u003Ctd>8\u003C\u002Ftd>\n\u003Ctd>275,4\u003C\u002Ftd>\n\u003Ctd>748,1\u003C\u002Ftd>\n\u003Ctd>20\u003C\u002Ftd>\n\u003Ctd>23,7\u003C\u002Ftd>\n\u003Ctd>40,4\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>96000\u003C\u002Ftd>\n\u003Ctd>128\u003C\u002Ftd>\n\u003Ctd>omx-clap-host\u003C\u002Ftd>\n\u003Ctd>7\u003C\u002Ftd>\n\u003Ctd>447,0\u003C\u002Ftd>\n\u003Ctd>926,9\u003C\u002Ftd>\n\u003Ctd>230\u003C\u002Ftd>\n\u003Ctd>32,4\u003C\u002Ftd>\n\u003Ctd>40,3\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>96000\u003C\u002Ftd>\n\u003Ctd>128\u003C\u002Ftd>\n\u003Ctd>adaptador\u003C\u002Ftd>\n\u003Ctd>8\u003C\u002Ftd>\n\u003Ctd>403,0\u003C\u002Ftd>\n\u003Ctd>844,6\u003C\u002Ftd>\n\u003Ctd>17\u003C\u002Ftd>\n\u003Ctd>31,4\u003C\u002Ftd>\n\u003Ctd>26,7\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>96000\u003C\u002Ftd>\n\u003Ctd>128\u003C\u002Ftd>\n\u003Ctd>CLAP dins del procés\u003C\u002Ftd>\n\u003Ctd>7\u003C\u002Ftd>\n\u003Ctd>446,2\u003C\u002Ftd>\n\u003Ctd>915,4\u003C\u002Ftd>\n\u003Ctd>109\u003C\u002Ftd>\n\u003Ctd>35,4\u003C\u002Ftd>\n\u003Ctd>38,8\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>96000\u003C\u002Ftd>\n\u003Ctd>128\u003C\u002Ftd>\n\u003Ctd>LV2 dins del procés\u003C\u002Ftd>\n\u003Ctd>8\u003C\u002Ftd>\n\u003Ctd>436,9\u003C\u002Ftd>\n\u003Ctd>863,4\u003C\u002Ftd>\n\u003Ctd>18\u003C\u002Ftd>\n\u003Ctd>33,5\u003C\u002Ftd>\n\u003Ctd>22,9\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>A 96 kHz i 64 mostres tots els camins van tenir excessos en aquesta màquina amb aquests conjunts (98 mod-host, de 310 a 332\nl'adaptador i LV2 dins del procés); els excessos del conjunt CLAP a 96 kHz i 128 mostres segueixen els màxims de la reverb,\nd'1,3 a 1,5 ms contra un període d'1,33 ms.\u003C\u002Fp>\n\u003Ch2 id=\"per-plugin\">Per plugin\u003C\u002Fh2>\n\u003Cp>El temps propi del node per cicle, p50 \u002F p99 \u002F màxim, µs, 48 kHz i 128 mostres; dins del procés, el temps en línia:\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>plugin\u003C\u002Fth>\n\u003Cth>mod-host\u003C\u002Fth>\n\u003Cth>omx-clap-host\u003C\u002Fth>\n\u003Cth>adaptador\u003C\u002Fth>\n\u003Cth>CLAP dins del procés, en línia\u003C\u002Fth>\n\u003Cth>LV2 dins del procés, en línia\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>omx-comp\u003C\u002Ftd>\n\u003Ctd>3,6 \u002F 19,5 \u002F 46\u003C\u002Ftd>\n\u003Ctd>4,3 \u002F 29,3 \u002F 63\u003C\u002Ftd>\n\u003Ctd>5,1 \u002F 17,9 \u002F 52\u003C\u002Ftd>\n\u003Ctd>3,5 \u002F 15,7 \u002F 44\u003C\u002Ftd>\n\u003Ctd>4,2 \u002F 16,9 \u002F 59\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>omx-delay\u003C\u002Ftd>\n\u003Ctd>2,1 \u002F 9,2 \u002F 25\u003C\u002Ftd>\n\u003Ctd>2,1 \u002F 10,8 \u002F 44\u003C\u002Ftd>\n\u003Ctd>2,9 \u002F 13,6 \u002F 37\u003C\u002Ftd>\n\u003Ctd>2,0 \u002F 9,3 \u002F 52\u003C\u002Ftd>\n\u003Ctd>2,5 \u002F 10,4 \u002F 49\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>omx-deesser\u003C\u002Ftd>\n\u003Ctd>4,5 \u002F 22,9 \u002F 53\u003C\u002Ftd>\n\u003Ctd>4,5 \u002F 25,9 \u002F 54\u003C\u002Ftd>\n\u003Ctd>5,1 \u002F 29,5 \u002F 59\u003C\u002Ftd>\n\u003Ctd>4,5 \u002F 22,6 \u002F 46\u003C\u002Ftd>\n\u003Ctd>5,0 \u002F 20,9 \u002F 51\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>omx-eq8\u003C\u002Ftd>\n\u003Ctd>2,1 \u002F 10,1 \u002F 23\u003C\u002Ftd>\n\u003Ctd>1,9 \u002F 8,8 \u002F 34\u003C\u002Ftd>\n\u003Ctd>2,6 \u002F 12,1 \u002F 38\u003C\u002Ftd>\n\u003Ctd>1,8 \u002F 8,1 \u002F 24\u003C\u002Ftd>\n\u003Ctd>2,2 \u002F 9,9 \u002F 23\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>omx-reverb\u003C\u002Ftd>\n\u003Ctd>5,7 \u002F 28,9 \u002F 59\u003C\u002Ftd>\n\u003Ctd>5,9 \u002F 24,4 \u002F 55\u003C\u002Ftd>\n\u003Ctd>6,7 \u002F 32,6 \u002F 67\u003C\u002Ftd>\n\u003Ctd>5,5 \u002F 23,6 \u002F 69\u003C\u002Ftd>\n\u003Ctd>6,5 \u002F 23,9 \u002F 68\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>ZamCompX2\u003C\u002Ftd>\n\u003Ctd>3,9 \u002F 20,2 \u002F 46\u003C\u002Ftd>\n\u003Ctd>\u003C\u002Ftd>\n\u003Ctd>4,4 \u002F 22,2 \u002F 56\u003C\u002Ftd>\n\u003Ctd>\u003C\u002Ftd>\n\u003Ctd>3,9 \u002F 17,1 \u002F 46\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>caps PlateX2\u003C\u002Ftd>\n\u003Ctd>5,7 \u002F 29,1 \u002F 61\u003C\u002Ftd>\n\u003Ctd>\u003C\u002Ftd>\n\u003Ctd>6,3 \u002F 26,6 \u002F 93\u003C\u002Ftd>\n\u003Ctd>\u003C\u002Ftd>\n\u003Ctd>5,8 \u002F 23,4 \u002F 68\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>caps CompressX2\u003C\u002Ftd>\n\u003Ctd>9,8 \u002F 57,3 \u002F 118\u003C\u002Ftd>\n\u003Ctd>\u003C\u002Ftd>\n\u003Ctd>10,3 \u002F 58,0 \u002F 119\u003C\u002Ftd>\n\u003Ctd>\u003C\u002Ftd>\n\u003Ctd>9,9 \u002F 54,8 \u002F 115\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>compressor LSP\u003C\u002Ftd>\n\u003Ctd>\u003C\u002Ftd>\n\u003Ctd>6,6 \u002F 28,5 \u002F 67\u003C\u002Ftd>\n\u003Ctd>\u003C\u002Ftd>\n\u003Ctd>6,5 \u002F 25,8 \u002F 71\u003C\u002Ftd>\n\u003Ctd>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Dragonfly Room\u003C\u002Ftd>\n\u003Ctd>\u003C\u002Ftd>\n\u003Ctd>28,4 \u002F 140,0 \u002F 1462\u003C\u002Ftd>\n\u003Ctd>\u003C\u002Ftd>\n\u003Ctd>27,9 \u002F 128,4 \u002F 1448\u003C\u002Ftd>\n\u003Ctd>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch2 id=\"arrencada-i-memoria\">Arrencada i memòria\u003C\u002Fh2>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>camí\u003C\u002Fth>\n\u003Cth>p50 de node µs (tots els plugins i configuracions)\u003C\u002Fth>\n\u003Cth>p50 en línia µs\u003C\u002Fth>\n\u003Cth>\u003Ccode>add\u003C\u002Fcode> ms\u003C\u002Fth>\n\u003Cth>d'\u003Ccode>add\u003C\u002Fcode> al primer so ms\u003C\u002Fth>\n\u003Cth>amfitrió a punt ms\u003C\u002Fth>\n\u003Cth>RSS buit MiB\u003C\u002Fth>\n\u003Cth>RSS per plugin MiB\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>mod-host\u003C\u002Ftd>\n\u003Ctd>7,3\u003C\u002Ftd>\n\u003Ctd>\u003C\u002Ftd>\n\u003Ctd>4,2\u003C\u002Ftd>\n\u003Ctd>68,6\u003C\u002Ftd>\n\u003Ctd>24,4\u003C\u002Ftd>\n\u003Ctd>19,4\u003C\u002Ftd>\n\u003Ctd>2,31\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>omx-clap-host\u003C\u002Ftd>\n\u003Ctd>8,3\u003C\u002Ftd>\n\u003Ctd>\u003C\u002Ftd>\n\u003Ctd>4,5\u003C\u002Ftd>\n\u003Ctd>68,2\u003C\u002Ftd>\n\u003Ctd>13,5\u003C\u002Ftd>\n\u003Ctd>5,8\u003C\u002Ftd>\n\u003Ctd>4,30\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>adaptador\u003C\u002Ftd>\n\u003Ctd>7,5\u003C\u002Ftd>\n\u003Ctd>\u003C\u002Ftd>\n\u003Ctd>3,7\u003C\u002Ftd>\n\u003Ctd>67,2\u003C\u002Ftd>\n\u003Ctd>13,7\u003C\u002Ftd>\n\u003Ctd>5,8\u003C\u002Ftd>\n\u003Ctd>2,31\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>CLAP dins del procés\u003C\u002Ftd>\n\u003Ctd>13,5\u003C\u002Ftd>\n\u003Ctd>8,3\u003C\u002Ftd>\n\u003Ctd>13,2\u003C\u002Ftd>\n\u003Ctd>75,9\u003C\u002Ftd>\n\u003Ctd>2,6\u003C\u002Ftd>\n\u003Ctd>3,3\u003C\u002Ftd>\n\u003Ctd>4,41\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>LV2 dins del procés\u003C\u002Ftd>\n\u003Ctd>13,1\u003C\u002Ftd>\n\u003Ctd>8,4\u003C\u002Ftd>\n\u003Ctd>12,6\u003C\u002Ftd>\n\u003Ctd>74,9\u003C\u002Ftd>\n\u003Ctd>2,5\u003C\u002Ftd>\n\u003Ctd>3,3\u003C\u002Ftd>\n\u003Ctd>2,17\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch2 id=\"una-fallada\">Una fallada\u003C\u002Fh2>\n\u003Cp>A 48 kHz i 128 mostres, tres vegades per camí: un SIGKILL de l'amfitrió fa callar els seus plugins en 1 a 3 ms, el graf\ncontinua fent cicles (cap cicle tardà; el buit més llarg de la sonda és de 3,0 a 4,4 ms contra un període de 2,67 ms) i un\namfitrió reiniciat torna a sonar de 70 a 100 ms després. Un plugin que avorta s'endú el seu amfitrió de 150 a 175 ms\ndesprés de l'escriptura que ho provoca (l'avortament i el seu bolcat de memòria) i amb ell tots els altres plugins\nd'aquell amfitrió; el graf va sobreviure en tots dos camins CLAP. Dins del procés, el procés amfitrió és la consola: la\nmateixa fallada allà vol dir l'àudio de la consola perdut fins que el motor es reinicia.\u003C\u002Fp>\n\u003Ch2 id=\"que-diuen-les-xifres\">Què diuen les xifres\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>Un plugin costa el mateix en tots els camins.\u003C\u002Fstrong> Per al mateix plugin a la mateixa freqüència i quàntum, la mediana del\nnode a mod-host, omx-clap-host i l'adaptador són a prop d'1 µs les unes de les altres i del temps en línia dins del procés\n(omx-eq8: 2,1, 1,9, 2,6 i d'1,8 a 2,2 µs; caps CompressX2: 9,8, 10,3 i 9,9 µs). Les cues es mouen desenes de microsegons\nentre repeticions d'una mateixa configuració: és la màquina, no el camí.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>El node dins del procés del banc de proves costa de 2 a 5 µs més que els altres nodes\u003C\u002Fstrong>, mentre que el seu temps en\nlínia hi coincideix: el preu del filtre propi del banc de proves per plugin (quatre búfers de port, dues còpies) a més de\nl'etapa del nucli. Una consola que fa córrer el plugin en línia dins del seu carril paga la xifra en línia i cap node.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Cap camí no afegeix latència.\u003C\u002Fstrong> L'impuls a través del pas va arribar al mateix cicle en què va sortir en tots els camins,\nfreqüències i quàntums, cada impuls de cada execució. Un client JACK en un graf PipeWire es planifica de manera síncrona\ndins del cicle, de manera que un plugin de mod-host no costa cap quàntum de més.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Memòria\u003C\u002Fstrong>: amb els mateixos vuit plugins, 40 MiB resident per a mod-host (19 MiB abans de cap plugin: carrega tot el\nmón LV2), 26,5 MiB per a omx-clap-host amb l'adaptador, 22,8 MiB dins del procés. Uns 2,2 o 2,3 MiB per plugin LV2 en tots\ntres.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Arrencada\u003C\u002Fstrong>: un amfitrió és a punt en 2,5 ms dins del procés, 13,5 ms omx-clap-host, 24 ms mod-host.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"que-mesura-la-xifra-de-tot-el-graf\">Què mesura la xifra de tot el graf\u003C\u002Fh2>\n\u003Cp>Amb els mateixos vuit plugins LV2, mod-host va tenir el final del cicle més baix en totes les configuracions, tot i que els\nseus nodes costen el mateix que els dels altres. El mateix banc de proves a 96 kHz i 128 mostres, amb\n\u003Ccode>\u002Fdev\u002Fcpu_dma_latency\u003C\u002Fcode> retingut per refusar els estats de repòs de la CPU, mostra per què. Final del cicle p50, µs, d'una a\ntres execucions cadascun:\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>estats de repòs\u003C\u002Fth>\n\u003Cth>mod-host\u003C\u002Fth>\n\u003Cth>adaptador\u003C\u002Fth>\n\u003Cth>LV2 dins del procés\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>tots permesos (C1, C2, C3)\u003C\u002Ftd>\n\u003Ctd>265, 279\u003C\u002Ftd>\n\u003Ctd>380, 400, 412\u003C\u002Ftd>\n\u003Ctd>413\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>cpu_dma_latency\u003C\u002Fcode> 1000 µs: C3 refusat\u003C\u002Ftd>\n\u003Ctd>243, 244\u003C\u002Ftd>\n\u003Ctd>273, 333\u003C\u002Ftd>\n\u003Ctd>248, 322\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>cpu_dma_latency\u003C\u002Fcode> 10 µs: només C1\u003C\u002Ftd>\n\u003Ctd>80\u003C\u002Ftd>\n\u003Ctd>73\u003C\u002Ftd>\n\u003Ctd>95\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>cpu_dma_latency\u003C\u002Fcode> 0: cap\u003C\u002Ftd>\n\u003Ctd>26, 30\u003C\u002Ftd>\n\u003Ctd>23, 31\u003C\u002Ftd>\n\u003Ctd>24, 25\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cul>\n\u003Cli>\u003Cstrong>La major part de la xifra de tot el graf és la sortida dels estats de repòs.\u003C\u002Fstrong> Amb els estats de repòs permesos, la\nfont de la sonda desperta els nou nodes de plugin a uns 10 µs l'un de l'altre els primers quatre o cinc i la resta de 60\na 130 µs més tard: els seus nuclis eren a C2 o més avall. Sense cap estat permès es desperten a uns 1,1 µs l'un de\nl'altre i els camins són iguals.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>L'avantatge de mod-host són els seus dos clients sempre en marxa.\u003C\u002Fstrong> A més d'un client per plugin, mod-host fa córrer\nel seu propi client \u003Ccode>mod-host\u003C\u002Fcode> i \u003Ccode>mod-monitor\u003C\u002Fcode>, que es desperten a cada cicle i mantenen més nuclis fora del repòs\nprofund. Uns clients JACK desocupats afegits al camí de l'adaptador n'escurcen el cicle de la mateixa manera i amb sis a\ncada camí l'ordre desapareix.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Per tant, el que costa és el nombre de nodes, no l'amfitrió. Això és el que va portar a fer córrer una cadena en un sol\nclient JACK (vegeu \u003Ca href=\"\u002Fca\u002Fnotes\u002Fone-jack-client-for-a-chain\">Un sol client JACK per a una cadena\u003C\u002Fa>) i a la retenció dels estats\nde repòs (vegeu \u003Ca href=\"\u002Fca\u002Fnotes\u002Fcpu-idle-states-and-plugin-hosting\">Estats de repòs de la CPU i allotjament de plugins\u003C\u002Fa>).\u003C\u002Fp>\n\u003Ch2 id=\"limits\">Límits\u003C\u002Fh2>\n\u003Cp>La màquina era una màquina de compilació compartida amb una càrrega d'uns 3, amb el governador \u003Ccode>powersave\u003C\u002Fcode>, sense aïllament i\nsense fixar fils: les cues i les xifres de tot el graf en porten el soroll. El graf corria amb el controlador fictici de\nPipeWire en un contenidor; un controlador real es desperta d'una altra manera. Els plugins s'alimentaven amb soroll blanc; un\nplugin el cost del qual depèn de l'entrada donaria una altra lectura amb material musical. Tres plugins LV2 de sèrie que\nllavors l'adaptador refusava i un amb entrada MIDI, no són al conjunt LV2.\u003C\u002Fp>\n\u003Ch2 id=\"que-en-va-sortir\">Què en va sortir\u003C\u002Fh2>\n\u003Cp>Amb els plugins que tots els camins poden allotjar, els camins costen el mateix per plugin: mana el \u003Ccode>process()\u003C\u002Fcode> del mateix\nplugin i l'embolcall de l'amfitrió hi afegeix un microsegon. Dins del procés només costa el temps en línia del plugin, però\nuna fallada allà s'endú l'àudio de la consola, mentre que fora del procés el graf continua viu i un reinici torna a sonar en\nmenys de 0,1 s. Per això el worker per defecte de plugin-hostd va passar a ser omx-clap-host, fora del procés, per als plugins\nCLAP i, a través de l'adaptador, per als plugins LV2 que admet, amb mod-host per a la resta i dins del procés només per als\nplugins que admet la qualificació.\u003C\u002Fp>\n",1793954996511]