Este é um esboço e você precisa descobrir todos os detalhes, mas é assim que deve ser possível:
O que você quer pode ser feito usando dois recursos de kernel específicos do Linux, ou seja, cgroups
e o QoS
subsystem com suas políticas de agendamento.
O que você basicamente precisa é colocar o nginx e seus filhos em um cgroup próprio, use o discq
scheduler do QoS que então pode agir no controlador net_cls
(Veja este documento RedHat que descreve aproximadamente net_cls). O que ele faz é acrescentar uma tag a cada pacote que se origina de um soquete que foi criado por um PID vindo do cgroup onde o nginx está.
Você, obviamente, precisa criar a mesma configuração de cgroup para o rsync. Tome cuidado para que você possa fazer todas as máquinas do cgroups antes de chamar o rsync ou configurar o rsyncd de acordo.
Essa 'tag' que está sendo anexada a partir de net_cls, pode ser usada como classid no filtro anexado ao qdisc para passar o tráfego para classes diferentes. Você também precisa definir classes de largura de banda que contenham os limites de largura de banda que você deseja atribuir a seus dois cgroups, como teto de 500 Mbit / s para nginx e 500 Mbit / s para rsync. Por favor, note que as advertências usuais sobre QoS e taxa de limitação ou enfileiramento TCP se aplicam.