[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Preload



Em 04/05/07, Renato S. Yamane<renatoyamane@mandic.com.br> escreveu:
Pessoal,
no OpenSuSE há alguns scripts que permitem realizar o "preload" de
alguns aplicativos mais utilizados:
<http://en.opensuse.org/SUPER_preloading>

No Debian eu encontrei o aplicativo "preload", porém o mantenedor desse
pacote informou que esse aplicativo é auto-gerenciável, ou seja, se você
usa bastante o IceDove, então o preload já coloca o IceDove no sistema
de pré-carregamento.

Os scripts do OpenSuSE são gerenciados pelo próprio usuário, que define
o que deve ser carregado antecipadamente. Por exemplo, no meu caso eu
não gostaria de carregar o IceDove antecipadamente, pois só a minha
caixa de entrada possui mais de 400Mb e eu não gostaria de ocupar tudo
isso de RAM logo no boot.


Alguém conhece algum aplicativo equivalente ao PreLoad do OpenSuSE que
possa ser utilizado no Debian?

Eu gostaria de carregar antecipadamente o OpenOffice.Org e o IceWeasel.

Eu já conhecia o preload, mas nunca usei. Mas pelo link que vc mandou,
vi que é bem simples de fazer seu próprio script de preload....

Tipo algo como

strace -f -e trace=file /usr/bin/thunderbird 2> /tmp/tbird_strace.txt
grep -v ENOENT /tmp/tbird_strace.txt | grep \" | cut -f 2 -d\" | grep
-v ^/home/ | grep -v ^/proc/ | grep -v ^/dev/ | grep -v ^/tmp | grep
^/ | sort -u > /tmp/preload_tbird.txt
while read nome ; do cat $nome > /dev/null; done < /tmp/preload_tbird.txt

Claro, sempre tem algum ou outro arquivo que não precisa, etc.
Outra coisa que poderia ser feita é ordenar os arquivos não
alfabeticamente, mas sim por inode... imagino que poderia dar um ganho
significativo no tempo de preload.

Vamos ver se meu bash me permite tanto (na verdade, me empolguei e fiz
um programinha inteiro aqui)

o strace vc faz na mão, e a saída dele vc coloca no lugar q o script
gravaria... (veja linha comentada logo no começo).
Eu chamo esse script com o parâmetro "/usr/bin/oocalc" por exemplo

---------------------
#!/bin/bash

programa=`basename $1`

echo $programa

#strace -f -e trace=file $1 2> /tmp/${programa}_strace.txt

grep -v ENOENT /tmp/${programa}_strace.txt | grep -v suspended | grep
-v unfinished | grep -v denied | grep \" | cut -f 2 -d\" | grep -v
^/home/ | grep -v ^/proc/ | grep -v ^/dev/ | grep -v ^/tmp/  | grep ^/
| sort -u > /tmp/preload_${programa}.txt

echo 1 Nomes de arquivos coletados

#primeiro pegando os diretórios onde passaremos por lá.

# pega todos os diretórios
rm -f /tmp/dirs_preload_unsort.txt
while read nome ; do dirname $nome >> /tmp/dirs_preload_unsort.txt ;
done < /tmp/preload_${programa}.txt
echo 2 Diretórios identificados

# tira duplicadas
sort -u /tmp/dirs_preload_unsort.txt > /tmp/dirs_preload.txt
# pega o inode de cada um deles
rm -f /tmp/inode_dirs_preload.txt
while read nome ; do stat $nome | awk '/Inode/  { print $4 >>
"/tmp/inode_dirs_preload.txt" } ' ; done < /tmp/dirs_preload.txt
echo 3 Inode dos diretórios coletados

# gera a lista dos diretórios ordenada por inode
paste /tmp/inode_dirs_preload.txt /tmp/dirs_preload.txt | sort -n |
cut -f 2 > /tmp/dirs_preload_inode_sort.txt
echo 4 Lista de diretórios ordenada por inode pronta

# coloca no cache os diretórios
while read nome ; do ls $nome > /dev/null ; done <
/tmp/dirs_preload_inode_sort.txt

echo 5 Conteúdo dos diretórios em cache

rm -f /tmp/dirs_preload_unsort.txt /tmp/dirs_preload.txt
/tmp/inode_dirs_preload.txt /tmp/dirs_preload_inode_sort.txt



# Agora pegando os arquivos em si, com os inodes dos diretórios
devidamente em cache:
rm -f /tmp/inode_files_preload.txt
while read nome ; do stat $nome | awk '/Inode/  { print $4 >>
"/tmp/inode_files_preload.txt" } ' ; done <
/tmp/preload_${programa}.txt
echo 6 Inode dos arquivos coletados

# gera a lista dos diretórios ordenada por inode
paste /tmp/inode_files_preload.txt /tmp/preload_${programa}.txt | sort
-n  | cut -f 2 > /tmp/files_preload_inode_sort.txt
echo 7 Lista de arquivos ordenada por inode pronta

# coloca no cache os diretórios
while read nome ; do ls $nome > /dev/null ; done <
/tmp/files_preload_inode_sort.txt

echo 8 Conteúdo dos arquivos em cache

rm -f /tmp/inode_files_preload.txt /tmp/files_preload_inode_sort.txt

rm -f /tmp/preload_${programa}.txt


---------------------


Mas só vou poder testar direito isso quando reiniciar.... talvez
demore um pouco :-/

--
Marcos



Reply to: