Restringir o sistema inteiro em certos núcleos, exceto alguns processos?

3

Oi Eu estou executando algum programa sensível à latência em uma máquina Linux (mais especificamente, o CentOS 6), e eu não quero que os segmentos do processo sejam preteridos. Portanto, no meu plano, o primeiro passo é definir a afinidade de cpu dos encadeamentos para que os encadeamentos sejam executados em núcleos separados, para que eles não se antecipem mutuamente. Em seguida, o segundo passo é garantir que outros processos no sistema não sejam executados nesses núcleos.

Então, minha pergunta é: é possível restringir todo o sistema em execução em determinados núcleos, exceto esse processo? Isso deve se aplicar a qualquer processo recém-criado no futuro.

    
por icando 02.06.2014 / 20:36

1 resposta

2

Os cgroups disponíveis no CentOS 6 têm um subsistema cpuset que permite escolher qual processo é executado em qual conjunto de CPUs. Com o subsytem cpuset, você pode criar um cpuset com apenas uma CPU, colocar todos os processos atualmente em execução nesse cpuset, isto é "restringir todo o sistema rodando em certos núcleos" como você afirmou na sua pergunta. Em seguida, você pode criar outro cpuset com as CPUs restantes, iniciar o processo encadeado e colocar o processo no recém-criado cpuset.

Cgroups e cpuset são gerenciados inteiramente com os comandos mount, mkdir e echo.

Existe também o utilitário cset que fornece funções de nível mais alto para o cpuset (com mkdir / echo, você precisa mover cada processo com um loop for em um cpuset).

    
por 02.06.2014 / 21:41

Tags