A princípio, a pergunta parece um pouco boba / confusa, pois o sistema operacional faz o trabalho de gerenciar a execução do processo.
No entanto, quero medir quanto alguns processos estão vinculados à CPU / IO e sinto que meu sistema operacional está interferindo em meus experimentos com, por exemplo, processos agendados do sistema operacional.
Tome como exemplo a seguinte situação: Executei o processo A duas vezes e obtive a seguinte saída da ferramenta "time" (colunas de tempo em segundos):
+---+-------+---------+-----------+---------+
|Run|Process|User Time|System Time|Wall time|
+---+-------+---------+-----------+---------+
|1 |A |196.3 |5.12 |148.86 |
|2 |A |190.79 |4.93 |475.46 |
+---+-------+---------+-----------+---------+
Como podemos ver, embora o tempo do usuário e do sistema seja semelhante, o tempo decorrido de ambas muda drasticamente (diferença de ~ 5 min). Parece que algo no meu ambiente causou algum tipo de disputa.
Quero interromper todos os processos / serviços possíveis para evitar qualquer tipo de ruído durante meus experimentos, mas me considero um usuário unix novato / intermediário e não sei como garantir isso.
Estou usando o Linux 4.4.0-45-generic com o Ubuntu 14.04 LTS 64 bits.
Eu realmente aprecio a assistência. Se vocês precisarem de alguma informação que falta, editarei imediatamente minha postagem.
Informações da CPU
$ grep proc /proc/cpuinfo | wc -l
8
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 60
Stepping: 3
CPU MHz: 4002.609
BogoMIPS: 7183.60
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0-7
fonte
nice -19 process
Respostas:
Você tem uma configuração de opção de kernel em que uma CPU não será usada pelo sistema operacional, é chamada
isolcpus
.Esta configuração, que estou prestes a descrever como configurar, pode ter muito mais usos do que nos testes.
A Meru, por exemplo, usa essa tecnologia em seus controladores AP baseados em Linux, para impedir que o tráfego da rede interfira no funcionamento interno do sistema operacional, ou seja, operações de E / S.
Também o uso em um front-end da web muito ocupado, pelas mesmas razões: descobri por experiência de vida que perdi o controle com muita regularidade para o gosto desse servidor; tive que reiniciá-lo com força até eu separar o daemon de front-end em seus próprios processadores dedicados.
Como você possui 8 CPUs, é possível verificar com a saída do comando:
ou
Adicione no Debian / Ubuntu no arquivo
/etc/default/grub
à opçãoGRUB_CMDLINE_LINUX
:(é 7, porque começa em 0 e você tem 8 núcleos)
Então corra,
Isso está dizendo ao kernel para não usar um de seus núcleos.
Reinicie o sistema.
Então inicie seu processo.
Imediatamente após iniciá-lo, você pode mudar para a 8ª CPU (7 porque 0 é a 1ª) e tenha certeza de que é o único usando essa CPU.
Para isso, use o comando:
Para ler mais sobre isso, consulte: isolcpus, numactl e taskset
Também usando
ps -eF
você deve ver na coluna PSR o processador que está sendo usado.Eu tenho um servidor com CPU 2 e 3 isolado e, de fato, pode ser visto com
ps -e
o único processo na terra do usuário, como pretendidopound
.Se você compará-lo com as CPUs não isoladas, elas estão executando muito mais coisas (a janela abaixo desliza ):
fonte
isolcpus