Atualmente, estou no processo de depuração de uma instalação do Cacti e quero criar carga de CPU para depurar meus gráficos de utilização da CPU.
Tentei simplesmente executar cat /dev/zero > /dev/null
, o que funciona muito bem, mas utiliza apenas 1 núcleo:
Existe um método melhor de testar / maximizar os recursos do sistema sob carga?
Relacionado: Como posso produzir alta carga de CPU no Windows?
performance
debian
benchmarking
Der Hochstapler
fonte
fonte
cat
simultaneamente?screen
sessões. Mas eu preferiria uma solução mais sofisticada, se possível.cat /dev/random > /dev/null
. Acho que/dev/zero
funciona também. :-)Respostas:
Tente
stress
É praticamente o equivalente do Windowsconsume.exe
:fonte
sudo apt-get install stress
sudo yum install stress
sudo pacman -S stress
brew install stress
no OS XNão é necessário instalar nenhum pacote extra, seu bom e velho shell é capaz de fazê-lo sozinho.
Esse liner carregará seus quatro núcleos 1 em 100%:
Como funciona é bastante simples, inicia quatro loops sem fim. Cada um deles está repetindo a instrução nula (
:
). Cada loop é capaz de carregar um núcleo de CPU a 100%.Se você usar
bash
,ksh93
e outras conchas apoio faixas, (ou seja, nãodash
anos ou maisksh
), você pode usar essa sintaxe não portátil:Substitua
4
pelo número de CPUs que você deseja carregar, se diferente4
.Supondo que você ainda não estivesse executando o trabalho em segundo plano quando lançou um desses loops, é possível parar a geração de carga com esse comando:
Respondendo ao comentário de @ underscore_d, aqui está uma versão aprimorada que simplifica bastante a interrupção do carregamento e também permite especificar um tempo limite (padrão 60 segundos). A Control- Ctambém matará todos os loops descontrolados. Esta função shell funciona pelo menos sob
bash
eksh
.1 Observe que, com as CPUs suportando mais de um encadeamento por núcleo (Hyper-threading), o sistema operacional envia a carga para todas as CPUs virtuais. Nesse caso, o comportamento do carregamento depende da implementação (cada encadeamento pode ser relatado como 100% ocupado ou não). .
fonte
&
faz com que um comando seja executado em um thread ou núcleo separado ? Estou confuso.killall bash
- apenas verifique se não há nenhum outro script importante em execução no momento.killall bash
. Resposta editada para adicionar um método mais seguro para finalizar a geração de carga.Eu fiz um script python simples que faz o mesmo. Você pode controlar o número de núcleos da CPU que deseja carregar. O bom disso é que ele não consumirá nenhum outro recurso além da CPU. (Acho que a ideia de mark johnson consumiria muitos recursos de E / S, o que é indesejável aqui.)
Basta executar este script no terminal
$ python temp1.py
. Você precisa matar o script quando terminar.Aqui está minha saída de consumo de CPU quando eu carrego 3 dos meus núcleos.
fonte
Uma maneira alternativa seria
ou (se nproc estiver presente)
O OpenSSL está quase sempre presente nas distros de hoje em dia, portanto, nenhum pacote extra é necessário.
fonte
Comece dois
comandos para todos os núcleos do seu sistema.
Parar
ou
fonte
Eu normalmente uso o pacote cpuburn:
Substitua 4 pelo número de núcleos / threads HT que você tem ou deseja enfatizar.
Nota: Isso enfatiza o máximo possível de área de chip ao mesmo tempo, e está programado para gerar a máxima dissipação de energia. Eu tive que escrever este post uma segunda vez, de alguma forma minha máquina não gostou :-(
Você também pode executar cpuburn em sequências:
E quando você quiser detê-los:
Você também pode multiplicar
burnP6 &
para corresponder ao número de núcleos da CPU no seu sistema.fonte
Estou desenvolvendo o stress-ng, uma ferramenta de estresse atualizada que pode enfatizar uma ampla gama de aspectos de um sistema Linux. Para mais informações, consulte http://kernel.ubuntu.com/~cking/stress-ng/
O uso é semelhante ao estresse
Instale com
fonte
Você pode executar esse comando quantas vezes quiser e ele terá um núcleo diferente a cada vez:
fonte
killall cat
deve fazê-lo.cat
processos em execução (eu normalmente faço).https://github.com/GaetanoCarlucci/CPULoadGenerator
solução bastante simples e científica.
Aqui você pode ver um exemplo de dinâmica em que 50% da carga é gerada no núcleo da CPU 0:
Você pode executar o processo em outros núcleos ao mesmo tempo.
fonte
Combinei + jlliagre e + ecabuk.
fonte
Você pode usar:
Repita o procedimento
dd if=/dev/zero of=/dev/null
para os núcleos da CPU.Pressione qualquer tecla para interromper o teste.
fonte
pxz
é uma implementação paralela dexz
.pxz -9e /dev/zero --stdout >/dev/null
deve fazer o truque, pois isso é bastante intensivo da CPU.Se
/dev/zero
não for rápido o suficiente (você percebe que apxz
otimização da E / S) é possívelpxz -9e /dev/zero --stdout | pxz -9e --stdout >/dev/null
As versões mais recentes do
xz
têm a--threads
opção que é um substitutopxz
.fonte
Aqui está a maneira que eu uso e não há necessidade de instalar nada extra.
Por exemplo, para começar com 4 processos,
Você pode alterar o número de processos pela opção "-P" acima.
fonte
Uma linha de comando simples também:
fonte
while : ; do : ; done
for i in 1 2 3; do while : ; do : ; done & ; done
Queria adicionar isso ao comentário de @ jlliagre, mas não tenho reputação suficiente. Se você usar esse código em vários servidores e a contagem de CPU variar, poderá usar o seguinte comando:
Isso utilizará todos os núcleos do servidor, independentemente de quantos você tiver. O comando
nproc
faz parte do coreutils, portanto deve estar na maioria das instalações do Linux.fonte