Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
Guia de Gerenciamento de Energia
(Beta) Gerenciando consumo de energia no Red Hat Enterprise Linux 6
Edição 0.2
Red Hat Inc.
Don Domingo
Resumo
Capítulo 1. Visão Geral
1.1. Importância do Gerenciamento de Energia
- reduzindo consumo de energia em geral para economizar energia
- redução de aquecimento para servidores e centrais de computadores
- custos secundários reduzidos, incluindo refrigeramento, espaço, cabos, geradores, e uninterruptible power supplies (UPS).
- tempo de vida de bateria estendido para laptops.
- resultado de dióxido de carbono mais baixo
- atendendo às regulamentações do governo ou requerimentos legais a respeito do Green IT, por exemplo Energy Star
- atendendo às regras da empresa para novos sistemas
- P: Eu preciso otimizar?
- P: Quanto eu preciso otimizar?
- P: A otimização irá reduzir o desempenho do sistema até um ponto aceitável?
- P: O tempo e recursos gastos na otimização do sistema compensam o ganho alcançado?
1.2. Básicos do Gerenciamento de Energia
O kernel Red Hat Enterprise Linux 5 usado em um timer periódico para cada CPU. Este timer evita que a CPU se torne realmente ociosa, pois ele requer que a CPU processe cada evento de timer (o qual aconteceria a cada milisegundos, dependendo da configuração), não importando se o processo estava rodando ou não. Uma grande parte do gerenciamento de energia efetivo envolve a redução da frequência na qual as ativações de CPU são realizadas.
Este é especialmente verdadeiro para dispositivos que possuem partes que movem ( por exemplo, discos rígidos). Além disso, alguns aplicativos podem deixar um dispositivo sem uso mas ativado "aberto" quando isto acontecer, o kernel assume que o dispositivo está em uso, o qual pode evitar que o dispositivo vá para estado de economia de energia.
Na maioria dos casos, no entanto, isto depende do hardware moderno e configuração do BIOS correta. Componentes de sistema mais antigos, geralmente não possuem suporte para alguns dos novos recursos que podemos agora suportar no Red Hat Enterprise Linux 6.Certifique-se de que está usando o firmware oficial mais recente para seus sistemas e que nas seções de gerenciamento de energia ou configuração de dispositivo do BIOS, os recursos de gerenciamento de energia estejam habilitados. Alguns recursos a checar incluem:
- SpeedStep
- PowerNow!
- Cool'n'Quiet
- ACPI (C state)
- Smart
CPUs modernas juntas com Advanced Configuration and Power Interface (ACPI) fornecem estados de energia diferentes. Os três estados diferentes são:
- Espera (C-states)
- Frequência (P-states)
- Resultado de aquecimento (T-states or "thermal states")
O mais óbvio que isto possa parecer, uma das melhores maneiras de economizar energia é desligando os sistemas. Por exemplo, sua empresa pode desenvolver uma cultura corporativa focada em consciência "green IT" (TI verde) com regras de desligar máquinas durante o intervalo do almoço ou quando você for pra casa. Você também poderá consolidar diversos servidores físicos em um servidor maior e virtualizá-los usando a tecnologia de virtualização que enviamos junto com o Red Hat Enterprise Linux 6.
Capítulo 2. Ferramentas de Gerenciamento de Energia e análise
2.1. Visão geral de auditoria e análise
2.2. PowerTOP
yum install powertop
powertop
aumentar o tempo de gravação de retorno suja do VM
, and the key (W) para pressionar para aceitar as sugestões.
C4
sendo mais alta do que C3
) e é um bom indicador de como o sistema está bem ajustado de acordo com o uso da CPU. Seu objetivo deve ser a residência de 90% ou mais em estado C ou P mais alto enquanto o sistema estiver em ocioso.
<
>
) então os ativamentos serão associados geralmente ao driver específico que causa isto. O ajuste de drivers geralmente requer mudanças de kernel, que vão além do escopo deste documento. No entanto, os processos da área de usuário que enviam ativamentos, são gerenciados com maior facilidade. Primeiro, identifique se este serviço ou aplicativo deve ser executado neste sistema. Caso não deva, simplesmente desative-o. Para desligar um serviço permanentemente, execute:
chkconfig servicename off
ps -awux | grep componentname
strace -p processid
aumentar o tempo de gravação de retorno suja do VM
, and the key (W) para pressionar para aceitar as sugestões. Estas mudanças serão ativadas somente na próxima reinicialização. Para ajudá-lo a efetivar de forma permanente estas mudanças, o PowerTOP exibe o comando exato que ele executa para realziar esta otimização. Adicione o comando ao seu arquivo /etc/rc.local
com seu editor de texto preferido para que tome efeito todas as vezes que seu computador iniciar.
Figura 2.1. PowerTOP em Operação
2.3. Diskdevstat e netdevstat
yum install systemtap tuned-utils kernel-debuginfo
diskdevstat
netdevstat
diskdevstat update_interval total_duration display_histogram
netdevstat update_interval total_duration display_histogram
- update_interval
- O tempo em segundos entre atualizações da exibição. Padrão
5
- total_duration
- O tempo em segundos para a execução total. Padrão:
86400
(1 dia) - display_histogram
- Sinalização se o histograma para todos os dados colecionados no final da execução.
PID UID DEV WRITE_CNT WRITE_MIN WRITE_MAX WRITE_AVG READ_CNT READ_MIN READ_MAX READ_AVG COMMAND 2789 2903 sda1 854 0.000 120.000 39.836 0 0.000 0.000 0.000 plasma 15494 0 sda1 0 0.000 0.000 0.000 758 0.000 0.012 0.000 0logwatch 15520 0 sda1 0 0.000 0.000 0.000 140 0.000 0.009 0.000 perl 15549 0 sda1 0 0.000 0.000 0.000 140 0.000 0.009 0.000 perl 15585 0 sda1 0 0.000 0.000 0.000 108 0.001 0.002 0.000 perl 2573 0 sda1 63 0.033 3600.015 515.226 0 0.000 0.000 0.000 auditd 15429 0 sda1 0 0.000 0.000 0.000 62 0.009 0.009 0.000 crond 15379 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 15473 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 15415 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 15433 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 15425 0 sda1 0 0.000 0.000 0.000 62 0.007 0.007 0.000 crond 15375 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 15477 0 sda1 0 0.000 0.000 0.000 62 0.007 0.007 0.000 crond 15469 0 sda1 0 0.000 0.000 0.000 62 0.007 0.007 0.000 crond 15419 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 15481 0 sda1 0 0.000 0.000 0.000 61 0.000 0.001 0.000 crond 15355 0 sda1 0 0.000 0.000 0.000 37 0.000 0.014 0.001 laptop_mode 2153 0 sda1 26 0.003 3600.029 1290.730 0 0.000 0.000 0.000 rsyslogd 15575 0 sda1 0 0.000 0.000 0.000 16 0.000 0.000 0.000 cat 15581 0 sda1 0 0.000 0.000 0.000 12 0.001 0.002 0.000 perl 15582 0 sda1 0 0.000 0.000 0.000 12 0.001 0.002 0.000 perl 15579 0 sda1 0 0.000 0.000 0.000 12 0.000 0.001 0.000 perl 15580 0 sda1 0 0.000 0.000 0.000 12 0.001 0.001 0.000 perl 15354 0 sda1 0 0.000 0.000 0.000 12 0.000 0.170 0.014 sh 15584 0 sda1 0 0.000 0.000 0.000 12 0.001 0.002 0.000 perl 15548 0 sda1 0 0.000 0.000 0.000 12 0.001 0.014 0.001 perl 15577 0 sda1 0 0.000 0.000 0.000 12 0.001 0.003 0.000 perl 15519 0 sda1 0 0.000 0.000 0.000 12 0.001 0.005 0.000 perl 15578 0 sda1 0 0.000 0.000 0.000 12 0.001 0.001 0.000 perl 15583 0 sda1 0 0.000 0.000 0.000 12 0.001 0.001 0.000 perl 15547 0 sda1 0 0.000 0.000 0.000 11 0.000 0.002 0.000 perl 15576 0 sda1 0 0.000 0.000 0.000 11 0.001 0.001 0.000 perl 15518 0 sda1 0 0.000 0.000 0.000 11 0.000 0.001 0.000 perl 15354 0 sda1 0 0.000 0.000 0.000 10 0.053 0.053 0.005 lm_lid.sh
- PID
- O ID do processo do aplicativo
- UID
- o ID de usuário sob o qual o aplicativo está em execução
- DEV
- o dispositivo no qual a E/S aconteceu
- WRITE_CNT
- o número total de operações de gravação
- WRITE_MIN
- o tempo mínimo tomado para 2 gravações consecutivas (em segundos)
- WRITE_MAX
- o tempo mais longo gasto para duas gravações consecutivas (em segundos)
- WRITE_AVG
- a média de tempo gasta para duas gravações consecutivas (em segundos)
- READ_CNT
- o número total de operações de leitura
- READ_MIN
- o tempo mais curto gasto para duas leituras consecutivas (em segundos)
- READ_MAX
- o tempo mais long gasto para duas leituras consecutivas (em segundos)
- READ_AVG
- a média de tempo gasta para duas leituras consecutivas (em segundos)
- COMMAND
- o nome do processo
PID UID DEV WRITE_CNT WRITE_MIN WRITE_MAX WRITE_AVG READ_CNT READ_MIN READ_MAX READ_AVG COMMAND 2789 2903 sda1 854 0.000 120.000 39.836 0 0.000 0.000 0.000 plasma 2573 0 sda1 63 0.033 3600.015 515.226 0 0.000 0.000 0.000 auditd 2153 0 sda1 26 0.003 3600.029 1290.730 0 0.000 0.000 0.000 rsyslogd
WRITE_CNT
maior do que 0
, o que significa que eles realizam alguma forma de gravação durante a medida. Destes, o plasma era o ofendedor pior pela principal razão: ele realizava a maior parte das operações de gravação, e é claro, a média de tempo entre gravações era a mais baixa. O Plasma seria então o melhor candidado a investigar se você estivesse preocupado com os aplicativos de energia ineficiente.
strace -p 2789
strace
continha um modelo repetitivo a cada 45 segundos que abria o arquivo cache do ícone KDE do usuário para gravação seguido de um fechamento imediato do arquivo novamente. Isto levava à uma gravação física necessária para o disco rígico, pois o metadado do arquivo (principalmente, o tempo de modificação) tinha sido mudado. O reparo final era para evitar aquelas chamadas desnecessárias quando não ocorria nenhuma atualização nos ícones.
2.4. Kit de Ferramenta de Vida da Bateria
-a
.
office
escreve um texto, corrige, e faz a mesma coisa para uma planilha. Ao rodar um BLTK combinado com um PowerTOP ou qualquer uma das outras ferramentas de análises que você testa se as otimizações que você realizou possuem um efeito quando uma máquina está em uso ao invés de somente em modo ocioso. Como você pode rodar exatamente a mesma carga de trabalho diversas vezes para configurações diferentes, você pode comparar resultados para configurações diferentes.
yum install bltk
bltk workload options
idle
por 120 segundos:
bltk -I -T 120
-I
,--idle
- sistema está ocioso, para usar como uma base para comparação com outras cargas de trabalho.
-R
,--reader
- simula documentos de leitura (por padrão com o Firefox)
-P
,--player
- simula visualizar arquivos de multimídia a partir de um CD ou DVD (por padrão com o mplayer)
-O
,--office
- simula a edição de documentos com o conjunto OpenOffice.org
-a
,--ac-ignore
- ignore se a energia AC estiver disponível (necessário para o uso de desktop)
-T number_of_seconds
,--time number_of_seconds
- o tempo (em segundos) sob o qual o teste é rodado; use esta opção com a carga de trabalho
idle
-F filename
,--file filename
- especifica um arquivo a ser usado por uma carga de trabalho específica, por exemplo, um arquivo para a carga de trabalho
player
para tocar ao invés de acessar o drive de CD ou DVD. -W application
,--prog application
- especifica um aplicativo a ser usado por uma carga de trabalho específica, por exemplo, um browser ao invés de um Firefox para a carga de trabalho do
reader
bltk
/etc/bltk.conf
por padrão, ~/.bltk/workload.results.number/
. Por exemplo, o diretório ~/.bltk/reader.results.002/
mantém os resultados do terceiro teste com a carga de trabalho reader
(o primeiro teste não é numerado). Os resultados estão espalhados por diversos arquivos texto. Para condensionar estes resultados em um formato que seja fácil de ler, rode:
bltk_report path_to_results_directory
Report
no diretório de resultados. Para visualizar os resultados em um emulador de terminal, use a opção -o
:
bltk_report -o path_to_results_directory
2.5. Tuned e ktune
yum install tuned
/etc/tuned.conf
e ativa o perfil de padrão.
service tuned start
chkconfig tuned on
-d
,--daemon
- iniciar tuned como um daemon ao invés de permanente.
-c
,--conffile
- use o arquivo de configuração com o nome e caminho especificado, por exemplo,
--conffile=/etc/tuned2.conf
. O padrão é/etc/tuned.conf
. -D
,--debug
- use o nível mais alto de loggin
2.5.1. O arquivo tuned.conf
tuned.conf
contém configurações do tuned. Por padrão, está localizado em /etc/tuned.conf
, mas você pode especificar um nome diferente e local iniciando o tuned com a opção --conffile
.
[main]
que define os parâmetros gerais para tuned. O arquivo então contém uma seção para cada plugin.
[main]
contém as seguintes opções:
interval
- o intervalo no qual o tuned deve monitorar e ajustar o sistema, em segundos. O valor padrão é
10
. verbose
- especifica se o resultado deve ser verbosidade. O valor padrão é
False
. logging
- especifica a prioridade mínima a ser autenticada. Em order decrescente, valores aceitáveis são:
critical
,error
,warning
,info
, edebug
. O valor padrão éinfo
. logging_disable
- especifica prioridade máxima de mensagens a serem autenticadas; qualquer mensagem com esta prioridade ou menor, não será autenticada. Em ordem decrescente, os valores aceitáveis são:
critical
,error
,warning
,info
, edebug
. O valornotset
desabilita esta opção.
[CPUTuning]
. Cada plugin possui suas próprias opções, mas o seguinte se aplica à todos os plugins:
enabled
- especifica se o plugin está ativao ou não. O valor padrão é
True
. verbose
- especifica se o resultado deve ser verbosidade. Se não for ajustado para este plugin, o valor é herdado de
[main]
. logging
- especifica a prioridade mínima de mensagens a serem autenticadas. Se não for ajustado para este plugin, o valor é herdado de
[main]
.
[main] interval=10 pidfile=/var/run/tuned.pid logging=info logging_disable=notset # Disk monitoring section [DiskMonitor] enabled=True logging=debug # Disk tuning section [DiskTuning] enabled=True hdparm=False alpm=False logging=debug # Net monitoring section [NetMonitor] enabled=True logging=debug # Net tuning section [NetTuning] enabled=True logging=debug # CPU monitoring section [CPUMonitor] # Enabled or disable the plugin. Default is True. Any other value # disables it. enabled=True # CPU tuning section [CPUTuning] # Enabled or disable the plugin. Default is True. Any other value # disables it. enabled=True
2.5.2. Tuned-adm
tuned-adm
, mas você mesmo também pode criar, modificar ou remover perfis.
tuned-adm list
tuned-adm active
tuned-adm profile profile_name
tuned-adm profile server-powersave
tuned-adm off
default
será ativado. O Red Hat Enterprise Linux 6 também inclui os seguintes perfis pré-definidos:
- padrão
- o perfil de economia de energia padrão. Ele causa meno impacto na economia energia de perfis disponíveis e somente habilita a CPU e plugin de disco do tuned.
- desktop-powersave
- o perfil de economia de energia direcionado por sistemas de desktop. Habilita a economia de energia ALPM para adaptadores de host SATA (consulte o Seção 3.6, “Aggressive Link Power Management (Gerenciamento de Energia de Conexão Agressiva)”) assim como a CPU, Ethernet, e plugins de disco de tuned.
- server-powersave
- o perfil de economia de energia direcionado ao sistema de servidor. Habilita a economia de energia ALPM para adaptadores de host SATA, desabilita poll de CD-ROM através do HAL (consulte a página man do hal-disable-polling ) e ativa os plugins de CPU e disco do tuned.
- laptop-ac-powersave
- um perfil de economia de energia de médio impacto direcionado à laptops rodando em AC. Habilita a economia de energia do ALPM para adaptadores de host SATA, economia de energia do WiFi, como também a CPU, Ethernet e plugin de disco do tuned.
- laptop-battery-powersave
- Um perfil de economia de energia de alto impacto em laptops funcionando a bateria. Ele ativa todos os mecanismos de economia de energia desde perfis anteriores e também habilita o agendador de economia de energia de núcleos múltiplos para sistemas de ativamento baixo e certifica-se de que o governador ondemand está ativo e que o AC97 de economia de energia audio está habilitado. Você pode usar este perfil para economizar o máximo de quantia de energia de qualquer tipo de sistema, e não somente de laptops rodando em energia de bateria. O benefício desde perfil é um impacto notável no desempenho, especialmente latência do disco e rede E/S.
- throughput-performance
- um perfil de servidor para ajuste de desempenho total típico. Ele desabilita o tuned e os mecanismos de economia de energia do ktune, habilita a configuração do sysctl que aprimora o desempenho total de seu disco e rede de E/S, e muda para o agendador de deadline.
- latency-performance
- um perfil de servidor para um ajuste de desempenho de latência típica. Ele desabilita o tuned e ktuneas máquinas de economia de energia e habilita as configurações do sysctl, a qual melhora o desempenho de latência de sua E/S de rede.
/etc/tune-profiles
. Portanto o /etc/tune-profiles/desktop-powersave
contém todos os arquivos necessários e configurações para este perfil. Cada um destes diretórios contém até quatro arquivos:
tuned.conf
- a configuração para o serviço tuned a ser ativado para este perfil.
sysctl.ktune
- A configuração do sysctl usado por ktune. O formato é idêntico ao arquivo
/etc/sysconfig/sysctl
(consulte o sysctl e páginas man do sysctl.conf). ktune.sysconfig
- o arquivo de configuração do ktune, geralmente
/etc/sysconfig/ktune
. ktune.sh
- um script de shell estilo init usado pelo serviço ktune que pode rodar comandos específicos durante a inicialização do sistema para ajustar o sistema.
laptop-battery-powersave
irá conter um conjunto rico de ajustes e é portanto um ponto de início bastante útil. Simplesmente copie todo o diretório para o nome do novo perfil como este:
cp -a /etc/tune-profiles/laptop-battery-powersave/ /etc/tune-profiles/myprofile
# Disable HAL polling of CDROMS # for i in /dev/scd*; do hal-disable-polling --device $i; done > /dev/null 2>&1
2.6. DeviceKit-power e devkit-power
devkit-power
e as seguintes opções:
--enumerate
,-e
- exibe um caminho do objeto para cada dispositivo de energia no sistema, por exemplo:
/org/freedesktop/DeviceKit/power/devices/line_power_AC
/org/freedesktop/UPower/DeviceKit/power/battery_BAT0
--dump
,-d
- exibe os parâmetros para todos os dispositivos de energia no sistema.
--wakeups
,-w
- exibe o ativamento da CPU no sistema.
--monitor
,-m
- monitora o sistema para mudanças nos dispositivos de energia, por exemplo, a conexão e disconexão de uma fonte de energia a cabo ou desconexão de uma bateria. Pressione Ctrl+C para parar o monitoramento do sistema.
--monitor-detail
- monitora o sistema para mudanças nos dispositivos de energia, por exemplo, a conexão e desconexão de uma fonte de energia a cabo, ou desconexão de uma bateria. A opção
--monitor-detail
apresenta mais detalhes do que a opção--monitor
. Pressione Ctrl+C para parar o monitoramento do sistema. --show-info object_path
,-i object_path
- exibe todas as informações disponíveis para um caminho do objeto específico. Por exemplo, para obter informações sobre uma bateria em seu sistema representada pelo caminho do objeto
/org/freedesktop/UPower/DeviceKit/power/battery_BAT0
, execute:devkit-power -i /org/freedesktop/UPower/DeviceKit/power/battery_BAT0
2.7. GNOME Power Manager
- Com energia a cabo
- Com energia de bateria
- Geral
2.8. Outras razões para auditoria
- vmstat
- O vmstat lhe fornece informações detalhadas sobre o processo, memória, paginação, bloco E/S, obstáculos e atividade de CPU. Use isto para observar de perto o que a visão geral do sistema faz e onde fica ocupado.
- iostat
- iostat é semelhante ao vmstat, mas somente para E/S nos dispositivos de bloco. Ele também fornece resultado de verbosidade e estatística.
- blktrace
- blktraceé um programa de rastreamento de E/S de bloco detalhado. Ele quebra as informações em blocos individuais associados aos aplicativos. É muito útil se usado com diskdevstat.
Capítulo 3. Infraestrutura do Núcleo e Mecânica
3.1. Estados Ociosos de CPU
- C0
- o estado em execução ou em operação. Neste estado, a CPU está funcionando e não fica em ocioso em nenhum momento.
- C1, Halt
- um estado onde o processador não está executando nenhuma instrução mas geralmente não se encontra em um estado de energia baixo. A CPU pode continuar processando com praticamente nenhum atraso. Todos os processadores que oferecem o C-States precisam suportar este estado. Os processadores Pentium 4 suportam um estado C1 aprimorado chamado C1E que na verdade é um estado para consumo de energia mais baixo.
- C2, Stop-Clock
- um estado onde o relógio é congelado para este procesador, mas mantém o estado completo para seus registradores e caches, portanto depois que o relógio reinicia ele pode iniciar a processar imediatamente. Este é um estado opcional.
- C3, Espera
- um estado onde o processador realmente fica em modo de espera e não precisa manter seu cache atualizado. Acordar deste estado demora um pouco mais do que o C2 por esta razão. Este também é um estado opcional.
3.2. Usando os Governadores CPUfreq
- Redução de aquecimento para servidores
- Extendendo a vida da bateria para laptops
3.2.1. Tipos de CPUfreq Governor
O governador de Desempenho força a CPU a usar a frequência de relógio mais alta possível. Esta frequencia ajustará estaticamente, e não mudará. Como tal, este governador em particular não oferece nenhum benefício de economia de energia. Funciona somente por algumas horas de carga de trabalho e mesmo assim somente durante as horas que a CPU estiver raramente (ou nunca) em ocioso.
Por contraste, o governador do Powersave força a CPU a usar a frequência de relógio mais baixa possível. Esta frequencia será ajustada estaticamente, e não mudará. Como tal, este governador específico oferece economia máxima de energia, mas ao cuso de menor desempenho de CPU
O governador Ondemand é um governador dinâmico que permite que a CPU alcance a frequência máxima de relógio quando a carga do sistema for alta, e também uma frequência mínima de relógio quando o sistema estiver ocioso. Embora isto permita que o sistema ajuste o consumo de energia de acordo com o requisitado, quanto à carga do sistema, ele faz isto ao cuso de latência entre a mudança de frequência. Como tal, a latência pode ativar qualquer benefício de economia de desempenho/energia pelo governador Ondemand se o sistema mudar entre ocioso e cargas de trabalho pesadas com muita frequência.
O governador Userspace permite que programas do userspace (ou qualquer processo que estiver rodando como root) ajuste a frequência. Este governador é geralmente usado junto com o daemon cpuspeed
. Entre todos os governadores, o Userspace é o mais padronizável, e dependendo de como ele é configurado, ele pode oferecer o melhor equilíbrio entre o desempenho e consumo para seu sistema.
Como o governador Ondemand, o governador Conservativo também ajusta a frequência do relógio de acordo com o uso (como o governador Ondemand). No entanto, enquanto o governador Ondemand o faz de forma mais agressiva, (ou seja, do máximo para o mínimo e de volta ao máximo), o governador Conservative muda entre as frequências mais gradualmente.
Nota
cron
. Isto permite que você ajuste automaticamente governadores específicos durante horas específicas do dia. Como tal, você pode especificar um governador de baixa frequência durante horas ociosas (por exemplo após horário comercial) e retornar para um governador de alta frequência em horários de carga de trabalho pesada.
3.2.2. Configuração do CPUfreq
Procedimento 3.1. Como adicionar um Driver CPUfreq
- Use o seguinte comando para visualizar quais drivers do CPUfreq estão disponíveis para seu sistema:
ls /lib/modules/[kernel version]/kernel/arch/[architecture]/kernel/cpu/cpufreq/
- Use o
modprobe
para adicionar o driver CPUfreq adequado.modprobe [CPUfreq driver]
Ao usar o comando acima, tenha a certeza de remover o sufixo do nome de arquivo.ko
.Importante
Ao escolher um driver CPUfreq, sempre escolha oacpi-cpufreq
ao invés dop4-clockmod
. Pois apesar do uso do driverp4-clockmod
reduzkir a frequência do relógio de uma CPU, ele não reduz a voltagem. Por outro lado, oacpi-cpufreq
, reduz a voltagem com a frequência do relógio da CPU, permitindo menos consumo de energia e aquecimento de resultado para cada redução de unidade sendo realizada. - Depois que o CPUfreq estiver instalado, você pode visualizar qual governador o sistema está usando atualmente:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
cat /sys/devices/system/cpu/[cpu ID]/cpufreq/scaling_available_governors
modprobe
para adicionar os módulos de kernel necessários, os quais habilitam o governador de CPUfreq específico que você deseja usar. Estes módulos de kernel estão disponíveis no /lib/modules/[kernel version]/kernel/drivers/cpufreq/
.
Procedimento 3.2. Habilitando um Governador de CPUfreq
- Se um governador específico não estiver listado como disponível para sua CPU, use o
modprobe
para habilitar o governador que você deseja usar. Por exemplo, se o governadorondemand
não estiver disponível para sua CPU, use o seguinte comando:modprobe cpufreq_ondemand
- Depois que um governador for listado como disponível para sua CPU, você pode habilitá-lo usando:
echo [governor] > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
3.2.3. Ajustando Política e Velocidade do CPUfreq
/sys/devices/system/cpu/[cpu ID]/cpufreq/
. Estes tunables são:
cpuinfo_min_freq
— Mostra a frequência de operação mínima disponível da CPU (em KHz).cpuinfo_max_freq
— Mostra a frequência operacional máxima disponível da CPU (em KHz)scaling_driver
— Mostra qual o driver da CPUfreq é usada para ajustar a frequência nesta CPU.scaling_available_governors
— Mostra os governadores da CPUfreq disponíveis neste kernel. Se você quiser usar um governador do CPUfreq que não esteja listado neste arquivo, consulte o Procedimento 3.2, “Habilitando um Governador de CPUfreq” in Seção 3.2.2, “Configuração do CPUfreq” para obter instruções sobre como fazer isto.scaling_governor
— Mostra que o governador da CPU freq está em uso. Para usar um governador diferente, simplesmente useecho [governor]> /sys/devices/system/cpu/[cpu ID]/cpufreq/scaling_governor
(consulte Procedimento 3.2, “Habilitando um Governador de CPUfreq” em Seção 3.2.2, “Configuração do CPUfreq” para obter mais informações.)cpuinfo_cur_freq
— Mostra a velocidade atual da CPU (em KHz).scaling_available_frequencies
— Lista frequencias disponíveis para a CPU em KHz.scaling_min_freq
escaling_max_freq
— Ajusta a política de policy limits da CPU, em KHz.affected_cpus
— Lista CPUs que requerem software de coordenação de frequência.scaling_setspeed
— Usado para modificar a velocidade do relógio da CPU, em KHZ. Você pode ajustar uma velocidade dentro dos limites de política da CPU (comoscaling_min_freq
escaling_max_freq
).
cat [tunable]
. Por exemplo, para visualizar a velocidade atual de cpu0 (em KHZ), use:
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
.
echo [value]> /sys/devices/system/cpu/[cpu ID]/cpufreq/[tunable]
. por exemplo, para ajustar a velocidade mínima de relógio da cpu0 para 360 KHZ, use:
echo 360000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
3.3. Suspender e Resumir
3.4. Kernel sem Tick
3.5. Active-State Power Management (Gerenciamento de Energia de Estado Ativo)
- padrão
- ajusta os estados do link do PCle de acordo com os padrões especificados pelo firmware no sistema (por exemplo, BIOS). Este é o estado padrão para ASPM.
- powersave
- ajusta o ASPM para economizar energia onde for possível, não importando o custo de desempenho.
- desempenho
- desabilita o ASPM para permitir que os links do PCle operem com o máximo de desempenho.
/sys/module/pcie_aspm/parameters/policy
, mas também podem ser especificadas durante a inicialização com o parâmetro do kernel pcie_aspm
onde o pcie_aspm=off
desabilita o ASPM pcie_aspm=force
habilita o ASPM, até mesmo em dispositivos que não suportam o ASPM.
Atenção
pcie_aspm=force
estiver ativado, o hardware que não suporta o ASPM pode fazer com que sistemas parem de responder. Antes de configurar o pcie_aspm=force
, certifique-se que o hardware do PCle no sistema suporta o ASPM.
3.6. Aggressive Link Power Management (Gerenciamento de Energia de Conexão Agressiva)
Este modo configura a conexão com seu estado de energia mais baixo (SLUMBER) quando não há E/S no disco. Este modo é útil para as horas que se espera ter um longo período de tempo em ocioso.
Este modo configura a conexã para o segundo estado de energia mais baixo (PARTIAL) quando não houver E/S no disco. Este modo é designado para permitir transações na conexão de estados de energia ( por exemplo durante as horas de E/S pesadas intermitentes e ociosa) com impacto tão pequeno no desempenho quanto for possível.
medium_power
permite a conexão de transição entre PARTIAL e totalmente com energia (ou seja "ACTIVE"), dependendo da carga. Observe que não é possível transitar um link diretamente de PARTIAL para SLUMBER e retornar. Neste caso, ambos estados de energia não podem transitar para outro sem transitarem através do estado ACTIVE primeiro.
O ALPM está desativado, o link não insere nenhum estado de baixa energia quando não houver E/S no disco.
/sys/class/scsi_host/host*/link_power_management_policy
existe. Para modificar as configurações simplesmente grave os valores descritos nesta seção nestes arquivos ou exiba os arquivos para checar a configuração atual.
3.7. Otimização de Acesso de Drive Relatime
atime
, e mantê-lo requer uma série constante de operações de gravações para armazenamento. Estas gravações mantém os dispositivos de armazenamento e seus links ocupados e ligados. Como alguns aplicativos fazem uso dos dados atime
, esta atividade do dispositivo de armazenamento gasta energia. A gravação do armazenamento ocorreria mesmo se o arquivo não fosse lido pelo armazenamento, mas pelo cache. Durante algum tempo, o kernel do Linux suportou uma opção noatime
para mount e não gravaria os dados do atime
em sistemas de arquivo montados com esta opção. No entanto, desligar este recurso seria problemático pois alguns aplicativos contam com os dados do atime
e falharão caso não esteja disponível.
relatime
. Relatime
mantém dados do atime
, mas não para cada vez que um arquivo é acessado. Com esta opção habilitada, os dados do atime
são gravados no disco somente se um arquivo foi modificado desde que os dados do atime
tenham sido atualizados (mtime
), ou se o arquivo foi acessado pela última vez mais de um certo período de tempo atrás (por padrão, um dia).
relatime
habilitado. Para omitir este recurso em todo o sistema, use o parâmetro de inicialização default_relatime=0
. Se relatime
estiver ativado em um sistema por padrão, você pode omití-lo de qualquer sistema de arquivo específico montando aquele sistema de arquivo com a opção norelatime
. Finalmente, para variar o período de tempo padrão antes do qual o sistema irá atualizar dados do atime
de arquivo, use o parâmetro de inicialização relatime_interval=
especificando o período em segundos. O valor padrão é 86400
.
3.8. Planejamento de Energia
O Dynamic Power Capping é um recurso disponível ao selecionar os servidores ProLiant e BladeSystem que permitem que os administradores de sistema planejem o consumo de energia de um servidor ou um grupo de servidores. O 'cap' ou planejamento, é um limite definitivo que o servidor não irá exceder, não importando sua carga de trabalho atual. Neste ponto, um processador de gerenciamento ajusta a CPU P-states e controle de fluxo do relógio para limitar a energia consumida.
/dev/hpilo/dXccbN
. O kernel também inclui uma extensão da interface hwmon
sysfs
para suportar o planejamento de energia, e um driver hwmon
para medidores de energia ACPI 4.0 que usam a interface sysfs
. Juntos estes recursos permitem que o sistema operacional e ferramentas de espaço de usuário leiam o valor configurado para o plano de energia, junto como o uso de energia atual do sistema.
O Gerenciador de Nó impõe um plano de energia em sistemas, usando o processador P-states e T-states para limitar o desempenho da CPU e portanto o consumo de energia. Ao ajustar a política de gerenciamento de energia, os adminstradores podem configurar os sistemas para consumir menos energia nas vezes que as cargas de sistema forem baixas, por exemplo, a noite ou aos finais de semana.
3.9. Gerenciamento de Energia de Gráficos Aprimorado
Sinalização de diferencial de baixa voltagem (LVDS) é um sistema para carregar sinais eletrônicos sob fio de cobre. Um aplicativo bastante importante do sistema é transmitir informações de pixel para telas de exibição de cristal líquido (LCD) em computadores notebook. Todas as exibições possuem uma taxa de atualização - a taxa na qual eles recebem dados novos de controlador de gráfico e redefine a imagem na tela. Geralmente, a tela recebe dados novos sessenta vezes por segundo (uma frequência de 60 Hz). Quando uma tela e controlador de gráfico são ligados por LVDS, o sistema de LVDS usa a energia em todos os ciclos de atualização. Quando estiver ocioso, a taxa de atualização de muitas telas de LCD podem cair para 30 Hz sem qualquer efeito notável (diferente de monitores tubo de raio catodo (CRT), onde uma diminuição da taxa de atualização produz um estado característico). O driver para adaptadores de gráficos Intel embutidos no kernel usados em Red Hat Enterprise Linux 6 realiza este downclocking automaticamente, e economiza por volta de 0.5 W quando a tela está em ociosa.
Memória de acesso aleatório de dinâmica síncrona (SDRAM) - como usado para memória de vídeo em adaptadores de gráficos, é recarregado mil vezes por segundo para que as celulas de memória individuais retenham os dados que estão armazenados neles. Fora a função principal de gerenciamento de dados como ele flui para dentro e para fora da memória, o controlador de memória é geralmente responsável por iniciar estes ciclos de atualização. No entanto, SDRAM também possui uma baixa energia de modo auto atualização. Neste modo, a memória usa um timer interno para gerar seus próprios ciclos de atualização, o qual permite que o sistema feche o controlador de memória sem colocar os dados em risco, atualmente mantidos na memória. O kernel usado no Red Hat Enterprise Linux 6 pode disparar a atualização automática de memória nos adaptadores de gráficos da Intel quando estiverem em ociosos, o qual economizará por volta de 0.8 W.
As Unidades de processamento gráfico típica ou GPUs, contém relógios internos que governam diversas partes de seu circuito interno. O kernel usado no Red Hat Enterprise Linux 6 pode reduzir a frequência de alguns dos relógios internos na Intel e ATI GPUs. Reduzir o número de ciclos que os componentes GPU realizam em um dado momento, economiza a energia que eles teria consumido nos ciclos que eles não tiveram que funcionar. O kernel automaticamente reduz a velocidade destes relógios quando o GPU estiver ocioso, e aumenta quando a atividade do GPU aumentar. Reduzir os ciclos de relógio do GPU pode economizar até 5 W.
Os gráficos da Intel e ATI no Red Hat Enterprise Linux 6 podem detectar quando não houver monitor anexado à um adaptador e portanto fechar o GPU completamente. Este recurso é importante especialmente para servidores que não possuem monitores anexados à eles regularmente.
3.10. RFKill
/dev/rfkill
, o qual contém o estado atual de todos os trasmissores de rádio no sistema. Cada dispositivo possui seu estado de RFKill registrado em sysfs
. Além disso, o RFKill emite o uevents para cada mudança de estado em um dispositivo do RFKill ativado.
rfkill list
para obter uma lista de dispositivos, cada uma possui um index numberassociado à ele, iniciando como 0
. Você pode usar este número de índice para informar o rfkill para bloquear ou desbloquear um dispositivo, por exemplo:
rfkill block 0
rfkill block wifi
rfkill block all
rfkill unblock
ao invés do rfkill block
. Para obter uma lista completa de categoria de dispositivos que o rfkill consegue bloquear, execute rfkill help
3.11. Otimizações em Espaço de Usuário
O Red Hat Enterprise Linux 6 usa um tickless kernel (consulte Seção 3.4, “Kernel sem Tick”), que permite que as CPUs a ficarem em estados ociosos mais profundos. No entanto, o timer tick não é a única fonte de ativamento de CPU excessivo e chamadas de função dos aplicativos também podem evitar que a CPU entre ou fique em estados ociosos.As chamadas de função desnecessárias foram reduzidas em mais de 50 aplicativos.
Entrada e saída (ES) para dispositivos de armazenamento e interfaces de rede forçam dispositivos a consumir energia. Nos dispositivos de armazenamento e rede que apresentam estados de energia reduzidos quando ociosos (por exemplo, ALPM ou ASPM), este trânsito pode evitar que o dispositivo ensira ou fique em estado ocioso, e pode evitar que os discos rígidos girem pra baixo quando não estiverem em uso. As demandas excessivas e desnecessárias no armazenamento foram minimizadas em diversos aplicativos. Especialmente aquelas demandas qeu evitam o disco rígido de girar para baixo.
Os serviços iniciam automaticamente, quer requerido ou não, possuem um grande potencial de recursos de sistema de disperdício. Os serviços deveriam ficar como padrão em "off" ou "on demand" sempre que possível. Por exemplo, o serviço BlueZ que ativa o suporte do Bluetooth, antes rodava automaticamente quando o sistema inicializava, mesmo quando o Bluetooth não estava presente. O initscript do BlueZ agora verifica se o hardware do Bluetooth está presente no sistema antes de iniciar o serviço.
Capítulo 4. Casos de Uso
4.1. Exemplo - Servidor
O servidor da Web precisa de rede e disco de E/S. Dependendo da velocidade de conexão externa 100 Mbit/s pode ser o suficiente. Se a máquina serve basicamente páginas estáticas, o desempenho da CPU pode não ser muito importante. As escolhas de gerenciamento de energia podem incluir:
- nenhum disco ou plugins de rede para tuned.
- ALPM ligado
- governador do
ondemand
ligado. - placa de rede limitada à 100 Mbit/s.
Um servidor computado precisa principalmente de uma CPU. As escolhas de gerenciamento de energia podem incluir:
- dependendo do trabalho e onde o armazenamento de dados acontece, o disco e plugin de rede para tuned; ou para sistemas em modo batch, ativa totalmente o tuned;.
- dependendo do uso, talvez o governador do
performance
O servidor de correio precisa basicamente de disco de E/S e CPU. As escolhas de gerenciamento de energia podem incluir:
- governador do
ondemand
ligado, pois as últimas porcentagens de desempenho da CPU não são importantes. - nenhum disco ou plugins de rede para tuned.
- velocidade de rede não deve ser limitada, pois o correio é geralmente interno e pode portanto se beneficiar de um link 1 Gbit/s or 10 Gbit/s.
Os requerimentos do servidor de arquivo são semelhantes aos do servidor de correio, mas dependendo do protocolo usado, pode requerer mais desempenho de CPU. Geralmente, os servidores baseados em Samba requerem mais CPU do que a NFS e a NFS geralmente requer mais do que o iSCSI. Mesmo assim, você deve conseguir usar o governador ondemand
Um servidor de diretório geralmente possui menos requerimentos para disco de E/S, especialmente se equipado com RAM suficiente. A latência de rede é importante embora a rede de E/S seja menor. Você deve considerar o ajuste da rede de latência com velocidade de link menor, mas teste-a com cuidado para sua rede privada.
4.2. Exemplo — Laptop
- Configure o BIOS do sistema para desabilitar todos os hardwares que você não vá usar. Por exemplo, portas paralelas ou seriais, leitores de cartão, webcams, WiFi, e Bluetooth, nomeando somente alguns possíveis candidatos.
- Ajuste a exibição para ambientes mais escuros onde você não precisa de iluminação total para ler a tela de maneira confortável. Use o System+Preferences → Power Management no desktop GNOME, Kickoff Application Launcher+Computer+System Settings+Advanced → Power Management no dpeskto KDE; ou gnome-power-manager o xbacklight na linha de comando; ou as chaves de função do seu laptop.
- Use o perfil de
laptop-battery-powersave
de tuned-adm para habilitar todo um conjunto de mecanismos de economia de energia. Observe que o desempenho e latência para o disco rígido e interface de rede são impactados.
- use o governador do
ondemand
(ativado pelo padrão em Red Hat Enterprise Linux 6) - habilite o modo do laptop (parte do perfil do
laptop-battery-powersave
):echo 5 > /proc/sys/vm/laptop_mode
- aumenta tempo de fluxo de tempo para o disco (parte do perfil do
laptop-battery-powersave
):echo 1500 > /proc/sys/vm/dirty_writeback_centisecs
- desabilitar o nmi watchdog (parte do perfil
laptop-battery-powersave
):echo 0 > /proc/sys/kernel/nmi_watchdog
- habilitar a economia de energia do audio AC97 (habilitado por padrão no Red Hat Enterprise Linux 6):
echo Y > /sys/module/snd_ac97_codec/parameters/power_save
- habilita economia de energia de núcleos múltiplos (parte do perfil
laptop-battery-powersave
):echo Y > /sys/module/snd_ac97_codec/parameters/power_save
- habilita o USB auto-suspend:
for i in /sys/bus/usb/devices/*/power/autosuspend; do echo 1 > $i; done
Observe que o USB auto-suspend não funciona corretamente com todos os dispositivos USB. - habilita a configuração de energia mínima para ALPM (parte do perfil
laptop-battery-powersave
):echo min_power > /sys/class/scsi_host/host*/link_power_management_policy
- monta o sistema de arquivo usando o relatime (padrão em Red Hat Enterprise Linux 6):
mount -o remount,relatime mountpoint
- ativa o modo de economia de energia para discos rígidos ( parte do perfil
laptop-battery-powersave
):hdparm -B 1 -S 200 /dev/sd*
- desabilita o polling do CD-ROM (parte do perfil
laptop-battery-powersave
):hal-disable-polling --device /dev/scd*
- reduz brilho de tela para
50
ou menos, por exemplo:xbacklight -set 50
- ativa o DPMS para tela ociosa:
xset +dpms; xset dpms 0 0 300
- reduz os níveis de energia de Wi-Fi (parte do perfil
laptop-battery-powersave
):for i in /sys/bus/pci/devices/*/power_level ; do echo 5 > $i ; done
- desativar o Wi-Fi:
echo 1 > /sys/bus/pci/devices/*/rf_kill
- limita rede a fio para 100 Mbit/s (parte do perfil
laptop-battery-powersave
):ethtool -s eth0 advertise 0x0F
Apêndice A. Dicas para Desenvolvedores
- usando opções:
- ativamentos de CPU desnecessárias e o uso ineficiente do mesmo. Se você precisa realizar um ativamento, faça tudo de uma só vez (vá direto para modo ocioso) e o mais rápido possível.
- usasndo o
[f]sync()
sem necessidade. - polling ativo desnecessário ou uso de timeouts regulares e curtos. (Reativar para eventos).
- o uso ineficiente do ativamento (wake-ups)
- acesso ineficiente ao disco. Use buffers grandes para evitar acesso ao disco frequente. Grave um bloco grande por vez.
- Uso ineficiente de timers. Timers de grupo nos aplicativos (ou até nos sistemas) se possível.
- E/S excessiva, consumo de energia, ou uso de memória (incluindo vazamento de memória)
- realizando computação desnecessária.
A.1. Usando Opções
Python usa o Global Lock Interpreter[1], portanto o uso de opções é lucrável somente para operações de E/S maiores. Unladen-swallow [2] é uma implementação mais rápida do Python com o qual você deve ser capaz de otimizar seu código.
As opções do Perl foram criadas primeiramente para aplicativos que são executados em sistemas sem divisão (tal como sistemas com sistemas operacionais de 32-bits Windows). Nas opções do Perl, os dados são copiados para cada opção (Copiar na Gravação). Os dados não não compartilhados por padrão pois os usuários deveria ser capazes de definir o nível de dados compartilhados. Para compartilhamento de dados, o módulo threads::shared deve ser incluído. No entanto, os dados não devem ser só copiados (Copiar na Gravação), mas o módulo também cria variáveis ligadas para os dados, o qual leva ainda mais tempo e é mais lento. [3]
As opções C compartilham da mesma memória, cada opção possui sua própria pilha e o kernel não precisa criar novos descritores de arquivo e alocar espaço de memória novo. O C podem realmente usar o suporte para mais CPUs por opções. Portanto, para maximizar o desempenho de suas opções, use uma linguagem de baixo nível como o C ou C++. Se você usar uma linguage de script, considere utilizar um C binding. Use donos de perfis para identificar o pouco desempenho de partes de seu código.[4]
A.2. Wake-ups
int fd; fd = inotify_init(); int wd; /* checking modification of a file - writing into */ wd = inotify_add_watch(fd, "./myConfig", IN_MODIFY); if (wd < 0) { inotify_cant_be_used(); switching_back_to_previous_checking(); } ... fd_set rdfs; struct timeval tv; int retval; FD_ZERO(&rdfs); FD_SET(0, &rdfs); tv.tv_sec = 5; value = select(1, &rdfs, NULL, NULL, &tv); if (value == -1) perror(select); else { do_some_stuff(); } ...
/proc/sys/fs/inotify/max_user_watches
e embora ele possa ser modificado, isto não é recomendado. Além disso, no caso de falhas do inotoify, o código precisa retornar à um método de verificação diferente, o qual geralmente significa muitas ocorrências de #if #define
no código fonte.
A.3. Fsync
Fsync
é conhecido como uma operação de E/S cara, mas isto não é totalmente verdadeiro. Por exemplo, consulte o artigo Theodore Ts'o's Don't fear the fsync! [5] e a discussão que o acompanha.
fsync
e por causa das configurações de sistema do arquivo (principalmente o ext3 com modo de dados ordenados), existia uma longa latência quando nada acontecia. Isto podia levar um longo tempo (até 30 segundos) se outro processo era copiado em um arquivo grande ao mesmo tempo.
fsync
não era usado, os problemas cresciam com a mudança do sistema de arquivo ext4. O Ext3 era ajustado para modo de dados ordenados, o qual enviava a memória a cada poucos segundos e salvava-as em um disco. Mas com um ext4 e laptop_mode, o intervalo entre salvamentos era maior e dados podiam ser perdidos quando o sistema não esperava desligamentos. Agora o ext4 foi reparado, mas nós ainda consideramos o design de nossos aplicativos com cuidado, e usamos o fsync
de acordo como o adequado.
/* open and read configuration file e.g. ~/.kde/myconfig */ fd = open("./kde/myconfig", O_WRONLY|O_TRUNC|O_CREAT); read(myconfig); ... write(fd, bufferOfNewData, sizeof(bufferOfNewData)); close(fd);
open("/.kde/myconfig", O_WRONLY|O_TRUNC|O_CREAT); read(myconfig); ... fd = open("/.kde/myconfig.suffix", O_WRONLY|O_TRUNC|O_CREAT); write(fd, bufferOfNewData, sizeof(bufferOfNewData)); fsync; /* paranoia - optional */ ... close(fd); rename("/.kde/myconfig", "/.kde/myconfig~"); /* paranoia - optional */ rename("/.kde/myconfig.suffix", "/.kde/myconfig");
Apêndice B. Histórico de Revisão
Histórico de Revisões | ||||||
---|---|---|---|---|---|---|
Revisão 0.2-23.400 | 2013-10-31 | Rüdiger Landmann | ||||
| ||||||
Revisão 0.2-23 | 2012-07-18 | Anthony Towns | ||||
| ||||||
Revisão 0.2-19 | Tue Jul 20 2010 | Rüdiger Landmann | ||||
| ||||||
Revisão 0.2-18 | Fri Jul 16 2010 | Rüdiger Landmann | ||||
| ||||||
Revisão 0.2-17 | Thu Jul 8 2010 | Rüdiger Landmann | ||||
| ||||||
Revisão 0.2-16 | Thu Jul 8 2010 | Rüdiger Landmann | ||||
| ||||||
Revisão 0.2-15 | Wed Jun 30 2010 | Rüdiger Landmann | ||||
| ||||||
Revisão 0.2-14 | Tue Mar 15 2010 | Rüdiger Landmann | ||||
| ||||||
Revisão 0.2-13 | Mon Mar 15 2010 | Rüdiger Landmann | ||||
| ||||||
Revisão 0.2-12 | Mon Mar 15 2010 | Rüdiger Landmann | ||||
| ||||||
Revisão 0.2-11 | Mon Mar 15 2010 | Rüdiger Landmann | ||||
| ||||||
Revisão 0.2-10 | Mon Mar 15 2010 | Rüdiger Landmann | ||||
| ||||||
Revisão 0.2-9 | Mon Mar 15 2010 | Rüdiger Landmann | ||||
| ||||||
Revisão 0.2-8 | Mon Mar 15 2010 | Rüdiger Landmann | ||||
| ||||||
Revisão 0.2-7 | Sun Mar 14 2010 | Rüdiger Landmann | ||||
| ||||||
Revisão 0.2-6 | Sun Mar 14 2010 | Rüdiger Landmann | ||||
| ||||||
Revisão 0.2-5 | Sun Mar 14 2010 | Rüdiger Landmann | ||||
| ||||||
Revisão 0.2-4 | Sat Mar 13 2010 | Rüdiger Landmann | ||||
| ||||||
Revisão 0.2-3 | Sat Mar 13 2010 | Rüdiger Landmann | ||||
| ||||||
Revisão 0.2-2 | Tue Mar 9 2010 | Rüdiger Landmann | ||||
| ||||||
Revisão 0.2-1 | Mon Mar 8 2010 | Rüdiger Landmann | ||||
| ||||||
Revisão 0.2-0 | Thu Dec 17 2009 | Rüdiger Landmann | ||||
| ||||||
Revisão 0.1-0 | Tue Sep 23 2008 | Don Domingo | ||||
|