Ir para o conteúdo

veilDocumentaçãoReferência

Desempenho

CPU, memória e taxa de quadros medidas por tipo de papel de parede.

Copiado de README.md no repositório do veilVer no GitHub (abre em uma nova aba)

Medido com scripts/bench/ (abre em uma nova aba) na compilação de 2026-10-19, em um sway 1.12 headless que renderiza na CPU, com uma saída de 1920x1080 em fill, 60 segundos após um aquecimento de 5 segundos, com MALLOC_ARENA_MAX=1, como o pacote e a unidade o iniciam. Os clipes são padrões de teste do ffmpeg em que todo quadro é diferente. A máquina: Intel Core i5-11400F, NVIDIA GeForce RTX 3060 Ti (driver 595.91.07, por isso o GStreamer escolhe os decodificadores nvcodec), 32 GB, NixOS com Linux 7.2 e GStreamer 1.28.7. A CPU é dada em porcentagem de um núcleo, para o processo inteiro do daemon.

Papel de paredeDecodificadorCPUQuadros exibidos por segundoMemória (RSS)Threads
Um PNG de 1920x1080nenhum0.02 % (um tick de 10 ms em 60 s)20 MiB1
H.264, 1080p, 30 fpsnvh264dec (GPU)19.5 %30.0 de 30203 MiB15
H.264, 1080p, 60 fpsnvh264dec (GPU)39.7 %59.8 de 60203 MiB15
VP9, 1080p, 60 fpsnvvp9dec (GPU)37.9 %59.9 de 60251 MiB15
H.264, 2160p, 60 fpsnvh264dec (GPU)136 %60.2 de 60297 MiB15
H.264, 1080p, 30 fpsavdec_h264 (software)24.5 %30.0 de 30161 MiB22
H.264, 2160p, 60 fpsavdec_h264 (software)174 %60.1 de 60458 MiB22
  • Uma imagem estática não custa quase nada depois de desenhada: uma thread e um tick de tempo de CPU em um minuto, enquanto o bench perguntava veil status a cada segundo.
  • Um vídeo custa CPU em proporção aos seus pixels por segundo, seja qual for o codec. O decodificador na GPU custa cerca de 1 %; o resto é a conversão de cada quadro de NV12 para RGB, que o compositor exige e que acontece na CPU com os decodificadores da NVIDIA. A meta de projeto do veil, de menos de 1 % para um vídeo, não é atingida neste hardware. Em Intel e AMD, o VA-API poderia entregar os quadros ao compositor sem essa conversão; isso não foi medido (problema conhecido 7).
  • Memória, threads e descritores de arquivo permanecem estáveis: um vídeo que repetiu uma vez por segundo durante dez minutos não reteve nada (com o decodificador por hardware; o decodificador por software reteve cerca de 500 KiB nos primeiros minutos, depois nada), e 500 trocas de papel de parede (250 delas vídeos) não deixaram nada para trás. A memória só permanece estável ao longo das trocas com uma única arena do alocador (MALLOC_ARENA_MAX=1), que o pacote Nix e a unidade do systemd definem; o problema conhecido 3 traz os números sem ela. Execuções de horas e de dias ainda estão por fazer.
  • Um vídeo pausado ou parado usa quase nenhuma CPU: atrás de uma janela em tela cheia, ele mantém seu quadro na tela e não decodifica nada (medido: no máximo um tick em 5 segundos); enquanto a tela está bloqueada, seu pipeline é liberado.

Como cada número foi medido, e o que foi medido antes, está em docs/measurements.md. Nada foi medido ainda em uma sessão real.