Você pode tentar limitar seu programa diminuindo a prioridade com bom. Nenhuma programação envolvida lá.
Você pode tentar limitar seu programa diminuindo a prioridade com bom. Nenhuma programação envolvida lá.
A execução na CPU "50%" não é tão significativa. Você quer que o programa use todos os recursos possíveis quando estiver disponível. Se a CPU não estiver fazendo mais nada, esse programa também pode aproveitá-la completamente. Se você quisesse que o programa realmente não fizesse nada, você teria que modificar o código-fonte e colocar em pausas / pausas onde fosse possível.
O que você quer é ter todo o resto com maior prioridade. Veja a manpage do belo comando, execute-o em nice 19
Outra maneira possivelmente mais eficaz de limitar recursos é instalar o pacote schedutils e executar o programa usando o agendador de processos SCHED_BATCH.
Setrlimit e co ...
#include <sys/resource.h>
#include <sys/time.h>
#include <unistd.h>
int main ()
{
struct rlimit rl;
/* Obtain the current limits. */
getrlimit (RLIMIT_CPU, &rl);
/* Set a CPU limit of 1 second. */
rl.rlim_cur = 1;
setrlimit (RLIMIT_CPU, &rl);
/* Do busy work. */
while (1);
return 0;
}
daqui
Você está procurando por algo simples e rápido? Experimente o programa de credencial . Basta executar:
cpulimit name-of-program
e voila, é limitado.
Se você não quiser modificar o programa, outra opção a considerar é a virtualização.
Se você quiser limitar a cpu de um processo, com base no conceito de porcentagem, considere cpulimit .
Você pode fazer manualmente o fatiamento de tempo dentro do aplicativo usando um cronômetro de alto desempenho e medindo quanto tempo cada iteração de um loop de nível superior está tomando e, em seguida, colocar em pausas adequadas (ou nanosleeps) nesse loop. Isso não se correlacionará diretamente a uma porcentagem de CPU, especialmente entre máquinas, mas limitará os recursos de CPU que o programa leva.
Dê uma olhada nos Grupos de Controle.
O LWN tem um artigo sobre eles .
Redhat, Fedora, CentOS têm um pacote RPM chamado libcgroup que tem várias ferramentas úteis de linha de comando, um daemon do sistema e alguns arquivos de configuração para gerenciar grupos de controle.
Isso é baseado no libcg hospedado no SourceForge.
Tags linux