Introdução
Neste laboratório, você aprenderá como verificar a configuração do escalonador (scheduler) do kernel no Linux. O escalonador é um componente fundamental que gerencia como os processos compartilham o tempo da CPU. Compreender suas configurações é crucial para a análise de desempenho e solução de problemas.
Através de passos práticos, você explorará três métodos para inspecionar as configurações do escalonador: usando o comando sysctl para visualizar os parâmetros do kernel, examinando o sistema de arquivos /proc/sys/kernel para arquivos relacionados ao escalonador e inspecionando os logs do kernel via dmesg para mensagens específicas do escalonador. Essas técnicas fornecem diferentes perspectivas sobre o estado e o comportamento atuais do escalonador.
Verificar as configurações do escalonador com sysctl kernel.sched
Neste passo, exploraremos como verificar as configurações do escalonador (scheduler) do kernel usando o comando sysctl. O escalonador é uma parte crucial do kernel Linux que decide qual processo pode ser executado na CPU e por quanto tempo. Compreender suas configurações pode ser útil para o ajuste de desempenho e solução de problemas.
O comando sysctl é usado para modificar os parâmetros do kernel em tempo de execução. Também podemos usá-lo para visualizar os valores atuais desses parâmetros. Os parâmetros do kernel são organizados em uma estrutura hierárquica, semelhante a um sistema de arquivos.
Para visualizar os parâmetros relacionados ao escalonador do kernel, podemos usar sysctl com o prefixo kernel.sched.
Abra seu terminal, caso ainda não esteja aberto. Você pode encontrar o ícone do Xfce Terminal no lado esquerdo da sua área de trabalho.
Agora, digite o seguinte comando e pressione Enter:
sysctl kernel.sched
Você deve ver uma saída semelhante a esta, mostrando vários parâmetros relacionados ao escalonador e seus valores atuais:
kernel.sched_child_runs_first = 0
kernel.sched_min_granularity_ns = 8000000
kernel.sched_wakeup_granularity_ns = 9000000
kernel.sched_latency_ns = 24000000
kernel.sched_migration_cost_ns = 50000
kernel.sched_nr_migrate = 32
kernel.sched_tunable_scaling = 1
kernel.sched_domain.cpu0.domain0 = ...
kernel.sched_domain.cpu0.domain1 = ...
...
A saída exata pode variar ligeiramente dependendo da versão específica do kernel e da configuração do sistema. Este comando fornece um instantâneo de como o escalonador está configurado atualmente.
Compreender cada um desses parâmetros está além do escopo deste laboratório introdutório, mas a principal conclusão é que sysctl kernel.sched é o comando a ser usado quando você deseja inspecionar essas configurações.
Clique em Continuar para prosseguir para o próximo passo.
Verificar o escalonador em /proc/sys/kernel
No passo anterior, usamos sysctl para visualizar os parâmetros do kernel. Outra maneira de acessar e, às vezes, modificar esses parâmetros é através do sistema de arquivos /proc. O sistema de arquivos /proc é um sistema de arquivos virtual que fornece informações sobre processos e outras informações do sistema.
Os parâmetros do kernel acessíveis via sysctl são frequentemente espelhados no diretório /proc/sys. Especificamente, os parâmetros relacionados ao escalonador podem ser encontrados em /proc/sys/kernel/.
Vamos navegar para este diretório e listar seu conteúdo. Usaremos o comando cd para mudar de diretório e ls para listar arquivos e diretórios.
Digite o seguinte comando para mudar seu diretório atual para /proc/sys/kernel/:
cd /proc/sys/kernel/
Agora, liste os arquivos neste diretório:
ls
Você verá uma longa lista de arquivos, cada um representando um parâmetro do kernel. Procure por arquivos que começam com sched_. Esses arquivos correspondem aos parâmetros kernel.sched que vimos com sysctl.
...
sched_child_runs_first
sched_latency_ns
sched_migration_cost_ns
sched_min_granularity_ns
sched_nr_migrate
sched_rr_timeslice_ms
sched_rt_period_us
sched_rt_runtime_us
sched_shares_window_ns
sched_tunable_scaling
sched_wakeup_granularity_ns
...
Você pode visualizar o conteúdo desses arquivos usando comandos como cat. Por exemplo, para ver o valor de sched_latency_ns, digite:
cat sched_latency_ns
Você deve ver um número, que é o mesmo valor que você viu para kernel.sched_latency_ns ao usar sysctl.
24000000
Isso demonstra que as informações fornecidas por sysctl kernel.sched são provenientes de arquivos dentro do diretório /proc/sys/kernel/. Embora sysctl seja frequentemente mais conveniente para visualizar e modificar parâmetros, entender o sistema de arquivos /proc oferece uma visão mais profunda de como o kernel expõe seu estado interno.
Clique em Continuar para prosseguir.
Inspecionar logs do escalonador em dmesg
Neste passo final, veremos as mensagens do kernel relacionadas ao escalonador usando o comando dmesg. dmesg é um comando que exibe as mensagens do buffer de anel do kernel. Essas mensagens são geradas pelo kernel durante a inicialização e em tempo de execução e podem conter informações valiosas sobre hardware, drivers e eventos do sistema, incluindo atividades do escalonador.
Enquanto sysctl e /proc/sys mostram a configuração atual, dmesg pode, às vezes, mostrar mensagens relacionadas à inicialização do escalonador ou eventos significativos.
Para visualizar as mensagens do kernel, digite o seguinte comando:
dmesg
Isso provavelmente produzirá uma saída muito longa, pois mostra todas as mensagens do kernel desde que o sistema foi inicializado. Para encontrar mensagens especificamente relacionadas ao escalonador, podemos usar o comando grep para filtrar a saída. Vamos procurar linhas contendo a palavra "sched".
Digite o seguinte comando:
dmesg | grep sched
O símbolo | é chamado de pipe. Ele pega a saída do comando à esquerda (dmesg) e a envia como entrada para o comando à direita (grep sched). grep sched então procura por linhas contendo "sched" na entrada que recebe.
Você pode ver uma saída semelhante a esta, mostrando mensagens relacionadas ao escalonador durante a inicialização do sistema:
[ 0.000000] Linux version ... (gcc version ...) #... SMP ...
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-... root=... ro quiet splash vt.handoff=...
[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-... root=... ro quiet splash vt.handoff=...
[ 0.000000] PID scheduler: ...
[ 0.000000] Mount-cache hash table entries: ... (order: ..., 65536 bytes, linear)
[ 0.000000] Mountpoint-cache hash table entries: ... (order: ..., 65536 bytes, linear)
[ 0.000000] CPU: Testing write buffer coherency: ...
[ 0.000000] smpboot: CPU0: ...
[ 0.000000] setup_percpu: System has ... CPUs.
[ 0.000000] percpu: Embedded ... pages/cpu s...
[ 0.000000] pcpu: PCPU: ...
[ 0.000000] Built 1-level schedule group tree
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is ...
[ 0.000000] rcu: Adjusting scheduler-enlistment delay with ...
[ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=... to nr_cpu_ids=...
[ 0.000000] rcu: rcu_sched detected stalls on CPUs/tasks:
...
Novamente, a saída exata variará. Este comando é útil para diagnosticar problemas ou entender como o escalonador foi inicializado pelo kernel.
Você agora aprendeu três maneiras diferentes de obter informações sobre o escalonador do kernel Linux: usando sysctl para os parâmetros atuais, inspecionando arquivos em /proc/sys/kernel/ e verificando as mensagens do kernel com dmesg.
Clique em Continuar para concluir este laboratório.
Resumo
Neste laboratório, aprendemos como verificar a configuração do escalonador do kernel no Linux usando dois métodos principais. Primeiro, utilizamos o comando sysctl kernel.sched para visualizar vários parâmetros relacionados ao escalonador e seus valores atuais, fornecendo um instantâneo das configurações de tempo de execução do escalonador.
Em segundo lugar, exploramos o sistema de arquivos /proc como uma maneira alternativa de acessar os parâmetros do kernel, focando especificamente no caminho /proc/sys/kernel, que espelha os parâmetros acessíveis via sysctl. Essas etapas demonstraram como inspecionar a configuração do escalonador do kernel por meio de utilitários de linha de comando e do sistema de arquivos virtual.



