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



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts