Reduz o bloqueio do disco io usando muitos dispositivos?

3

Eu executo um servidor da web com alguns aplicativos da web no apache no mesmo dispositivo.

Outro dia tive que executar um chown -R e um chmod -R em uma pasta contendo mais de 100.000 arquivos. Isso levou algum tempo e percebi que o disco IO fazia com que todos os aplicativos ficassem extremamente lentos por um longo tempo. O uso da CPU também foi alto por minutos após os comandos terem sido feitos.

O uso de vários dispositivos reduziria o bloqueio de E / S do disco?

Se eu tivesse cada aplicativo em dispositivos diferentes, o IO do disco afetaria o desempenho geral do servidor da mesma maneira?

O bloqueio de E / S do disco é dividido por disco ou no sistema como um todo?

    
por TNordkvist 30.11.2016 / 10:58

2 respostas

1

Dispositivos mecânicos de armazenamento são lentos porque são mecânicos. (Outros dispositivos de armazenamento não mecânicos também podem ser lentos, mas por diferentes razões e de maneira diferente.) Cada operação de E / S em um disco mecânico demora um tempo fixo ( tempo de busca , na ordem de milissegundos) para localizar uma posição no disco, além de uma quantidade variável de tempo para transferir os dados (normalmente entre 40 e 200 MiB / s, dependendo das características do disco). Ao realizar muitas pequenas operações, o tempo de busca domina; um único disco giratório é limitado a algumas centenas de operações de E / S por segundo (IOPS) - um caro disco SAS de 15 kRPM será bom para cerca de 200 IOPS, um disco SATA regular de 7,2 kRPM para 100 e um pequeno e barato 5.4 Disco de kRPM por cerca de 70.

O uso de vários discos pode ajudar - desde que as operações de E / S sejam distribuídas entre os discos disponíveis . A distribuição das operações de E / S entre os discos disponíveis pode ser executada automaticamente por meio de uma configuração adequada de software ou hardware. O uso de hardware dedicado, como matrizes de armazenamento conectadas por meio de uma Rede de área de armazenamento é preferencial em aplicativos corporativos; para uso privado, a abordagem comum é usar software RAID ; Um bom ponto de partida é o wiki Linux RAID . O RAID pode aumentar o throuhput, a confiabilidade ou ambos; Se o objetivo é aumentar a taxa de transferência, você deve considerar os níveis de RAID com distribuição, como RAID 0 e RAID 10.

    
por 30.11.2016 / 12:07
0

Eu acho que o problema é que a maioria dos sistemas de arquivos não suporta muito arquivos.

Portanto, tente não ter tantos arquivos em um único diretório, mas dividir em subdiretórios.

Quando você faz uma operação lenta, você pode nice/renice the chmod para que não perturbe muito do servidor web. Mas, como escrevi no primeiro parágrafo, este é um problema de muitos arquivos, o bloqueio excessivo e o tempo no modo kernel, o que realmente não resolve.

Ter outros dispositivos pode ajudar, mas IMHO não é uma operação IO real do que o kernel por causa de um diretório enorme.

[Nota: mover arquivos extra grandes não causa lentidão, por isso não é apenas I / O]

    
por 30.11.2016 / 15:00

Tags