Processa dados de programação no linux

3

Estou fazendo um projeto no sistema operacional e exijo os dados de agendamento de processos para um sistema operacional. Os dados devem incluir a lista de todos os processos no agendador de curto prazo e no agendador de longo prazo, juntamente com o intervalo de tempo da CPU e o requisito de memória de cada um deles. Também preciso dos dados sobre quando e por qual processo todos os outros processos são eliminados. Existe uma maneira de coletar todos os dados no linux? Como posso fazer isso?

No código-fonte do Linux, existe uma estrutura task_struct in include/linux/sched.h . Existe uma maneira de obter o estado de todos os objetos dessa estrutura também?

    
por demonSlayer 07.02.2016 / 05:18

3 respostas

2

Você pode obter muitas informações internas sobre processos, o agendador e outros componentes do sistema operacional e do hardware usando

cat /proc/...

onde ... pode ser muitas coisas. Por exemplo, pode ser um ID de processo, seguido por uma grande quantidade de solicitações de informações específicas ou solicitação de informações de depuração do planejador, por exemplo:

cat /proc/sched_debug

Para ver a lista completa de opções, digite ls /proc . Você verá uma longa lista de números de identificação de processo, mas também alguns nomes interessantes, como sched_debug, cpuinfo, meminfo, uptime e muito mais.

Tudo isso está disponível graças ao sistema de arquivos virtual procfs Você pode ler mais sobre isso aqui .

Outro comando útil é:

top

Isso mostrará informações em tempo real sobre como os processos estão agendados, o uso da memória e muito mais.

    
por 07.02.2016 / 07:22
3

Se você precisar de informações detalhadas sobre o agendamento, poderá usar uma dessas ferramentas -

  1. perf
  2. SystemTap
  3. dtrace (eu não sei qual é o estado da porta linux)
  4. sysdig

Todos eles podem acessar os ganchos do kernel para exibir eventos como interrupções de contexto, interrupções, E / S, chamadas do sistema, etc.

    
por 07.02.2016 / 07:33
2

O comando ps é um bom lugar para começar. Ele permite que você especifique quais informações exibir para um conjunto de processos selecionados (possivelmente todos os processos). Você pode ler a página man para obter informações detalhadas sobre as informações disponíveis que você pode obter, que são especificadas como sinalizadores para a opção -O .

O seguinte é um começo para o que você pode querer:

 ps -O "%mem nice state upr pri cpu"
    
por 07.02.2016 / 06:05