Problema de desempenho do shell do FreeBSD (bash) no eBox 3350mx (vortex86mx SoC)

1

Eu tenho um ebox 3350mx que atua como um servidor doméstico sem título, oferecendo vários serviços locais como o dnsmasq, atalkd, backups de máquina do tempo, http, ssh, etc.

Eu instalei o FreeBSD 9.0. O hd principal (ada0) é um cartão SD externo. As especificações são 512 MB de RAM e processador PMX-1000 / Vortex86MX a 1Ghz .

O problema é que é lento ao operar com ele. Eu vim através de algumas modificações para "correr" mais rápido, mas a enorme dor é a falta de um prompt de shell suave.

Tarefas como listar diretórios, editar arquivos com o vim, ler arquivos com o gato etc. Tornar-se escandalosamente irritante.

Estou tentando descobrir o que está acontecendo. Para piorar as coisas, estou atualmente on-line por causa dos problemas de cabo do ISP, eles consertarão isso aparentemente amanhã.

Eu consegui um pouco de velocidade, parando o 'sendmail': eu cheguei a 480 MB de memória livre de apenas 12 MB. Aparentemente, o sendmail estava agindo de forma estranha, o que mantinha a máquina lenta.

Eu desliguei o PAM e usei o DNS de sshd_config e parei quase todos os serviços. Mesmo pflogd e pf. A maioria deles, além do sendmail e do sshd_config, fez uma diferença pequena, mas perceptível. No entanto, meu prompt de login ainda funciona como um carro quebrado. A primeira vez que eu emito o 'uptime' recebo a receptividade normal na segunda vez em que emito o comando - como 1 segundo depois - preciso esperar 15 segundos ou apertar 'enter' antes de pegar qualquer coisa na tela. Algumas vezes, apertar 'enter' funciona, como se o tty não entregasse, algumas vezes até isso não funciona, é como se eu não trabalhasse ... mas não recebo nenhum erro de i / o.

Eu estou meio desesperado porque não sei por onde começar a procurar ... A postagem no blog Os fóruns do FreeBSD oferecem alguns resultados de cmd se você quiser.

Qualquer pensamento sobre como transformar a capacidade de resposta da concha em "normal" é bem-vindo.

ATUALIZAÇÃO:

Aqui está a informação do disco:

[user@comodino ~]$ dmesg |grep -i ada
ada0 at ata2 bus 0 scbus0 target 0 lun 0
ada0: <SD RDC SD-IDE HOST CONTROLLER 01000000> ATA-6 device
ada0: 33.300MB/s transfers (UDMA2, PIO 512bytes)
ada0: 15399MB (31537152 512 byte sectors: 16H 63S/T 31286C)
ada0: Previously was known as ad4
Trying to mount root from ufs:/dev/ada0p2 [rw]...

Eu também achava que isso poderia ser uma E / S. Meu cartão é de 16 GB ADATA classe 10.

Aqui está o meu iostat:

[user@comodino ~]$ iostat
tty            ada0            pass0             cpu
tin  tout  KB/t tps  MB/s   KB/t tps  MB/s  us ni sy in id
  0     1 24.03   0  0.00   0.00   0  0.00   0  0  0  0 100

Estou fazendo alguns testes com o bonnie ++ ( link ) agora. Vou reportar o resultado o mais rápido possível. Obrigado pela resposta Manoli: -)

update: aqui estão os resultados de

[atma@comodino ~]$ bonnie++
Writing with putc()...done
Writing intelligently...done
Rewriting...done
Reading with getc()...done
Reading intelligently...done
start 'em...done...done...done...
Create files in sequential order...done.
Stat files in sequential order...done.
Delete files in sequential order...done.
Create files in random order...done.
Stat files in random order...done.
Delete files in random order...done.
Version 1.03e       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine            Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
comodino             1G  4156  24  4591   8  2993   7 14869  88 21277  27 100.8   2
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
             16  2804  58 10449  98  6559  88  2997  61 10711  99  4418  58    comodino,1G,4156,24,4591,8,2993,7,14869,88,21277,27,100.8,2,16,2804,58,10449,98,6559,88,2997,61,10711,99,4418,58

Agora devo decodificar os resultados :-P

    
por atmosx 09.09.2012 / 17:40

2 respostas

2

Onde estão /var e /tmp ? Com sistemas SD eu gosto de mapear /tmp -> /var/tmp e fazer /var um disco RAM. As seguintes opções em /etc/rc.conf configuram um/var de 64MB% automaticamente na inicialização. Você ainda precisa remover /tmp e torná-lo um link simbólico.

# SD Card boot, RAM-Disk /var
varmfs="YES"            # Set to YES to always create an mfs /var, NO to never
varsize="64m"           # Size of mfs /var if created
varmfs_flags=""         # Extra mount options for the mfs /var
populate_var="YES"      # Set to YES to always (re)populate /var, NO to never
cleanvar_enable="NO"    # Clean the /var directory
    
por 10.09.2012 / 00:46
1

Provavelmente não é a capacidade de resposta do shell, mas um rendimento de disco muito baixo. Como ponto de partida, examine o dmesg para ver o modo de transferência usado pelo seu cartão SD:

Você está procurando algo assim:

ada0: dispositivo ATA-8 SATA 2.x ada0: transferências de 150.000MB / s (SATA, UDMA5, PIO 8192bytes)

Provavelmente, o cartão SD ou o controlador é muito lento, os cartões SD vêm em velocidades diferentes - conhecidos como classes de velocidade. Idealmente, você usaria uma classe 6 ou superior para um disco do sistema operacional.

Existem algumas otimizações que podem ser feitas, como desativar o registro desnecessário e os tempos de modificação de arquivos (use noatime nas opções de montagem no fstab).

    
por 09.09.2012 / 18:05