+ Responder ao Tópico



  1. #1
    Raquelima2
    Visitante

    Padrão cmo é feito o calulo da cpu ?

    Gente... Sei muito bem usar o top. Sei pra que ele me serve.. Mas como ele calula a CPU usada pelo usuário, pelo sistema e ociosa ?
    Como e feito o caluculo ?

    PARECE SIMLPES A PERGUNTA MAS NÃO É...
    Notem : A No momento tenho

    Cpu(s): 1.7% us, 0.7% sy, 0.0% ni, 97.7% id

    com 3 processos assim :
    PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
    639 root 15 0 171m 39m 135m S 1.3 7.9 4:24.85 X
    3744 aluno 16 0 27512 14m 25m R 0.7 2.9 0:02.19 kdeinit
    3314 aluno 15 0 117m 61m 92m S 0.3 12.3 0:09.04 acroread

    Me endentam por favor.
    Um processo quando é processado tem 100 por cento da cpu pra processá-lo PORQUE è 1.7 pro usuário ?

    E porque é 1.3 % de cpu para o pid 639 ?

    Como o linux faz essa divisão ? Existe parcelamento de uso de cpu ? Como é feito essa divissão pelo kernel ?

    PORFAVO ME AJUDEM...

  2. #2

    Padrão cmo é feito o calulo da cpu ?

    O comando TOP é bom para acompanhar os processos, porém ele tem algumas particularidades...
    No quesito CPU, no momento que você tirou a fotografir, ele estava usando apenas 1,7 % de CPU, se você tem mais de um processador, esse valor está distribuído entre os processadores... No SUS Enterprise, eu digito "1" para mostrar o consumo por CPU.
    O línux tem possibilidade de dar preferência a alguns processos e limitar outros, mas não creio que iso tenha sido usado, pois é uma configuração a parte...
    Se você envia um processo pesado e não tem mais ninguém trabalhando, ele vai usar 100% de CPU até resolver o processo, se houver mais gente trabalhando, ele vai usar a CPU disponível, e vai liberar o mais breve possível...
    O consumo de memória é outra festa... se você somar todos os percentuais, vai perceber que passa de 100%, por que esse percentual se refere ao total de memória alocada para esse processo e não sobre toda a memória existente...
    Acho que o top merece ser estudado com mais detalhes... não é totalmente intuitivo...

  3. #3
    Visitante

    Padrão cmo é feito o calulo da cpu ?

    Muito obrigado cara pela resposta. valeu mesmo.
    Mas onde eu posso encontrar um material que me explique como o TOP funciona ?

  4. #4
    veiga
    Visitante

    Padrão Re: cmo é feito o calulo da cpu ?

    Citação Postado originalmente por Raquelima2
    Gente... Sei muito bem usar o top. Sei pra que ele me serve.. Mas como ele calula a CPU usada pelo usuário, pelo sistema e ociosa ?
    Como e feito o caluculo ?

    PARECE SIMLPES A PERGUNTA MAS NÃO É...
    Notem : A No momento tenho

    Cpu(s): 1.7% us, 0.7% sy, 0.0% ni, 97.7% id

    com 3 processos assim :
    PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
    639 root 15 0 171m 39m 135m S 1.3 7.9 4:24.85 X
    3744 aluno 16 0 27512 14m 25m R 0.7 2.9 0:02.19 kdeinit
    3314 aluno 15 0 117m 61m 92m S 0.3 12.3 0:09.04 acroread

    Me endentam por favor.
    Um processo quando é processado tem 100 por cento da cpu pra processá-lo PORQUE è 1.7 pro usuário ?
    não é 1.7% pro usuario. o que está acontecendo é que, no momento que tu executou o comando top, 1.7 % do tempo da cpu estava sendo utilizada em modo usuario. o calculo desse valor é feito em 2 leitura, o top le o arquivo /proc/stat, dorme um pouco e le novamente depois ele calcula quantos jiffies, que seriam como tics da cpu, forma feitos entre essas 2 leituras. isso vai dar o tempo d cpu... depois ele verifica qual a porcentagem desse tempo foi utilizada em modo usuario, em modo sistema, doados através do nice e utilizados pelo idle (seriam os jiffies que nao foram usados para fazer nada util).

    Citação Postado originalmente por Raquelima2
    E porque é 1.3 % de cpu para o pid 639 ?
    porque entre as 2 leituras do top (do arquivo /proc/639/stat) o processo 639 usou somente 1.3 %

    Citação Postado originalmente por Raquelima2
    Como o linux faz essa divisão ? Existe parcelamento de uso de cpu ? Como é feito essa divissão pelo kernel ?

    PORFAVO ME AJUDEM...
    isso ja nao tem nada a ver com as respostas anteriores.... isso é feito pelo escalonador de processos do kernel, existe uma lista/fila de processos que vao sendo escalonados para a cpu... como o cara ai em cima falou, também é possivel alterar a prioridade deles.

    Eu fiz uma biblioteca que pega as mesmas informacoes que o top mostra e mais algumas coisas uteis sobre o funcionamento do linux, se tu tiver interesse em saber como são obtidos os valores do top, de uma olhada no arquivo src/proc.c dos fontes da biblioteca (http://freshmeat.net/liblproc/), o codigo esta cheio de comentarios uteis.

    Bom, nao sei se eu entendi as tuas perguntas, confesso que achei meio vago o q tu perguntou... mas espero ter ajudado, qq coisa posta ai!

    Um abraco,

    -
    Marcelo Veiga Neves
    http://www.inf.ufsm.br/~veiga/

  5. #5
    veiga
    Visitante

    Padrão cmo é feito o calulo da cpu ?

    Citação Postado originalmente por Anonymous
    Muito obrigado cara pela resposta. valeu mesmo.
    Mas onde eu posso encontrar um material que me explique como o TOP funciona ?
    Ah, sei lá... um bom comeco é:

    - man top :-)
    - codigos fonte do pacote procps (que contém o top)
    - codigo fonte da minha biblioteca (http://www.freshmeat.net/liblproc), pelo menos tem comentarios em portugues :-)
    - e alguns manuais sobre o /proc filesystem que tu achar no google.


    Falou... espero ter ajudado!


    --
    Marcelo Veiga Neves
    http://www.inf.ufsm.br/~veiga