Eu tenho um servidor de desenvolvimento no qual sshd
às vezes para de funcionar porque a máquina fica sem memória RAM. Sim, estamos com pouca memória e a atualização não é uma opção viável no momento. O que eu quero fazer é dizer à máquina: "Faça o que quiser, mas deixe de fora 20 MB e um pouco de CPU sshd
!".
Como isso pode ser feito?
performance
limit
phunehehe
fonte
fonte
sshd
for bem comportado, acho que ficaria preso se não houvesse CPU / RAM suficiente para usar, não?Respostas:
Provavelmente, você pode conseguir algo assim usando cgroups com o controlador de recurso de memória .
Eu acho que você colocaria todas as suas tarefas que consomem recursos em um número limitado (CPU e RAM)
cgroup
e deixariasshd
"fora" para que não ficasse restrito.(Adicionar mais troca, mesmo na forma de um arquivo de troca, pode ser uma boa opção.)
fonte
Ah, mas o cgroups é fácil :) Instale o pacote libcgroup. Crie um /etc/cgconfig.conf:
Inicie o
cgconfig
processo que criará a hierarquia, cgroups e defina os limites. Se isso der certo, você tem dois cgroups, ambos com 50% da CPU atribuída e 1G de memória disponível (não sabe qual é a quantidade real de memória disponível; supondo que seja 2G neste exemplo). Agora você só precisa mover todas as tarefas (ou seja, todos os processos em execução no sistema) do grupo raiz para o chup de nosshd:Então você só precisa obter o PID do
sshd
processo e movê-lo para o arquivo de tarefas sshd:Ta-da, você terminou. Agora você pode ter certeza de que o sshd sempre terá 50% da CPU e 1G de memória.
fonte
Use
renice
para obter uma prioridade mais altasshd
ou verificar a contabilidade. (acct) -> com isso, você pode definir recursos para os usuários, então execute sshd com sfonte
ionice
a isso também, e provavelmente começaria o sshd com bom, não renegando-o mais tarde.Uma solução mais geral para o problema do uso de recursos de aplicativos é executar seus aplicativos em um contêiner usando o Docker . Você pode executar contêineres com limites de uso de CPU e memória semelhantes aos cgroups.
fonte