Quantos dados o Linux lê na inicialização média?

9

Gostaria de saber quantos dados no total um sistema Linux baunilha recém-instalado (como o CentOS 5.10 de 32 bits) lê para obter um prompt de shell do console virtual? Você sabe, lendo todos os arquivos de configuração, carregando binários, imagem do kernel, etc.

Estou procurando estimativas de ordem de magnitude. Estou ciente de que a inicialização do Linux varia muito em relação aos detalhes do processo. Estamos falando de 10Mb? 100Mb? 1Gb?

amn
fonte
5
Porque perguntas?
precisa
2
A variabilidade é (pode ser) ordens de magnitude entre os sistemas - carregar o kernel e os drivers é a menor fração do processo de inicialização, e os scripts init em um sistema podem fazer literalmente qualquer coisa antes de você receber um prompt de login. Explique a situação com a qual você está lidando em termos de um problema real e prático que possamos ajudá-lo a resolver.
precisa saber é o seguinte
1
@amn Você pode colocar o motivo na sua pergunta inicial? Isso ajudará no contexto. Outra razão pela qual as pessoas fazem uma pergunta semelhante é se estão usando armazenamento com ciclo limitado. Mais detalhes são sempre melhores.
precisa saber é
8
@ewwhite Estou inicializando centenas de máquinas Linux, e 95% do conteúdo de seus sistemas são idênticos e permanecerão idênticos - as máquinas são clones. Eu gostaria de descarregar a parte compartilhada idêntica / somente leitura do sistema de arquivos para um armazenamento NFS, montá-lo a partir daí e inicializar assim. Somente parte gravável do sistema de arquivos, como / var, / tmp e / home, permanecerá local para cada máquina. Como potencialmente centenas de máquinas podem inicializar simultaneamente como parte de um "cluster", preciso estimar se o link de armazenamento NFS acessado será um gargalo durante a inicialização.
quer
5
I need to estimate...então faça um e meça-o.
symcbean

Respostas:

8

Instale um sistema, inicie-o e verifique as estatísticas da camada de bloco, por /sys/block/${DEV}/statexemplo /sys/block/sda/stat.

Citando a partir da documentação :

O arquivo stat consiste em uma única linha de texto contendo 11 valores decimais separados por espaço em branco. Os campos estão resumidos na tabela a seguir e descritos em mais detalhes abaixo:

Name            units         description
----            -----         -----------
read I/Os       requests      number of read I/Os processed
read merges     requests      number of read I/Os merged with in-queue I/O
read sectors    sectors       number of sectors read
read ticks      milliseconds  total wait time for read requests
write I/Os      requests      number of write I/Os processed
write merges    requests      number of write I/Os merged with in-queue I/O
write sectors   sectors       number of sectors written
write ticks     milliseconds  total wait time for write requests
in_flight       requests      number of I/Os currently in flight
io_ticks        milliseconds  total time this block device has been active
time_in_queue   milliseconds  total wait time for all requests

ler setores, escrever setores

Esses valores contam o número de setores lidos ou gravados neste dispositivo de bloco. Os "setores" em questão são os setores padrão de 512 bytes do UNIX, não qualquer tamanho de bloco específico para dispositivos ou sistemas de arquivos. Os contadores são incrementados quando a E / S é concluída.

Você pode usar esta linha única para obter o número de bytes mais facilmente:

awk '{printf("read %d bytes, wrote %d bytes\n", $3*512, $7*512)}' /sys/block/vda/stat

Resultados para Scientific Linux 6.1 i386

Testei isso em uma máquina virtual KVM / qemu executando o Scientific Linux 6.1 i386 (que é semelhante ao RHEL). Os seguintes serviços foram ativados: acpid, auditd, crond, rede, postfix, rsyslog, sshd e udev-post. A troca está em um disco separado, portanto não é levada em consideração.

As estatísticas de 85 inicializações, tiradas remotamente com SSH alguns segundos após o prompt de login aparecer, foram:

    Name            Median   Average   Stdev
    -------------   ------   -------   -----
    read I/Os       1920     1920.2    2.6
    read merges     1158     1158.4    1.8
    read sectors    85322    85330.9   31.9
 >> read MiBytes    41.661   41.665    0.016
    read ticks      1165     1177.2    94.1
    write I/Os      33       32.6      1.7
    write merges    64       59.6      7.4
    write sectors   762      715.2     70.9
 >> write MiBytes   0.372    0.349     0.035
    write ticks     51       59.0      17.4
    in_flight       0        0.0       0.0
    io_ticks        895      909.9     57.8
    time_in_queue   1217     1235.2    98.5

O tempo de inicialização foi de cerca de 20 segundos.

Cristian Ciupitu
fonte
2
Observe que isso apenas fornece a demanda de transferência (quantidade), não a demanda de taxa de transferência. Você pode dividir pelo tempo de atividade para obter um número médio.
precisa saber é o seguinte
15

Você diz em seus comentários que está avaliando um ambiente raiz de inicialização / rede.

A primeira coisa que você deve perceber é que não existe "baunilha" - você não executará o CentOS 5.10 imediatamente com zero alterações (se você pensa que está se iludindo: o NFS Root já está pelo menos morango, à beira do pistache).

Se você deseja uma resposta para seu ambiente específico (que é realmente o que conta), precisará configurar um servidor NFS e uma máquina cliente, inicialize-a e meça:

  1. A transferência (quantidade)
  2. A taxa de transferência

Ambos os valores serão extremamente importantes para o desempenho. Você provavelmente também desejará configurar vários clientes em algum momento e simular o uso normal do sistema para ver que tipo de demanda em estado estacionário eles colocam no seu servidor / rede NFS quando as pessoas estão usando os sistemas como fariam no dia a dia. trabalhos.

Veja também: Nossa série sobre planejamento de capacidade - não falamos especificamente sobre NFS, mas os princípios gerais de "Construa, teste, force" se aplicam.

voretaq7
fonte
1
Se houver sorvete de baunilha, haverá Linux de baunilha! ;-) Porém, falando sério, é um CentOS 5.10 bastante inalterado, e o que foi alterado faz parte do sistema de arquivos gravável, que não será montado a partir do NFS, por isso não é um fator - sim, existe um gigantesco banco de dados do Postgres no / var / lib but / var não é montado no NFS, mas está no disco de inicialização física local. E se eu quisesse traçar o perfil, eu não faria a pergunta aqui :-) #
05514
10
@ amn Lamento que você não queira criar perfis, mas precisa fazer o que precisa - não podemos extrair números aplicáveis ​​de nossos objetivos para você. Sua solução (raiz do NFS) é sólida e testada pelo tempo e, honestamente, você provavelmente pode implantá-la às cegas sem problemas (dezenas de milhares de ambientes da Sun Microsystems foram implantados às cegas como essa no auge da raiz do NFS e inicialização pela rede Solaris e funcionou muito bem). Se você está preocupado com o desempenho, precisará criar perfis para determinar a demanda e os gargalos do seu ambiente específico - esse é apenas o caminho do universo.
precisa saber é o seguinte
+1 para morango
alexyorke
1
@ voretaq7 Não posso argumentar com o argumento de criação de perfil, e nunca o fiz. Eu só queria a próxima melhor coisa antes de arregaçar as mangas e montar o NFS. Obrigado pela sua contribuição valiosa.
quer