Eu tenho tentado desenvolver uma aplicação que modelaria um sistema usando a Teoria de Gráficos (veja [1]). A teoria de grafos, basicamente, pode ser usada para modelar runnables a fim de descobrir suas partições (runnables agrupadas) e pode ser usado para mapeá-los para núcleos.
Para conseguir isso, precisamos de muitas informações. Como não sei como o Linux (especialmente o Raspbian para nós) o sistema operacional agenda tudo em detalhes e estou interessado em descobrir como nosso algoritmo melhorará a utilização do núcleo, pensei em obter as informações dos processos e tentar modelar eu mesmo.
Para isso, precisamos:
Tamanho da instrução, quantas instruções a CPU executa para concluir a tarefa (muito importante) Memória necessária para o processo, memória física e memória virtual Carga principal para depuração dos processos. Acessos de leitura / gravação, com qual processo ele está se comunicando, é um acesso de leitura ou gravação, que tipo de interface é, e qual é o tamanho da instrução e a memória necessária para ler e / ou escrever. Eu acho que posso extrair algumas dessas informações usando o comando 'top' no Linux. Ele fornece a carga principal, uso de memória, memória virtual e física. Eu também acho que devo mencionar que estou pretendendo usar 'taskset' para colocar processos em núcleos para ver suas informações (veja [2]).
Agora, a primeira pergunta que tenho é como obter efetivamente os tamanhos das instruções, os acessos por r / w e as coisas que listei acima?
Segunda pergunta existe alguma maneira possível de ver runnables de um processo, ou seja, funções simples que ele executa. E também suas informações e acessos de r / w com o outro? Esta questão é simplesmente descobrir uma maneira de modelar um processo em si, em vez das interações de processos?
Terceiro, Vocês sabem se existe uma maneira de visualizar os processos e seus tamanhos de instrução em um gráfico usando alguma ferramenta?
[1] link
[2] Para colocar um processo em um núcleo, eu uso:
pid = $(pgrep -u root -f $process_name -n)
sudo taskset -pc $core $pid &&
echo "Process $process_name with PID=$pid has been placed on core $core"