vmstat -s campos de comando que significam, especialmente, “páginas paginadas em” vs “páginas trocadas em”

2

A maioria dos campos é compreensível, mas alguém pode me explicar a diferença entre "páginas paginadas em" e "páginas trocadas em" ?. Tenho certeza de que a troca é quando o processo inteiro é movido para o espaço de troca no disco rígido e a paginação é quando algumas páginas são movidas para o espaço de troca. Então isso significa que "páginas paginadas" são as páginas que pertencem a seções de processos que são movidas para a memória principal e que "páginas trocadas" são as páginas que pertencem a processos inteiros movidos para a memória principal? Alguém pode lançar alguma luz aqui por favor. Se você tiver informações adicionais sobre os outros campos, isso também seria ótimo. Eu li o manual, mas não encontrei informações úteis sobre este comando com esta opção específica. Exemplo da saída do comando:

vmstat -s
       131072 K total memory
       125700 K used memory
        59836 K active memory
        49268 K inactive memory
         5372 K free memory
            0 K buffer memory
       101984 K swap cache
            0 K total swap
            0 K used swap
            0 K free swap
        18594 non-nice user cpu ticks
            0 nice user cpu ticks
        17990 system cpu ticks
    108464145 idle cpu ticks
         1121 IO-wait cpu ticks
            0 IRQ cpu ticks
            0 softirq cpu ticks
            0 stolen cpu ticks
       123672 pages paged in
       486324 pages paged out
            0 pages swapped in
            0 pages swapped out
            0 interrupts
      7439516 CPU context switches
   1457280256 boot time
       131927 forks

Esta é a saída de um arquivo relacionado que pode ajudar a contrastar os valores e compreendê-los melhor. Ele foi obtido ao mesmo tempo que o anterior:

cat /proc/meminfo
MemTotal:         131072 kB
MemFree:            5404 kB
Cached:           101984 kB
Buffers:               0 kB
Active:            59820 kB
Inactive:          49268 kB
Active(anon):      11532 kB
Inactive(anon):    16920 kB
Active(file):      48288 kB
Inactive(file):    32348 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         28452 kB
Shmem:             21348 kB
Slab:              16544 kB
SReclaimable:      10580 kB
SUnreclaim:         5964 kB
    
por Pietro Doninelli 10.03.2016 / 04:29

1 resposta

3

Considere que seu programa precisa ser carregado na memória para ser executado. Você tem certa quantidade de espaço de endereço disponível e seu programa precisa de mais. Divida esse espaço de endereço disponível para você em páginas. Essas são chamadas de páginas virtuais. Tente mapear essas páginas virtuais para a memória física e suponha que você não tenha memória física suficiente para carregar todas as páginas. Você carregará as páginas imediatamente necessárias e deixará a que você não precisa agora. Mas, quando chegar a hora, você descarregará as páginas não utilizadas para carregar as páginas necessárias para a execução do programa. Isso é o que o algoritmo de paginação faz e você vê como "páginas paginadas em" e "páginas paginadas".

Swap-in ou swap-out, por outro lado, lida com todo o espaço de memória necessário para executar seu programa. Digamos que seu processo esteja em estado em que aguarda algum recurso estar disponível. Não há necessidade de permanecer carregado na memória até que a condição seja satisfeita. Enquanto isso, há outros processos aguardando a execução da memória. Todo o seu processo é trocado e depois trocado de volta, quando chegar a hora.

Considerando os sistemas modernos com muita memória física, a troca está se tornando a coisa do passado para a maioria dos sistemas.

É claro que nenhum dos algoritmos (paginação e / ou troca) é tão simples assim. Esta é apenas uma visão geral de dez mil pés. Você pode ler muito mais detalhes sobre isso, em outros lugares da Web.

    
por 10.03.2016 / 04:50