1) Introdução:
Quando iniciamos, "damos Boot" no
Linux, o kernel é carregado para que possamos usá-lo.
Em seguida ao kernel, são iniciados diversos "processos ou serviços" que reconhecem e controlam o teclado, o CD-ROM, a rede, as portas USB, impressoras etc. Exemplos desses processos são: o HAL, o DBUS, drivemount, ntp, Keymap etc.
O iniciar desses processos pode ser visto se observarmos o boot em modo "verbose".
Finalmente se iniciam o XDM e o KDM (no KDE) ou GDM (no GNOME) e então veremos a tela de login para entrarmos na sessão.
Alguns desses processos não cessam após o boot e continuam ativos e residentes na memória RAM para serem utilizados. Esses serviços são mantidos através de pequenos aplicativos, chamados "Daemons", como ntpd, notification-applets, dbus-daemon, dbus-lauch, nm-applet, hdparm etc.
Quando o número desses serviços é muito grande e a memória RAM da máquina não é tão grande, o micro pode ficar lento. Uma maneira de controlarmos isso é removendo a carga dos serviços desnecessários ou não essenciais, desativando-os.
Isto porém, exige conhecimento. É preciso saber quais são os serviços ou tipos de serviços que podem mesmo ser desativados, ou corremos risco de travar o sistema.
No entanto existe um pequeno aplicativo, desenvolvido (originalmente para Solaris) pela Cornell University, que controla os serviços e processos dos sistemas operacionais tipo Unix ou derivados. Trata-se do VeryNice:
Ele atua fechando ou abrindo, "matando" ou "adormecendo","acordando" ou recarregando os diversos serviços e processos, e/ou regulando a memória RAM utilizada, tudo automaticamente em "Background", sem intervenção humana, configuração e nem interface gráfica.
2) Instalação:
Em meus Linux, tipo Gentoo ou Sabayon, ele foi facilmente encontrado nos repositórios e instalado:
sudo equo install verynice
$ sudo emerge -av verynice
Deve existir para outras distribuições também. Instale-o conforme o recomendado para a sua distro. Se não achar, ele pode ser baixado na forma de Fonte ou empacotado em formato RPM, a partir do seguinte endereço:
3) Diretórios de localização e uso:
Aqui neste ponto, a documentação não é esclarecedora, talvez pela diferente estrutura da árvore de diretórios dos sistemas Solaris.
Diz-se que ele poderia se instalar (PREFIX) em /usr, ou em /usr/bin, ou ainda em /usr/local/sbin, e ainda que ele seria iniciado como "Daemon" a partir do próximo boot. Desejando iniciá-lo imediatamente, a mesma documentação recomenda a execução destes comandos:
sudo /etc/rc.d/init.d/verynice.init start (em outras distros, pode ser /etc/init.d/verynice.init start)
Caso não fosse encontrado o pacote após instalação, poder-se-ia executar estes comandos:
cp verynice.init /etc/rc.d/init.d
$ sudo chkconfig --add verynice.init
$ sudo chkconfig verynice.init on
No meu caso, porém foi bastante mais simples. O programa iniciou quando dei o comando direto, como mostrado abaixo:
sudo verynice &
Senha:
verynice: starting up
Para garantir que o pacote iniciaria no próximo boot, fiz o comando:
sudo rcupdate add verynice default
Com isto ele foi adicionado ao /etc/init.d para execução no boot.
Após a instalação o binário estava localizado como serviço em /usr/sbin/verynice.bin e o arquivo de configuração em /etc/verynice.conf, como pode ser visto abaixo. Apesar do programa atuar automaticamente, ele pode ser controlado pela edição desse arquivo:
# verynice.conf -- configuration file
#
# declare root immune (root owned processes will never be adjusted)
immuneuser root
immuneuser bin
immuneuser daemon
immuneuser adm
# declare immune program, matlab in this case. If the line is uncommented,
# any program with "matlab" in it's path will be immune to renicing.
# The quoted quantity must match a substring of the symbolic link in
# /proc/{pid}/exe
# if there is a leading slash, the match must be precise
#immuneexe "matlab"
# declare "bad" program -- automatically niced to batch job level. if want, uncomment
#badexe "mathematica"
# declare "hungry" program -- always assumed to have 100% cpu usage,
# regardless of actual usage. For programs
# which tend to have lots of little subprocesses
# with short lifetimes to do their dirty work
# (such as "make")
# (we use leading slashes and various possible paths so that we will never
# accidentally give this flag to another program)
# Note that it IS possible to set both the "hungry" and "runaway" flags
# simultaneously (process will always be killed after a certain amount of time)
hungryexe "/usr/bin/make"
hungryexe "/usr/bin/gmake"
hungryexe "/bin/make"
hungryexe "/bin/gmake"
hungryexe "/make"
hungryexe "/gmake"
hungryexe "/gnumake"
hungryexe "/usr/local/bin/make"
hungryexe "/usr/local/bin/gmake"
hungryexe "/usr/local/bin/gnumake"
# declare "good" program -- automatically negatively reniced to
# multimedia job level. goodexe "xmms" reduces the chances of skipping when
# playing mp3's
# Also we do this for "xanim" and "realplay"
goodexe "xmms"
goodexe "xanim"
goodexe "realplay"
goodexe "rvplayer"
# reduce your probability of turning out coasters from your CD drive
goodexe "cdrecord"
goodexe "xcdroast"
# Making the X server a "good" program is usually a good idea too
# -- X is essentially a multimedia app. These next few lines will
# work even if root is declared an "immune" user and X is run as root,
# because "goodexe"'s specified in verynice.conf are exceptions to
# the "immuneuser" rule
# (these are appropriate for RedHat Linux, with XFree 3.x -- the appropriate
# file might be different on your system. To find the proper name, do a PS
# to find the X pid, then ls -l /proc/{pid}/exe
goodexe "/etc/X11/X"
goodexe "/usr/X11R6/bin/XF86_SVGA"
goodexe "/usr/X11R6/bin/XF86_Mono"
goodexe "/usr/X11R6/bin/XF86_VGA16"
goodexe "/usr/X11R6/bin/XF86_S3"
goodexe "/usr/X11R6/bin/XF86_Mach32"
goodexe "/usr/X11R6/bin/XF86_Mach64"
goodexe "/usr/X11R6/bin/XF86_Mach8"
goodexe "/usr/X11R6/bin/XF86_8514"
goodexe "/usr/X11R6/bin/XF86_P9000"
goodexe "/usr/X11R6/bin/XF86_AGX"
goodexe "/usr/X11R6/bin/XF86_W32"
# These are for XFree86 4.0, but haven't been tested
goodexe "/usr/X11R6/bin/XFree86"
goodexe "/usr/X11R6/bin/X"
# declare "potential runaway" program. potential runaways can go to a lower
# priority (reniced all the way to +20), and if they exceed that will be
# killed. Other processes are never killed. This is good for netscape and
# any other programs with a tendency to start eating the CPU for no reason.
runawayexe "netscape"
runawayexe "Fvwm"
runawayexe "xfig"
runawayexe "gimp"
# Sample additional parameters, specifying the built in defaults
#notnice -4
#batchjob 18
#runaway 20
#kill 22
#badkarmarate .0167
#badkarmarestorationrate .0167
#periodicity 60
#rereadcfgperiodicity 60
Conclusão:
O importante é a eficiência do pacote.
Principalmente no Semprom 1800, com apenas 512 megas de RAM, que tenho na FCFRP-USP, onde trabalho, o computador ficou bem mas rápido e no monitoramento (GNOME System Monitor) o uso da CPU caiu cerca de 30-70 %.