Fazer Script Shell utilizar 100% de CPU

13. Re: Fazer Script Shell utilizar 100% de CPU

Perfil removido
removido

(usa Nenhuma)

Enviado em 14/09/2010 - 15:57h

então, o script não parece estar completo certo? pois logo de inicio ja disse que a variavel contador e dias não existe, ai não tive como testar

mas uma coisa eu vi, pq vc está gerando tanto arquivo?

ex:
que tipo de informação vc armazena em

$caminho/passo3_op1

isso seria tipo um arquivo temporário?? ele é usado só no script??

pelo visto é muito uso do hd no script

posta o script inteiro, msm se tiver 500 linhas, não tem problema

eu ja postei script com mais de 300 linhas

então, o raid pode ajudar um pouco, mas um pouco msm, não vai fazer milagres

se agr está usando 15%, com raid pode ser que use uns 60% no maximo, salva todas as informações tomporárias em variaveis, pois ela fica na memoria e trabalha rapidamente com o processador

no final vc fez até conta com arquivos

expr `cat $caminho/visits_utma_op3.txt` + `cat $caminho/visits_ipbrowser_op3.txt` >> $caminho/Z_Visits.txt

na verdade eu não sei p que eles server, po isso não posso afirmar nada se tem que mudar ou não

mas existem formas de calculos do proprio bash

ex:
o mais rapido
echo $((1+1))

ou
segundo mais rapido
echo 1+1 | bc

expr é um poucomais lerdo, mas é logico que não é esse o problema, pois é alguns milezimos mais lerdo, é só um exemplo

a melhor coisa agr é postar o script inteiro, assim fica mais facil =)


  


15. Re: Fazer Script Shell utilizar 100% de CPU

Rodrigo Chaves
stilldre

(usa Funtoo)

Enviado em 14/09/2010 - 16:33h

os pacotes dos programas do slackware são otimizados para máquinas 386, portanto o kernel e os demais programas irão rodar à ciclos de 386... eu recomendo a instalação do gentoo para o tuning 100%... no entanto existem outras alternativas como archlinux ou debian ia64... abraço!


16. Re: Fazer Script Shell utilizar 100% de CPU

Luis Henrique Gonçalves
ricklgoncalves

(usa Slackware)

Enviado em 14/09/2010 - 16:44h

Estou enviando abaixo um outro script completo:

#!/bin/bash
clear
bash ../comum/logo_ivc.sh
funcao_bash="Script para ajustar as datas dos logs."
echo $funcao_bash
echo " "
echo "Onde esta script este sendo executado? (1 - Linux) (2 - Windows)"
read so
echo "Digite o numero de dias do mes a ser ajustado: "
read dias
echo "Digite o mês (mm): "
read mes
echo "Digite o ano (aaaa): "
read ano
clear
bash ../comum/logo_ivc.sh
bash ../comum/tabela_filiados.sh
echo "Digite o código do filiado: "
read cod

clear
bash ../comum/logo_ivc.sh

source ../comum/dados_filiados.sh

### S.O. LINUX OU WINDOWS - PATH'S ##############
if [ $so -eq 1 ] ; then #
caminho="/win-d/filiados/"$filiado #
fi #
if [ $so -eq 2 ] ; then #
caminho="/cygdrive/d/filiados/"$filiado #
fi #
#################################################

### VARIAVEIS AUXILIARES ####
numero=0 #
contador=1 #
#############################

### Case para pegar o nome do mês se for estilo Apache p_dois_pontos =2 #####
if [ $p_dois_pontos -eq 2 ] ; then #
source ../comum/mes_extenso.sh #
fi #
#############################################################################

echo $mes_texto

#### While para retirar de cada dia o que não pertence a ele ########################################
while [ $contador -le $dias ] ; do #
############################## #
if [ $contador -le 9 ]; then #
numero="0"$contador #
else #
numero=$contador #
fi #
# #
clear #
bash ../comum/logo_ivc.sh #
echo $funcao_bash #
echo " " #
echo "Dia: $contador - Fase 1 - Retirando de cada dia os registros que nao o pertencem." #
# #
if [ $p_dois_pontos -eq 1 ] ; then #
grep -vh "$ano-$mes-$numero " $caminho/ed$numero.log >> $caminho/fora_do_dia.log #
grep -h "$ano-$mes-$numero " $caminho/ed$numero.log >> $caminho/ed_$numero.log #
fi #
if [ $p_dois_pontos -eq 2 ] ; then #
grep -vh "\[$numero\/$mes_texto\/$ano" $caminho/ed$numero.log >> $caminho/fora_do_dia.log #
grep -h "\[$numero\/$mes_texto\/$ano" $caminho/ed$numero.log >> $caminho/ed_$numero.log #
fi #
############################## #
#rm $caminho/ed$numero.log #
############################## #
let "contador+= 1" #
done #
#####################################################################################################

### VARIAVEIS AUXILIARES ####
numero=0 #
contador=2 #
#############################

#### While para distribuir os que estavam fora do dia para cada dia que pertencem ###################
while [ $contador -le $dias ] ; do #
############################## #
if [ $contador -le 9 ]; then #
numero="0"$contador #
else #
numero=$contador #
fi #
# #
clear #
bash ../comum/logo_ivc.sh #
echo $funcao_bash #
echo " " #
echo "Dia: $contador - Fase 2 - Distribuindo dias que estavam fora." #
# #
if [ $p_dois_pontos -eq 1 ] ; then #
grep -h "$ano-$mes-$numero " $caminho/fora_do_dia.log >> $caminho/ed_$numero.log #
fi #
if [ $p_dois_pontos -eq 2 ] ; then #
grep -h "\[$numero\/$mes_texto\/$ano" $caminho/fora_do_dia.log >> $caminho/ed_$numero.log #
fi #
############################## #
let "contador+= 1" #
done #
############################## #
rm $caminho/fora_do_dia.log #
############################## #
#
#####################################################################################################

clear
bash ../comum/logo_ivc.sh
echo " "
echo $funcao_bash
echo " "
echo "Filiado: $filiado"
echo "Concluido!"


17. Re: Fazer Script Shell utilizar 100% de CPU

Luis Henrique Gonçalves
ricklgoncalves

(usa Slackware)

Enviado em 14/09/2010 - 16:46h

Ola stilldre

Obrigado pelo apoio.
Como sou iniciante em Linux poderia ser mais detalhista sobre este gentoo para tunning 100% e archlinux?
O debian ia64 que você falou é uma distribuição do debian?

Abraços.


18. Re: Fazer Script Shell utilizar 100% de CPU

Perfil removido
removido

(usa Nenhuma)

Enviado em 14/09/2010 - 17:03h

que tipo de otimização está falando?? se for flags, pode esquecer, flags é igual aerofólio de papelão, testes com o gentoo otimizado vs ubuntu, até o ubuntu ganhou, quando vc compila o kernel ou algum programa, na própria Makefile ja vem com as flags, as flags que vc modificar ou acrecentar só vai atrapalhar, tem programa que trabalha melhor com tal flag, e outras não, definir uma flag padrão no make.conf é loucura

isso é tudo pisicológico

esse assunto foi muito discutido no forum do FreeBSD

ainda mais sistemas BSD ou gentoo que usa ports, os proprios scripts ja vem com a melhor otimização para ter o melhor desempenho + estabilidade, não tente adivinhar a sabedoria dos próprios criadores, eles fazem isso a muito tempo e com certeza isso ja foi discutido muitas vezes e não só teoricamente e sim nos testes

se quiser recompilar o kernel com alguma outra flag, blz

quem sabe consiga 1% a mais no desempenho, e 5% a menos nos programas

eu ja usei gentoo e não vi mudanças, eles só ve diferença quando fazem testes e compara os numeros, e isso é se melhorar

ja me iludi muito com flag, até começar a ter problemas, hj instalo os programas pelo ports do FreeBSD, comparado a antigamente, não faz diferença "tirando os problemas"

pelo menos no FreeBSD cada ports tem suas otimizações personalizadas para tal programa, até no kernel, no handbook oficial do FreeBSD fala sobre isso, a unica coisa que eles aconselha é na hora do make buildworld usar o -jX , ve que isso nem flag é, mas é o maximo que eles recomendam

no gentoo, ai ja não posso garantir, pois mechi muito pouco com ele, e não vi diferença

=============================

o problema no script é o uso execivo de HD, e só pode ser mudado se tiver algum jeito, se os arquivos forem algum tipo de logs salvos no dia, ai fica dificil, por isso que eu ja pedi o script


19. Re: Fazer Script Shell utilizar 100% de CPU

Luis Henrique Gonçalves
ricklgoncalves

(usa Slackware)

Enviado em 14/09/2010 - 17:15h

Ola douglas,

Esse script que te mandei tambem demora bastante rodando e nao usa nem 15% do processamento, o que precisamos é sempre o arquivo final, esses gerados no meio do caminho são pra processamento, o problema é que quando tentamos utilizar for `cat ...` por exemplo fica muito lento! Mas essa seria a melhor maneira para carregar os dados em variaveis nao seria?

Se puder iniciar uma comunicação por e-mail. Vi que tem um conhecimento legal. Talvez possamos combinar uma consultoria.

Abraços.


20. Re: Fazer Script Shell utilizar 100% de CPU

Rodrigo Chaves
stilldre

(usa Funtoo)

Enviado em 14/09/2010 - 18:10h

gentoo faz sim a diferença... porém só se nota em máquinas com recursos elevados como 4GB ou mais de memória e processamento em múltiplos núcleos de processador... em pcs comuns realmente a diferença não é muito grande, e eu ainda uso o ubuntu em dual boot com o funtoo em minha máquina mas obtive um suporte maior e melhor ao meu hardware no funtoo... o ubuntu aqui roda extremamente lento em relação ao funtoo... creio que as experiências variam em função do ambiente... mas otimizar os pacotes melhora o desempenho sim...


21. Re: Fazer Script Shell utilizar 100% de CPU

Luis Henrique Gonçalves
ricklgoncalves

(usa Slackware)

Enviado em 14/09/2010 - 19:29h

Olá pessoa,

estava fazendo alguns testes com o cut que sem o RAID 0 estava levando 4 minutos em média e usando durante o processo cerca de 15% de processamento.
Conseguimos configurar o RAID 0, agora o mesmo cut demorou 2:27 minutos e usou durante o processo 10% de processamento.
Ou seja, consegui ganho de performance mais não consegui fazer com que utilizasse mais processamento.

Aberto a sugestões. Desculpem a insistência!

Abraços.


22. Re: Fazer Script Shell utilizar 100% de CPU

Rafael Umbelino
tlaloc

(usa Gentoo)

Enviado em 14/09/2010 - 20:39h

Por favor, posta quais sistemas de arquivos você está usando, e qual o esquema de particionamento. Se você estiver usando uma LVM, poste também.


23. Re: Fazer Script Shell utilizar 100% de CPU

Luis Henrique Gonçalves
ricklgoncalves

(usa Slackware)

Enviado em 14/09/2010 - 21:15h

Estou usando ext3 amigo com 2 hds sata de 1,5 TB em RAID 0.


24. Re: Fazer Script Shell utilizar 100% de CPU

Thiago J. Campos
tjcampos

(usa Arch Linux)

Enviado em 14/09/2010 - 22:23h

Olá amigo,

Posso estar enganado, mas este comportamento é normal. Você deve estar rodando comandos que não são otimizados para trabalhar com múltiplos cores (caso comum), como no no i7 temos 8 núcleos visíveis ao sistema (4 núcleos em HT) o caso comum é que seu script use no máximo um núcleo (100% / 8 = 12,5%!).

Para aproveitar melhor a cpu só utilizando programas que rodem em múltiplas threads ou rodando comandos em paralelo, uma opção é rodá-los em background e pegar a saída em named pipes ou arquivos.

Outra forma é tentar rodar os scripts que podem rodar em paralelo ao mesmo tempo, o tempo de execução não deve aumentar muito individualmente e no todo você deve conseguir um ganho de desempenho considerável.

Abraços,
Thiago



01 02 03