Página 1 de 1

Linux embarcado travando

MensagemEnviado: 27 Nov 2007 15:12
por armani
Olá pessoal, estou com um projeto que roda linux embarcado, este tem apresentado problemas de travamento do SO porém estou remando muito para descobrir a causa...

Alguém já teve problemas do tipo e teria alguma sugestão a dar sobre possíveis causas de travamento?

Tenho um processo utilizando quase 100 do processador, isso poderia gerar grandes problemas?

MensagemEnviado: 27 Nov 2007 16:48
por Wagner de Queiroz
Armani, voce acaba de responder sua pergunta:

Eu tenho um processador. O sistema operacional precisa de uma porcentagem de processamento para funcionar.

Se eu tenho um processo que ocupa 100% do processador, o que sobra pro resto?

Talvez seria interessante voce mexer neste seu processo para tentar diminuir a carga do processador.

Imagine o caso: Voce dirige um caminhão por uma estrada e tem que ao mesmo tempo que dirige olhar o mapa da estrada para ver aonde voce esta indo. Se olhar o mapa ocupa 100% do tempo, quem vai dirigir o caminhão?

se possivel arrume um ajudante que fique de olho no mapa para vc.

No seu sistema é o mesmo, divida esta tarefa ou arrume um periferico que tome conta do processo para liberar o processador.

Talvez eu esteja falando baboseiras ...

De toda forma conte sobre seu projeto, quem sabe nós possamos ajuda-lo melhor.

MensagemEnviado: 27 Nov 2007 17:50
por xultz
Se o processador roda o tempo todo a 100%, ele pode travar (ou dar algum pau aleatorio) por causa de aquecimento interno. Eu realmente não sei até que ponto os processadores são desenhados para rodar a 100% de carga o tempo todo.
Mas que tua aplicação tem algum problema de design, isso tem.

MensagemEnviado: 28 Nov 2007 16:39
por msamsoniuk
teu processador eh com mmu ?

bom, usar 100% nao significa absolutamente nada: na maioria das implementacoes o linux ocupa efetivamente 100% da cpu mesmo em idle, pq esta em um loop infinito. outro aspecto eh que usar 100% da cpu nao causa maiores danos no linux pq o sistema obrigatoriamente escalona, ou seja, a aplicacao usa 100% do que esta disponivel, mas o kernel sempre reserva tempo para rodar, nao tem como fugir.

a unica forma de descobrir o q realmente esta acontecendo eh cortar a funcionalidade da aplicacao, comecando no nivel mais basico de operacao e ir incrementando as coisas ateh comecar a dar pau. mas se o processador tem mmu, em principio nao teria como derrubar o sistema, a menos q o problema esteja em algum driver q vc implementou.

MensagemEnviado: 29 Nov 2007 09:26
por xultz
Até onde sei, o Linux não fica em loop infinito não, mesmo porque esta é uma exigência para sistemas embarcados e notebooks, porque o reflexo é direto no consumo de energia. Me parece que ele trabalha com interrupções de timer e elas aumentam e diminuem conforme a carga.

MensagemEnviado: 29 Nov 2007 09:31
por veioloko
Desculpem me intrometer....

Em programas que fiz para windows o processamento ia para 100% em loops infinitos, tinha que resetar a maquina.
Com o microlinux deve ser igual, não sei se falei besteira.
abraços

MensagemEnviado: 29 Nov 2007 17:42
por chipselect
não falou besteira não...

quando você ativa um processo com prioridade alta no sistema operacional como o Windows (que não é de tempo real), não é que o sistema esteja realmente travado, mas ele "demora" pra responder e parece que travou.

Agora, se realmente travou, pode ter sido deadlock ou algo do tipo.

MensagemEnviado: 29 Nov 2007 18:58
por EDSONCAN
Ë um palpite mas se ajudar

Crie uma variavel de status, atribua cada tarefa do seu sistema um numero, jogue pela serial o valor dessa variavel e veja qual a ultima tarefa executada antes de travar.




Edson

MensagemEnviado: 29 Nov 2007 20:28
por veioloko
Heuhueuheuhe é isso que eu faço na pratica...
so que não em uclinux....nos normais ....
ou escrevo algo no display lcd ou entao mando pela serial...
ja que não gosto de simular

MensagemEnviado: 01 Dez 2007 15:49
por msamsoniuk
maquina q restarta pq vc usa 100% indica falha de hardware ou software! :)

vc rodar um loop infinito consumindo 100% da maquina nao deve causar *nenhum* problema de hardware ou software, em especial se o sistema operacional for um unix ou linux, pois eles alocam fatias de tempo para os processos e os processos nao conseguem passar a perna no sistema operacional.

tanto que em maquinas unix em ambiente de producao nao se mede o uso pelo consumo de cpu, que normalmente eh sempre de 100%, mas em termos de load, que indica quantas vezes a maquina excedeu os 100%. nao eh raro encontrar maquinas tipicas com load 20 e jah picos de load 150. para se ter nocao do que eh isso, significaria que mesmo em uma maquina SMP de 150 processadores todos os processadores estariam com 100% de uso.

e mesmo com essa sobrecarga as maquinas nao restartam. eh claro, o excessivo uso de disco causa diminuicao no MTBF dos discos e um consumo muito maior, entao quando as maquinas estao em idle eh muito comum as maquinas esperarem os discos esfriarem e efetuarem um spinoff para diminuir o consumo ou poupar os discos.

mas as vezes vc nao tem essa opcao ou nao pode usar um mecanismo para consumo de energia. em alguns processadores a reducao de consumo soh eh possivel cortando o clock ou diminuindo muito, o q pode causar uma latencia indesejavel durante o atendimento de interrupcoes. entao em muitas arquiteturas o idle no linux eh simplesmente um do { } while(1) e o processador trabalha em tempo integral mesmo em idle.

nestes casos, se o seu hardware esta projetado de acordo, o processador vai trabalhar anos e anos a 100% e nao vai restartar ou crashear. isso vale tanto para sistemas embarcados quando para desktops e servidores. se a sua maquina crasheia ou restarta, troque de maquina, pois uma maquina normal nao faz isso.

MensagemEnviado: 01 Dez 2007 18:02
por chipselect
se você tem certeza que o hardware está OK, verifique a possibilidade de ter ocorrido um deadlock.

Nenhum sistema operacional que conheço ou ouvi falar está imune a deadlock.

Cadê o Armani?

MensagemEnviado: 01 Dez 2007 18:40
por Wagner de Queiroz
Falando Francamente, o Armani sumiu não acham? estamos aqui discutindo, discutindo e discutindo e nada do autor do post aparecer para dizer que fim teve a brincadeira.

Armani, Cadê voce! Nóis vem aqui só pra ti vê ....

:wink:

MensagemEnviado: 21 Dez 2007 14:42
por armani
Ai pessoal desculpa ter sumido, rs

Resolvemos o problema fazendo o controle dos processos e isso resolveu... porém foi outro cara que o fez e não tenho como saber qual a solução que ele deu para o problema.

Vlw pela ajuda ai