Eu quero criar uma carga de quase 100% em uma máquina Linux. É um sistema quad core e quero que todos os núcleos funcionem a toda velocidade. Idealmente, a carga da CPU duraria uma quantidade de tempo designada e depois pararia. Espero que exista algum truque no bash. Estou pensando em algum tipo de loop infinito.
281
Respostas:
Você também pode fazer
Para executar mais desses para colocar carga em mais núcleos, tente bifurcá-lo:
Repita o comando entre colchetes tantas vezes quanto o número de threads que você deseja produzir (aqui 4 threads). O simples pressionamento de enter o interromperá (apenas verifique se nenhum outro dd está sendo executado neste usuário ou você o mata também).
fonte
/dev/zero
e escrever para/dev/null
não é um gerador de carga muito bom - você precisa executar muitos deles para gerar carga significativa. Melhor fazer algo parecidodd if=/dev/urandom | bzip2 -9 >> /dev/null
./dev/urandom
requer muito mais esforço para gerar saída ebzip2
gasta muito esforço para compactá-la, portanto o uso geral da CPU é muito maior do que "preencher um bloco com zeros e depois jogá-lo fora".jobs -p | xargs kill
para matar apenas os processos que você criou.Eu uso estresse para esse tipo de coisa, você pode dizer quantos núcleos devem atingir o máximo .. ele também pode estressar a memória e o disco.
Exemplo para forçar 2 núcleos por 60 segundos
stress --cpu 2 --timeout 60
fonte
sudo yum install stress
EPEL
repo para o CentOSwget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
brew
install stress
no OS X. Além disso, por algum motivo eu tive que especificar 8 núcleos em um quad-core MBPrsudo apt-get install stress
em sistemas baseados em debian, para ser completo. Usei isso para testar um mod de resfriamento no kit Intel i7 NUC .Eu acho que este é mais simples. Abra Terminal, digite o seguinte e pressione Enter.
Para utilizar totalmente as CPUs modernas, uma linha não é suficiente; talvez seja necessário repetir o comando para esgotar toda a energia da CPU.
Para terminar tudo isso, basta colocar
A idéia foi originalmente encontrada aqui , embora fosse destinada a usuários de Mac, mas isso também deveria funcionar para * nix.
fonte
yes
comando (assumindo que o sistema estava ocioso).Embora eu esteja atrasado para a festa, este post está entre os principais resultados da pesquisa no Google "gerar carga no linux".
O resultado marcado como solução pode ser usado para gerar uma carga do sistema, estou preferindo usar
sha1sum /dev/zero
para impor uma carga em um núcleo de CPU.A idéia é calcular uma soma de hash de um fluxo de dados infinito (por exemplo, / dev / zero, / dev / urandom, ...) esse processo tentará maximizar o núcleo de uma CPU até que o processo seja abortado. Para gerar uma carga para mais núcleos, vários comandos podem ser canalizados juntos.
por exemplo. gere uma carga de 2 núcleos:
sha1sum /dev/zero | sha1sum /dev/zero
fonte
Um núcleo (não invoca processo externo):
Dois núcleos:
Este último só faz com que os meus dois atinjam ~ 50% ...
Este fará os dois chegarem a 100%:
fonte
renice 19 -p $$
. Ainda maximizará as CPUs, mas não afetará outros processos.Para carregar 3 núcleos por 5 segundos:
Isso resulta em alta carga do kernel (sys) de muitas chamadas do sistema write ().
Se você preferir principalmente a carga da CPU do usuário:
Se você deseja que a carga continue até você pressionar Ctrl-C:
fonte
Aqui está um programa que você pode baixar aqui
Instale facilmente no seu sistema Linux
e inicie-o em uma linha de comando simples
enfatizar todas as suas CPUs (como você tiver) com 40 threads cada, executando uma
sqrt
computação complexa em números gerados aleatoriamente.Você pode até definir o tempo limite do programa
ao contrário da solução proposta com o
dd
comando, que lida essencialmente comIO
e, portanto, não sobrecarrega seu sistema porque trabalha com dados.O programa de estresse realmente sobrecarrega o sistema porque se trata de computação.
fonte
stress
comando. Como essa resposta diz, você pode simplesmente instalá-lo via yum / apt / etc.Essa bomba de garfo causará estragos na CPU e provavelmente travará seu computador.
fonte
Um loop infinito é a ideia que eu também tive. Um de aparência esquisita é:
(
:
é o mesmo quetrue
, não faz nada e sai com zero)Você pode chamar isso em um subshell e executar em segundo plano. Fazer esse
$num_cores
tempo deve ser suficiente. Depois de dormir o tempo desejado você pode matá-los todos, você obtém os PIDs comjobs -p
(dica:xargs
)fonte
Eu dividiria a coisa em 2 scripts:
infinite_loop.bash:
cpu_spike.bash:
fonte
fonte
fonte
Eu usei
bc
( calculadora binária ), pedindo PI com muitas casas decimais.com NUMCPU (no Linux):
Este método é forte, mas parece amigável ao sistema , pois nunca travou um sistema usando isso.
fonte
fonte
:-)
Entrei na Internet para encontrar algo parecido e encontrei esse script muito útil de martelo de CPU.
fonte
NUM_PROC=${1:-10}
.Usando os exemplos mencionados aqui, mas também a ajuda do IRC, desenvolvi meu próprio script de teste de estresse da CPU. Ele usa um subshell por thread e a técnica de loop sem fim. Você também pode especificar o número de threads e a quantidade de tempo interativamente.
fonte
Utilizando idéias aqui, o código criado que sai automaticamente após uma duração definida, não precisa matar processos -
fonte
Isso faz um truque para mim:
e não usa nada, exceto o bash.
fonte
Para melhorar a resposta do dimba e fornecer algo mais conectável (porque eu precisava de algo semelhante). Escrevi o seguinte usando o conceito de carregamento do dd: D
Ele verificará os núcleos atuais e criará muitos threads dd. Iniciar e finalizar o carregamento principal com Enter
fonte
Combinei algumas das respostas e adicionei uma maneira de dimensionar o estresse para todas as CPUs disponíveis:
fonte
O Dimba's
dd if=/dev/zero of=/dev/null
está definitivamente correto, mas também vale a pena mencionar a verificação de como maximizar o uso da CPU para 100%. Você pode fazer isso comIsso solicita uma saída ps de uma média de 1 minuto do uso da CPU por cada processo e depois os soma com awk. Embora seja uma média de 1 minuto, o ps é inteligente o suficiente para saber se um processo dura apenas alguns segundos e ajusta a janela de tempo de acordo. Assim, você pode usar este comando para ver imediatamente o resultado.
fonte
aumentar a carga ou consumir 100% da CPU
então você pode ver o uso da CPU digitando o comando
para liberar a carga
fonte
Basta colar esse bad boy no SSH ou no console de qualquer servidor que esteja executando o Linux.
Você pode matar os processos manualmente, mas eu apenas desligo o servidor quando terminar, mais rápido.Editar: atualizei este script para agora ter um recurso de timer, para que não haja necessidade de interromper os processos.
fonte