Linux embarcado travando

Fórum para discussão sobre Linux para processadores ARM

Moderadores: 51, guest2003, Renie, gpenga

Linux embarcado travando

Mensagempor armani » 27 Nov 2007 15:12

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?
armani
Bit
 
Mensagens: 25
Registrado em: 08 Fev 2007 12:37

Mensagempor Wagner de Queiroz » 27 Nov 2007 16:48

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.
Seja Livre, Use Linux
Avatar do usuário
Wagner de Queiroz
Word
 
Mensagens: 872
Registrado em: 11 Out 2006 13:38
Localização: Barueri-SP

Mensagempor xultz » 27 Nov 2007 17:50

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.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor msamsoniuk » 28 Nov 2007 16:39

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.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor xultz » 29 Nov 2007 09:26

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.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor veioloko » 29 Nov 2007 09:31

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
veioloko
Byte
 
Mensagens: 348
Registrado em: 10 Nov 2006 06:01
Localização: São Bernardo do Campo

Mensagempor chipselect » 29 Nov 2007 17:42

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.
chipselect
Word
 
Mensagens: 744
Registrado em: 16 Out 2006 18:50

Mensagempor EDSONCAN » 29 Nov 2007 18:58

Ë 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
EDSONCAN
Word
 
Mensagens: 876
Registrado em: 11 Out 2006 14:11

Mensagempor veioloko » 29 Nov 2007 20:28

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
veioloko
Byte
 
Mensagens: 348
Registrado em: 10 Nov 2006 06:01
Localização: São Bernardo do Campo

Mensagempor msamsoniuk » 01 Dez 2007 15:49

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.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor chipselect » 01 Dez 2007 18:02

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.
chipselect
Word
 
Mensagens: 744
Registrado em: 16 Out 2006 18:50

Cadê o Armani?

Mensagempor Wagner de Queiroz » 01 Dez 2007 18:40

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:
Seja Livre, Use Linux
Avatar do usuário
Wagner de Queiroz
Word
 
Mensagens: 872
Registrado em: 11 Out 2006 13:38
Localização: Barueri-SP

Mensagempor armani » 21 Dez 2007 14:42

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
armani
Bit
 
Mensagens: 25
Registrado em: 08 Fev 2007 12:37


Voltar para Linux / uCLinux ( ARM ) / UNIX

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x