No! próximo! passo! foi! feito! o! estudo! da! possibilidade! do! relógio! máquina! se! puder!atrasar!ou!adiantar!ao!longo!do!tempo.!Recorde<se!que!o!relógio!máquina!não! pode! ser! ajustado! uma! vez! que! é! uma! parte! física! das! placas.! Adicionalmente,! é! influenciado! com! a! temperatura! humidade! etc.! Este! relógio! influencia! também! os! resultados!obtidos!nos!testes!de!PTP,!sendo!que!o!relógio!que!é!ajustado!no!PTP!é! um!relógio!de!software.!!
Esse! relógio! vai! influenciar! o! áudio! ao! longo! do! tempo! e! não! no! momento! do! início!de!reprodução,!ou!seja,!no!início!da!reprodução!pode<se!ajustar!a!reprodução! com! base! nos! valores! de! offset! gerados! pelo! PTP,! mas! ao! longo! da! reprodução! os! relógios!máquina!poderão!atrasar!ou!adiantar!e!será!difícil!poder!ajustar!esse!offset.!
Para! perceber! melhor! o! tipo! de! offset! que! é! gerado,! e! se! influencia! ou! não! a! qualidade! da! reprodução! áudio! ao! longo! do! tempo,! foi! planeado! e! implementado! um! teste! simples,! mas! eficaz.! Desenvolveu<se! um! programa! em! linguagem! C! (ver! Apêndice!D)!para!gerar!uma!onda!sinusoidal!na!placa!áudio!a!uma!determinada!hora! especificada!pelo!utilizador.!O!teste!final!consistia!na!medição!da!onda!sinusoidal!à! saída!da!placa!áudio!da!WD!e!da!RPi!com!um!osciloscópio.!Assim!medir<se<ia!com! precisão! o! offset! real! entre! a! reprodução! nos! dois! canais.! Foi! feito! um! print! do! osciloscópio!aos!0,!30,!60,!120!e!240!segundos!para!conseguir!perceber!o!quanto!é! que! uma! placa! se! desvia! em! relação! à! outra,! mesmo! que! ambas! iniciem! a! reprodução! áudio! no! mesmo! instante! de! tempo,! isto! é,! sincronizadas! temporalmente.!!
O! osciloscópio! usado! foi! um! usb<instruments! DS1M12! com! o! EasyScope! II! instalado.! Os! resultados! foram! os! expectáveis! –! o! offset! duma! placa! em! relação! à! outra,!ao!longo!do!tempo,!aumenta!e!começa!a!ser!significativo!com!alguma!rapidez.! Na! Figura! 3<7! pode! ver<se! esse! offset.! A! imagem! à! esquerda! foi! tirada! aos! 0! segundos,! enquanto! que! a! imagem! à! direita! foi! tirada! aos! 30! segundos.! Como! é! possível! verificar,! houve! um! atraso! de! cerca! de! 500μs! que,! ao! fim! de! apenas! um! minuto!perfazia!já!1ms!–!um!cenário!nada!desejável.!!
!
! Figura!3E7!Saída!osciloscópio!RPi!0!e!30!segundos!
Nas!WDs!o!resultado!foi!bem!mais!animador,!mas,!mesmo!assim,!este!fenómero! ao!longo!de!muito!tempo!constitui!um!problema!para!os!sistemas!de!sincronização! temporal! que! apenas! confiem! na! sincronia! das! colunas! no! momento! do! início! da! reprodução!de!um!determinado!trecho!musical.!Na!Figura!3<8!é!possível!visualizar!o!
offset! nas! WDs.! No! espaço! de! um! minuto! houve! um! offset! de! aproximadamente!
30μs.!! !
! Figura!3E8!Saída!de!osciloscópio!na!WD!nos!0!e!60!segundos!
!!
Os! testes! efetuados! anteriormente! foram! feitos! com! as! placas! nas! mesmas! condições! de! teste,! ou! seja,! a! temperatura! e! humidade! ambientes! estariam! equivalentes.!Foi!então!realizado!um!teste!em!condições!extremas,!em!que!uma!das! placas!era!aquecida!e!outra!arrefecida.!Foi!usado!um!aquecedor!numa!placa!e!um! ventilador!noutra.!Este!teste!foi!conduzido!para!que!se!ter!noção!do!limite!máximo! que! se! poderá! ter! que! ajustar! o! relógio! ao! longo! do! tempo.! O! resultado! foi! esclarecedor!e!demonstra!que!a!temperatura!afeta!a!precisão!do!relógio!máquina.!!
! Figura!3E9!Saída!osciloscópio!RPi!nos!0!e!30!segundos!(quente!e!frio).!
Na!Figura!3<9!é!possível!verificar!que!com!uma!placa!mais!quente!e!outra!mais! fria! o! offset! passou! de! aproximadamente! 500μs! para! 400μs.! Neste! caso! baixou! o!
offset! mas! nada! garante! que! esse! não! possa! aumentar.! Na! Figura! 3<10! é! possível!
visualizar!o!comportamento!do!offset!onde!só!uma!das!placas!é!que!era!arrefecida! por!um!ventilador.!Neste!cenário!verifica<se!que!houve!apenas!um!offset!de!300μs.! ! ! Figura!3E10!Saída!osciloscópio!no!RPi!nos!0!e!nos!60!segundos!(frio)! Como!o!objetivo!último!é!uma!solução!que!possa!ser!implementada!em!qualquer! sistema! Linux,! independentemente! do! custo,! a! variação! destes! offsets! terá! de! ser! necessariamente!absorvida!pelo!algoritmo!de!sincronização.!
! O! PTP! apenas! fornece! o! valor! do! offset! entre! master! e! slave./ Para! resolução! deste! problema! surgiram! então! duas! opções.! A! primeira! seria! a! criação! dum! protocolo!entre!os!sistemas!slaves!para!comunicarem!o!seu!offset!e!com!isto!calcular! a! diferença! dos! mesmos! para! posteriormente! compensação.! A! segunda! seria! monitorizar!constantemente!o!offset!em!relação!ao!mestre!e!fazer!a!compensação! relativa!a!este.!Esta!última!solução,!no!contexto!da!arquitetura!do!projeto,!tem!uma! implementação!de!complexidade!inferior.!!!
Foi!então!desenvolvido!um!pequeno!software!que!calcula!o!declive!do!offset!ao! longo! do! tempo.! Os! resultados! obtidos! neste! teste! mostraram! que! a! variação! do!
offset!entre!placas!é!de!aproximadamente!1ms!por!minuto,!mas!a!variação!do!offset!
entre!mestre!e!escravos!era!muito!maior,!chegando!a!atingir!3ms!por!minuto.!!
Ou! seja,! provou<se! anteriormente! que! era! possível! garantir! offsets! iniciais,! imediatamente! antes! do! início! da! reprodução! áudio! e! à! custa! de! monitorização! temporal!com!o!PTP,!com!precisões!abaixo!de!1!ms.!No!entanto,!era!imprescindível! resolver!o!problema!da!variação!contínua!do!offset!após!o!início!da!reprodução.!! Depois!de!várias!pesquisas!foram!planeadas!duas!possíveis!soluções:!o!ajuste!da! taxa!de!amostragem!da!placa!áudio!reprodutora!ou!a!remoção/adição!de!amostras! também!tendo!em!conta!esse!declive.!Como!era!de!esperar!tanto!uma!como!outra! solução!tem!defeitos!sendo!que!no!primeiro!caso!é!o!facto!de!nem!todas!as!placas! permitirem!o!ajuste!da!taxa!de!amostragem!e!na!segunda!não!sabermos!à!partida!o! efeito!ao!ouvido!humano!e!poder<se!detetar!ou!não!as!falhas!aquando!da!remoção! ou!adição!de!amostras!de!áudio.!Apesar!da!primeira!opção!ser!a!que!mais!faz!sentido! uma! vez! que! a! qualidade! do! áudio! se! iria! manter! igual! é! no! entanto! uma! solução! limitativa.!Como!o!objectivo!da!solução!final!é!a!utilização!de!um!protocolo!de!áudio! em!qualquer!sistema!foi!decidido!avançar!pela!segunda!opção.!
Optando!por!esta!solução,!há!que!considerar!novamente!a!percepção!do!ouvido! humano.! Como! se! está! a! retirar! ou! acrescentar! amostras,! isso! poderá! afetar! a! qualidade! do! áudio! final.! Tome<se! no! exemplo! de! um! ficheiro! de! áudio! com! o! formato! wav! com! 16! bits! por! amostra! e! uma! taxa! de! amostragem! de! 44100Hz.! O! mínimo!que!se!pode!retirar!ou!acrescentar!serão!16bits!<!mais!ou!menos!que!esta!
referência! ir<se<ia! introduzir! ruído.! Conforme! demonstram! os! cálculos! abaixo,! é! possível!perceber!que!uma!amostra!de!16!bits!equivale!a!22,6μs,!e!para!se!obter!1ms! num! minuto! serão! precisas! 44! amostras! de! 16! bits,! o! que! equivale! a! 0,0002%! das! amostras!num!minuto.!! ! =1 f = 1 44100= 22,6!"! ! 1!!"#$%&! ! = 22,6!" 1000!"! ⟺ ! = 1000 22,6 ≈ 44!!"#$%&!$! ! 22,6!" 3600! = 1 !! ⇔ ! = 3600 22,6! ≈ 15929035!!"#$%&!$! ! 15929035 44 = 100 ! ! ⇔ ! = 44×100 15929035= 0,0002%! ! Os!transdutores!finais!de!gama!superior!introduzem!uma!degradaçãoo!do!sinal! de! xxx,! com! isto! podemos! dizer! que! a! ínfima! parte! de! amostras! retiradas! ou! acrescentadas! será! imperceptível! pelo! ouvido! humano.! Ainda! assim! foi! decidido! fazer!um!teste!num!contexto!real.!
Foram! então! desenvolvidos! 2! programas! que! removem! ou! acrescentam! amostras!aos!dados!de!áudio.!Esses!programas!podem!ser!vistos!nos!Apêndice!E!e! Apêndice!F!assim!como!o!fluxograma!dos!mesmos.!
O!funcionamento!dos!programas!é!simples.!Primeiro!separa<se!o!cabeçalho!dos! dados,!guardando!os!mesmos!num!buffer;!depois!divide<se!esse!buffer!conforme!o! número! de! amostras! introduzidas! pelo! utilizador.! Seguidamente! remove<se! ou! acrescenta<se! uma! amostra,! sendo! que! quando! acrescentada,! o! frame! anterior! é! replicado!para!o!frame!seguinte.!Após!esta!tarefa,!ajusta<se!o!buffer!de!modo!a!fazer! o! shift,! para! a! esquerda! ou! direita,! compensando! assim! a! posição! que! agora! foi!
removida/acrescentada.!Deve<se!salientar!que!se!for!um!ficheiro!de!áudio!em!stéreo! terão! de! ser! retiradas! duas! amostras! e! não! uma,! uma! vez! que! as! amostras! estão! dispostas! no! buffer! de! dados,! sendo! os! 16! primeiros! bits! o! canal! esquerdo! e! os! próximos!16!o!canal!direito!(constituindo!um!frame),!como!é!possível!ver!na!Figura! 3<11,! repetindo<se! consecutivamente.! Quando! se! trata! de! um! ficheiro! estéreo,! há! que!ter!o!cuidado!de!retirar!as!duas!amostras!do!sítio!correto,!sob!pena!de!se!estar!a! retirar!o!canal!direito!de!um!frame,!e!o!canal!esquerdo!do!frame!seguinte,!ou!seja! estar<se<ia!a!retirar!uma!amostra!de!frames!diferentes.!
! Figura!3E11!Disposição!dos!dados!num!ficheiro!Wav!
Com! ajuda! destes! programas! geraram<se! 2! ficheiros! de! áudio,! em! que! foram! retiradas/acrescentadas!444!amostras!(o!ficheiro!de!áudio!escolhido!continha!3:22! minutos!de!música).!Estas!amostras!correspondem!a!3ms/minuto.!
A!partir!dos!ficheiros!gerados!foi!realizado!então!o!teste!em!contexto!real!com! uma!população!de!15!pessoas!em!que!lhes!foi!dado!a!ouvir,!de!forma!aleatória,!3! ficheiros!de!áudio!–!um!normal,!outro!com!menos!3ms,!e!um!último!com!mais!3ms! num! minuto! (menos! 132! frames! e! mais! 132! frames).! Para! cada! uma! das! pessoas! envolvidas!no!teste!questionou<se!a!sua!percepção!de!diferença!entre!os!ficheiros!de! áudio! ouvidos,! sendo! que! nenhum! dos! intervenientes! sabia! qual! a! música! original! (normal,! sem! qualquer! amostra! retirada).! Estes! testes! foram! realizados! com! um!
Macbook/Pro!ligado!a!um!amplificador!Rotel!e!umas!colunas!Philips.!Os!resultados!
provenientes!desse!estudo!podem!ser!vistos!na!Tabela!3<1.! !
! !
Idade! Sexo! Profissão! Percepção!Adição! Percepção!Remoção!
29! M! Estudante! Não! Não!
23! M! Estudante! Não! Não!
22! F! Estudante! Não! Não!
25! F! Estudante! Não! Não!
26! M! Estudante! Não! Não!
24! M! Estudante! Não! Não!
28! M! Estudante! Não! Não!
28! F! Operadora!Ajudante! Não! Não!
50! M!! Empresário! Não! Não!
51! F! Empresária! Não! Não!
35! F! Gestora! Não! Não!
38! M! Engenheiro!Acústico! Não! Não!
24! M! Estudante! Não! Não!
22! F! Estudante! Não! Não!
23! F! Estudante! Não! Não!
Tabela!3E3!Resultado!testes!percepção!ouvido!humano!
Como!é!possível!constatar!nenhum!dos!intervenientes!notou!diferença!entre!o! ficheiro! de! áudio! original! e! os! modificados.! ! Mesmo! que! nenhum! interveniente! tenha! conseguido! notar! alguma! diferença,! em! alguns! testes! preliminares! usando! auscultadores,! foi! possível! notar! uns! “estalitos”! de! tempos! a! tempos! quando! se! adicionava!frames,!sendo!que!esse!problema!só!era!perceptível!com!a!adição!de!132!
frames! adição! de! 3ms)! e! quando! as! amostras! musicais! tinham! valores! numéricos!
perto!do!zero.!!
Tentou<se!identificar!soluções!de!modo!a!que!esse!problema!deixasse!de!existir.! A! solução! encontrada! foi! calcular! a! média! entre! as! frames! consecutivas! e!
seguidamente!acrescentar!uma!nova!frame!com!essa!média.!Deste!modo!conseguiu< se!uma!transição!mais!suave,!conforme!exemplo!na!Figura!3<12.!Foram!entretanto! conduzidos!novos!testes,!nos!quais!foi!perceptível!a!diferença!com!o!teste!anterior,! nomeadamente!pelo!facto!de!que!neste!novo!teste!não!foram!detetados!quaisquer! “estalitos”.!! ! ! Figura!3E12!Exemplo!adição!com!média!
3.4 Reprodução!áudio!sincronizada!
Com! todos! os! testes! efectuados! e! demonstrados! nas! secções! anteriores,! estavam!garantidas!as!condições!para!se!avançar!para!uma!versão!de!testes!finais.! Nesta,!usar<se<iam!duas!placas!de!testes!ligadas!a!duas!colunas.!Primeiramente!foi! usada!uma!configuração!simples,!apenas!para!testes!que!envolvam!3!intervenientes:!! <!o!mestre,!que!corre!o!protocolo!PTP,!apenas!enviando!de!tempos!a!tempos!o! seu!relógio,!de!modo!que!os!escravos!consigam!calcular!a!diferença;!!e!uma!função! de! play! em! que! é! enviado! um! comando! para! os! escravos! que! contem! a! hora/minuto/segundos! a! que! o! escravo! deve! reproduzir! a! música.! O! envio! desta! mensagem!é!sobre!UDP.!
<! dois! escravos! com! uma! coluna! acoplada! a! cada! um.! Estes! têm! o! PTP! para! monitorização!e!para!cálculo!do!offset!assim!como!um!pequeno!deamon!que!gera!a! média! desse! offset! e! o! declive! por! minuto.! Neste! deamon! também! é! ajustado! o!
relógio!se!este!for!superior!a!1!segundo.!Nesta!fase!não!fará!sentido,!mas!mais!tarde! em! ambiente! real,! em! que! cada! coluna! possa! ter! os! minutos! de! reprodução! ou! a! hora,!convém!que!a!hora!esteja!minimamente!ajustada!com!o!mestre.!Os!escravos! também!contêm!um!pequeno!software!que!recebe!o!comando!de!play!do!mestre!via! UDP,!e!reproduz!uma!música!(à!hora!indicada!pelo!mestre)!já!existente!localmente.!! Para!a!reprodução!de!áudio!foi!usada!a!API!mais!próxima!do!hardware!possível!e! após!várias!pesquisas!chegou<se!à!conclusão!de!que!a!API!Alsa!seria!a!mais!indicada.! De!facto!a!maioria!das!APIs!existentes!para!reprodução!usam!a!própria!API!Alsa!para! reproduzir!o!áudio.!Na!Figura!3<13!é!possível!verificar!as!várias!APIs!existentes!e!a! camada! que! ocupam,! assim! como! é! possível! verificar! no! recurso! online! [20]! uma! explicação!detalhada!de!todas!essas!APIs.!!
!
Figura!3E13!Diferentes!APIs!audio!Linux!e!camadas!pertencentes![20]!
Com! a! simples! configuração! indicada! acima! foi! então! realizado! um! teste! para! verificar!se!havia!percepção!do!ouvido!humano!a!algum!atraso!entre!colunas.!Deste! teste! prematuro! não! se! obteve! os! resultados! esperados,! porque! apesar! de! na! maioria!das!vezes!não!se!notar!nenhum!atraso!entre!colunas,!quando!acontecia,!era! perceptível!e!incomodativo.!!
Foi!então!que!se!repensou!a!maneira!de!como!era!tratado!o!áudio!nas!colunas,! uma! vez! que! no! momento! de! reproduzir! o! áudio! era! chamada! uma! função! alsa_play()! que! recebia! por! parâmetro! o! ficheiro! de! áudio.! Esta! função,! muito! sucintamente,! lê! o! ficheiro! de! áudio! retirando! os! dados! importantes! do! seu!
cabeçalho,!como!por!exemplo,!número!de!canais,!taxa!de!amostragem,!número!de! amostras!etc.!Seguidamente!a!função!!prepara!o!dispositivo!de!áudio!(neste!caso!a! placa! áudio! integrada! dos! RPi/WDs)! enviando! os! parâmetros! antes! lidos! do! cabeçalho.!De!seguida!é!lido!o!áudio!do!ficheiro!para!um!buffer!e!só!depois!é!enviado! para! a! própria! placa.! Todo! este! processo! requer! muitas! funções! e! consequentemente! atraso! incontrolável.! De! facto,! é! o! escaloneador! do! Linux! que! decide! quando! é! que! as! funções! são! executadas,! e! isto! depende! grandemente! do! número!de!interrupções!a!que!está!sujeito,!sendo!que!neste!caso!devido!ao!PTP!as! interrupções!são!em!abundância.!
A!mudança!no!tratamento!do!áudio!resumiu<se!à!prévia!configuração!da!placa! de!áudio,!ou!seja,!antes!de!se!configurar!o!servidor!UDP!e!de!receber!os!dados!é!lido! o!ficheiro!de!áudio!existente!localmente!e!retirados!os!parâmetros!de!configuração! do! cabeçalho.! De! seguida! configura<se! a! placa! de! áudio! com! esses! mesmos! parâmetros,!e!por!último,!ativa<se!a!placa!para!receber!os!dados.!Com!estes!passos! prévios!a!placa!de!áudio!só!precisa!de!uma!função!para!reproduzir!o!áudio.!Na!Figura! 3<14! é! possível! ver! o! fluxograma! do! programa! final! em! que! a! cor! cinza! estão! presentes! os! módulos! adicionados/modificados! da! primeira! para! a! segunda! abordagem,! assim! como! é! possível! ver! como! é! calculada! a! média! do! offset! e! do! declive!por!minuto.!
! Figura!3E14!Fluxograma!geral!do!funcionamento!do!software!em!cada!coluna!corrigido!(fase!1)!
Procedeu<se! a! uma! segunda! fase! de! testes,! ressalvando<se! que! envolveram! apenas!uma!pessoa.!De!facto,!a!versão!estava!ainda!muito!instável!e!não!justificava! fazer!testes!a!uma!população!maior.!Esta!segunda!fase!de!testes!revelou!melhorias! muito! significativas,! entre! elas,! o! facto! do! áudio! ter! muito! menos! atraso! no! momento!da!reprodução.!Também!o!número!de!vezes!que!se!notava!atraso!entre!a! coluna!da!esquerda!e!a!coluna!da!direita!foi!notório.!Ainda!que!a!diferença!tivesse! diminuído! em! número! e! em! percepção! ao! ouvido,! ainda! era! um! factor! que! necessitava! de! melhorias! para! ser! considerado! uma! versão! final.! É! oportuno! recordar! aqui! que! se! trata! de! uma! solução! de! áudio! de! alta! fidelidade,! e! como!
especificado!no!capitulo!2.1,!não!poderá!haver!nenhuma!percepção!de!atraso!entre! colunas!para!o!ouvido!humano.!!
Foram! então! conduzidas! novas! pesquisas! onde! foi! encontrado! um! factor! que! poderia! mudar! por! completo! problema! identificado.! Esse! factor! é! o! tipo! de! kernel! usado!nas!placas.!O!kernel!usado!nas!placas!é!para!uso!generalizado,!ou!seja,!o!uso! comum!de!um!computador!em!que!se!tem!várias!tarefas!a!ser!realizadas!ao!mesmo! tempo,!e!o!problema!de!latência!não!é!crítico.!Isto!significa!que!se!a!tarefa!demorar! mais!1ms!ou!menos!1ms!é!praticamente!imperceptível!com!um!uso!normal.!Já!num! sistema!que!tenha!grande!sensibilidade!a!atrasos,!como!o!áudio,!isto!será!crítico.!!
Generalizando,! existem! então! dois! tipos! de! sistemas! operativos,! os! GPOS! (General! Propose! Operating! System)! e! os! RTOS! (Real! Time! Operating! System).! Por! exemplo,!para!os!GPOS,!tem<se!os!sistemas!comuns,!Windows,!Linux,!Mac!OS!X!etc!e! para! os! RTOS! tem<se! VxWorks,! uCos! etc.! Entre! muitas! outras! diferenças,! a! mais! importante!no!RTOS,!é!a!latência!máxima!para!a!execução!de!uma!tarefa,!em!que! neste! caso! é! muito! mais! baixa! comparativamente! com! o! GPOS.! No! artigo! [21]! é! possível! verificar! as! melhorias! que! um! RTOS! trará! a! um! sistema! sensível! temporalmente,!especialmente!na!latência!máxima.!Também!é!possível!verificar!que! dentro!dos!sistemas!RT!ainda!existem!duas!classes,!sendo!elas,!Soft/RT!e!Hard/RT.!Na! Figura!3<15!pode<se!ver!as!diferentes!aplicações!que!são!usadas!no!Hard!e!Soft/RT.!O! áudio!encontra<se!nos!Soft/RT.!Como!foi!visto!no!capitulo!anteriormente,!o!limiar!da! qualidade! de! áudio! funciona! entre! os! microssegundos! e! os! milissegundos,! ao! qual! um!Soft/RT!pode!oferecer!tais!limites.!Claro!que!com!um!Hard/RT!conseguir<se<iam! melhores!prestações,!mas!estas!não!traziam!nenhuma!mais!valia!porque!não!seriam! perceptíveis!pelo!ouvido!humano.!
! Figura!3E15!Diferentes!aplicações!do!Hard&RT!e!Soft&RT&[21]!
!Mesmo!o!Linux!sendo!um!GPOS,!há!já!distribuições!de!kernel!em!que!é!possível! ter! um! certo! nível! de! RTOS! (Soft! RT).! No! Website! [22]! é! possível! descarregar! esse!
kernel.! Como! a! instalação! de! um! kernel! em! qualquer! placa/pc! é! uma! tarefa!
dispendiosa! decidiu<se! descarregar! um! Sistema! Operativo! que! já! tenha! o! kernel! preparado!para!aplicações!em!tempo!real!e!esteja!pronto!a!usar!nas!placas!(tanto!as! WD!como!RPi).!Procedeu<se!então!à!formatação!e!criação!de!um!cartão!de!memória! com!o!SO!pretendido!para!ser!usado.!
Apesar!de!o!artigo![21]!já!mostrar!dados/gráficos!das!diferenças!entre!um!RT!e! um! não! RT,! este! não! especifica! o! tipo! de! placas! usadas.! Consequentemente! foi! efectuado! o! teste! nas! placas! para! perceber! realmente! a! diferença,! e! se! essa! diferença! seria! significativa.! Para! esse! teste! usou<se! a! ferramenta! disponibilizada! pelo! website! [22]! própria! para! esse! efeito.! É! um! simples! software! designado! por!
Cyclictest,/ que! por! sua! vez! realiza! uma! série! de! testes! criando! várias! threads! e!
executando! funções! em! cada! uma! delas.! No! final,! e! com! o! parâmetro! “–h800”,! é! gerado!um!histograma.!Após!a!instalação!do!software!de!testes!foi!então!executado! o!seguinte!comando:!!
sudo!cyclictest! − l10000000! − m! − n! − a0! − t1! − p99! − i400! − h800! − q! >> !TestRTKernel. txt! os!parâmetros!usados!referem<se!ao!seguinte:! • <l:!número!de!ciclos;! • <m:!Faz!o!lock!à!memória;! • <n:!Usa!clock_nanosleep!em!vez!dos!interval!timers!posix;! • <a:!Todas!as!threads!alocadas!ao!processador!0;! • <p:!Atribuir!a!prioridade!mais!alta!às!threads;! • <i:!Atribui!o!intervalo!para!começar!a!primeira!thread;!
• <h:! Gera! à! saída! um! histograma! com! o! limite! máximo! de! latência! definido;!
• <q:!Imprime!apenas!os!dados!no!final.!
O! comando! acima! foi! executado! nos! dois! RPi! e! nas! WD,! entre! eles! diferindo! apenas! o! tipo! de! kernel.! Foram! efectuados! dois! testes,! o! primeiro! com! o! PTP!
desligado!e!o!segundo!com!o!mesmo!ligado.!Apesar!de!no!segundo!teste!a!latência! ser!muito!superior!no!GPOS,!no!primeiro!podem<se!verificar!grandes!diferenças.!Na! Tabela!3<4!podem!ser!vistos!os!resultados!obtidos!tanto!no!primeiro!teste!como!no! segundo.! ! Raspberry!Pi! !! Without!PTP! With!PTP! !! RT(μs)! Non!RT(μs)! RT(μs)! Non!RT(μs)! Min! 8! 14! 11! 13! Avg! 26! 24! 26! 24! Max! 89! 277! 88! 448! ! Wandboard! !! Without!PTP! With!PTP! !! RT(μs)! Non!RT(μs)! RT(μs)! Non!RT(μs)! Min! 8! 13! 11! 13! Avg! 26! 24! 26! 24! Max! 88! 247! 88! 279! Tabela!3E4!RT!kernel!vs!Non!RT!kernel!RPi! Como!pode!ser!visto!na!Tabela!3<4,!com!um!kernel!RT!a!espera!máxima!para!que! uma!função!seja!executada!é!de!89μs!sem!o!PTP!em!funcionamento,!e!de!88μs!com! o!PTP!em!funcionamento.!Inversamente!(kernel!normal),!o!máximo!é!de!277μs!sem!o! PTP!e!448μs!com!o!PTP!em!funcionamento.!Estes!últimos!resultados!foram!obtidos! nas! RPi.! Nas! WDs,! com! o! RT,! o! máximo! foi! de! 88μs! com! e! sem! o! PTP! em! funcionamento.!Já!com!o!kernel!normal!o!máximo!foi!de!247μs!sem!o!PTP!e!de!279μs! com!o!PTP!em!funcionamento.!
! ! Figura'3)16'Histograma'RT'kernel'vs'Non'RT'kernel(RPi)' 1" 10" 100" 1000" 10000" 100000" 1000000" 10000000" 0" 50" 100" 150" 200" 250" 300" 350" 400" 450" Num be r'of 'sam ple s'(Log)' Latency'μs'' Difference'between'real';me'kernel'and'normal'kernel'(ptpd'running)' Non"Real"/me"Kernel" Real"Time"Kernel"
! ! Figura'3)17'Histograma'RT'kernel'vs'Non'RT'Kernel(Wandboards)' ! 1" 10" 100" 1000" 10000" 100000" 1000000" 10000000" 0" 50" 100" 150" 200" 250" 300" Num be r'of 'sam ple