Otimizando o seu Slackware pra valer com o SlackBuild

Você tem um Athlon-XP ou um Pentium-4 e os pacotes são otimizados para 486? Aqui vai um tutorial para usufruir de uma ferramenta que o Patrick disponibilizou para tornar seu Slackware tão otimizado quanto qualquer Gentoo.

[ Hits: 37.516 ]

Por: José Luiz Litvay em 11/10/2005


Alterando o SlackBuild



Escolha seu programa. Vou pegar um exemplo do Gimp. Entre na pasta /xap/gimp dos CDs do sources do Slackware ou baixe a pasta na internet.

Você vai encontrar os seguintes arquivos lá dentro:

gimp-2.2.8.tar.bz2 - 13,689 KB
gimp.SlackBuild - 2 KB
slack-desc

Para nós interessa apenas o gimp.SlackBuild. Abra-o com um editor de texto, como o xedit ou joe. Vai encontrar as primeiras linhas assim:

CWD=`pwd`
PKG=/tmp/package-gimp
rm -rf $PKG
mkdir -p $PKG

VERSION=2.2.8
ARCH=${ARCH:-i486}
BUILD=1

if [ "$ARCH" = "i386" ]; then
  SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
elif [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -mcpu=i686"
elif [ "$ARCH" = "s390" ]; then
  SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2"
fi
...

Altere para a sua configuração, colocando flags que lhe interessam. Não vou abrir um tópico de flags aqui. Usei deixei assim para o meu athlon-xp:

...
VERSION=2.2.8
ARCH=${ARCH:-i686}
BUILD=2

if [ "$ARCH" = "i386" ]; then
  SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
elif [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-Os -march=athlon-xp -msse -mmmx"
elif [ "$ARCH" = "s390" ]; then
  SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2"
fi
...

No resto não altere nada.

OBS: Tem SlackBuilds que não tem este formato, portanto vai ter que procurar no script onde estão os CFLAGS CXXFLAGS, ou O2 e estas coisas.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Alterando o SlackBuild
   3. Executando e conclusões
Outros artigos deste autor

Quebrando os mitos do software de código aberto

Otimizando o KDE com o Slackbuild

Benchmark de hardware e CFLAGS usando o ubench

Leitura recomendada

Configuração fácil de um servidor PPP

Apache 2.0 + PHP + PostgreSQL no Slackware

Servidor web nginx com PHP-FPM e memcached

Compartilhando arquivos e bookmarks do Firefox entre Linux e Windows

Como instalar o KDE 5 no Slackware Current

  
Comentários
[1] Comentário enviado por cvs em 11/10/2005 - 09:55h

muito bom, ja ta nos favoritos, vou aplica-lo em casa e aqui no trampo... parabens =)

[2] Comentário enviado por cvs em 11/10/2005 - 10:13h

Agora que terminei de ler... Tenho que ir fazendo isso, programa por pograma? Trabalhoso hein.. hehehe

E se eu quiser instalar tudo assim, desde o inicio, não tem jeito, só dessa maneira, compilando e atualizando?

[3] Comentário enviado por FDL em 11/10/2005 - 10:26h

Legal o artigo mas ae deve ser muito xato fazer isso com todos programas. Deve se gastar uma semana. Ae o gentoo ainda tem vantagem.

[4] Comentário enviado por rafael_r em 11/10/2005 - 10:45h

Você pode jogar as informações da compilação num arquivo de texto:
"sh -x gimp.SlackBuild &> teste.txt". Depois é só verificar no arquivo "teste.txt" e procurar os erros, todas as informações da compilação vão estar lá.

[5] Comentário enviado por fabio em 11/10/2005 - 10:50h

Não sei se há uma forma automatizada pra isso, mas não seria complicado criar um shell script que processasse todos os arquivos de SlackBuild dos CDs.

Deixo aqui minha sugestão para os slack-maníacos :)
Criem o script, enviem pro VOL e publiquem o link em forma de comentário aqui nesse artigo. Um busca no Google também pode resolver o problema, duvido que já não tenham feito isso antes.

[]'s,
Fábio

[6] Comentário enviado por andrack em 11/10/2005 - 11:58h

Virei um Gentoo-maníaco...

Mas dei uma pesquisada no Googlão, e achei esse projeto aqui:
http://freaknet.org/alpt/Emerde/

Nunca testei... mas pode render um artigo!

Vlw!

[7] Comentário enviado por hdoria em 11/10/2005 - 12:36h

Eu estou tentando usar o emerde aqui. Acho que ele cai bem como ferramenta para optimizar o slack.

O projeto é bem legal, porém ainda tem alguns bugs. Depois que eu conseguir deixar ele redondo eu faço um artigo pra explicar pra galera ae.

[]'s

[8] Comentário enviado por redhate em 10/11/2005 - 03:39h

so para acresentar....

Options That Control Optimization

These options control various sorts of optimizations.

Without any optimization option, the compiler's goal is to reduce the
cost of compilation and to make debugging produce the expected results.
Statements are independent: if you stop the program with a breakpoint
between statements, you can then assign a new value to any variable or
change the program counter to any other statement in the function and
get exactly the results you would expect from the source code.

Turning on optimization flags makes the compiler attempt to improve the
performance and/or code size at the expense of compilation time and
possibly the ability to debug the program.

Not all optimizations are controlled directly by a flag. Only opti-
mizations that have a flag are listed.

-O
-O1 Optimize. Optimizing compilation takes somewhat more time, and a
lot more memory for a large function.

With -O, the compiler tries to reduce code size and execution time,
without performing any optimizations that take a great deal of com-
pilation time.

-O turns on the following optimization flags: -fdefer-pop
-fmerge-constants -fthread-jumps -floop-optimize -fcrossjumping
-fif-conversion -fif-conversion2 -fdelayed-branch
-fguess-branch-probability -fcprop-registers

-O also turns on -fomit-frame-pointer on machines where doing so
does not interfere with debugging.

-O2 Optimize even more. GCC performs nearly all supported optimiza-
tions that do not involve a space-speed tradeoff. The compiler
does not perform loop unrolling or function inlining when you spec-
ify -O2. As compared to -O, this option increases both compilation
time and the performance of the generated code.

-O2 turns on all optimization flags specified by -O. It also turns
on the following optimization flags: -fforce-mem -foptimize-sib-
ling-calls -fstrength-reduce -fcse-follow-jumps -fcse-skip-blocks
-frerun-cse-after-loop -frerun-loop-opt -fgcse -fgcse-lm
-fgcse-sm -fdelete-null-pointer-checks -fexpensive-optimizations
-fregmove -fschedule-insns -fschedule-insns2 -fsched-interblock
-fsched-spec -fcaller-saves -fpeephole2 -freorder-blocks -fre-
order-functions -fstrict-aliasing -falign-functions -falign-jumps
-falign-loops -falign-labels

Please note the warning under -fgcse about invoking -O2 on programs
that use computed gotos.

-O3 Optimize yet more. -O3 turns on all optimizations specified by -O2
and also turns on the -finline-functions and -frename-registers
options.

-O0 Do not optimize. This is the default.

-Os Optimize for size. -Os enables all -O2 optimizations that do not
typically increase code size. It also performs further optimiza-
tions designed to reduce code size.

-Os disables the following optimization flags: -falign-functions
-falign-jumps -falign-loops -falign-labels -freorder-blocks
-fprefetch-loop-arrays

If you use multiple -O options, with or without level numbers, the
last such option is the one that is effective

Intel 386 and AMD x86-64 Options

These -m options are defined for the i386 and x86-64 family of comput-
ers:

-mcpu=cpu-type
Tune to cpu-type everything applicable about the generated code,
except for the ABI and the set of available instructions. The
choices for cpu-type are i386, i486, i586, i686, pentium, pentium-
mmx, pentiumpro, pentium2, pentium3, pentium4, prescott, nocona,
k6, k6-2, k6-3, athlon, athlon-tbird, athlon-4, athlon-xp, athlon-
mp, winchip-c6, winchip2 and c3.

While picking a specific cpu-type will schedule things appropri-
ately for that particular chip, the compiler will not generate any
code that does not run on the i386 without the -march=cpu-type
option being used. i586 is equivalent to pentium and i686 is
equivalent to pentiumpro. k6 and athlon are the AMD chips as
opposed to the Intel ones.

-march=cpu-type
Generate instructions for the machine type cpu-type. The choices
for cpu-type are the same as for -mcpu. Moreover, specifying
-march=cpu-type implies -mcpu=cpu-type.

-m386
-m486
-mpentium
-mpentiumpro
These options are synonyms for -mcpu=i386, -mcpu=i486, -mcpu=pen-
tium, and -mcpu=pentiumpro respectively. These synonyms are depre-
cated.

slkcflags se orientam pelo gcc entao.... sejam felizes..
qualquer coisa msn: [email protected]

abracos [']sss

[9] Comentário enviado por bones_pf em 19/09/2006 - 23:11h

Aeee galera, fiz um script em perl que altera e processa todos os SlackBuild's, deêm uma olhada ae:
http://www.vivaolinux.com.br/scripts/verScript.php?codigo=2265


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts