Gerenciamento de recursos de servidor compartilhado

Gerenciamento de recursos de servidor compartilhado

Temos um servidor Xeon local executando Ubuntu LTS que é compartilhado por poucos desenvolvedores. Cada desenvolvedor faz login com seu usuário e executa várias cargas de trabalho nele. O problema que enfrentamos é que, em algum momento, uma carga de trabalho extensa de CPU ou armazenamento é executada, os outros usuários não conseguem realmente trabalhar na máquina e o shell deixa de responder.

Tentamos pedir ao usuário para limitar a utilização da CPU durante a compilação e isso resolveu os problemas da CPU, mas aparentemente a utilização de E/S do disco continua a ser um problema. Estamos usando armazenamento SSD.

A utilização de máquina virtual no servidor não é uma possibilidade, pois não queremos limitar fortemente os recursos. só queremos ter certeza de que não haverá falta de recursos para outros usuários.

Que opções temos?

Responder1

Quão flexível é a modificação das cargas de trabalho? Existem utilitários como o nice que podem limitar a prioridade dos processos e restringir a quantidade de fatia que eles podem obter.

https://www.geeksforgeeks.org/nice-and-renice-command-in-linux-with-examples/#

Mas, como você já observou, esta solução não é perfeita porque o problema aqui provavelmente será que, quando apenas um usuário estiver ligado, ele não conseguirá usar o sistema em todo o seu potencial. E isso pode ser apenas um novo problema.

Disk IO, outros perguntaram e elaboraram soluções como a resposta aquihttps://unix.stackexchange.com/questions/536007/cgroups-throttle-per-user-disk-io-bandwidth-on-linux

Receio que provavelmente não haverá uma solução perfeita. É por isso que coisas como a virtualização se tornaram tão populares para fazer uso mais eficiente dos recursos partilhados.

Como todas as coisas do Linux, provavelmente existem mais soluções por aí (e talvez até sistemas projetados para aproveitá-las)

IMHO, para fazer isso corretamente, provavelmente exigiria algum agendamento no nível do kernel ou alguma interface para usar as opções de agendamento já existentes, não tenho conhecimento de nenhuma. ...Mas eu já errei antes, então se alguém sugerir uma solução, eu também aprenderei! Portanto, a resposta pode ser que não há resposta sem aceitar concessões.

informação relacionada