Artigos Técnicos
Análise de Subsistemas Avançados de Armazenamento
Os discos rígidos ainda constituem o elemento fundamental de todo e qualquer subsistema de armazenamento. Avanços tecnológicos permitiram ao longo dos anos que eles armazenassem quantidades cada vez maiores de dados, e que os mesmos fossem acessados em tempos cada vez menores. Um bom exemplo do mercado atual são os discos ATA 7200 rpm com 200 GBs da Seagate. É normal encontrar-se discos disponíveis ao mercado de varejo, modificados, ocupando o centro de subsistemas de armazenamento comerciais de outras empresas.
A mudança conceitual entretanto, foi pequena. Ainda estamos falando de “pratos” metálicos, interligados pelo centro por um eixo comum, girando a diferentes velocidades, recobertos de material magneto-resistivo, no qual circuitos ou bobinas gravam pequenos imãs, cuja polaridade ou presença indica 0´s e 1´s. Portanto, a velocidade de rotação e a de acesso do braço atuador, os conceitos mecânicos utilizados para a análise dos discos antigos continuam valendo, mesmo que parcialmente. Mas, algumas das mudanças tecnológicas introduzidas alteram características importantes, influenciando o resultado final desejado.
Durante sua operação, a velocidade de rotação (em rotações por minuto, ou RPMs) de um disco mantém-se constante (7.200, 10K e 15K sendo as mais comuns atualmente). Tomando-se como exemplo o de 10krpm, o disco ou o conjunto dos discos completa uma rotação a cada 6 mS, normalmente definindo-se em 3mS o valor médio de latência.
A figura abaixo mostra as especificações de alguns discos FC da Seagate:
Figura 1 –
Características internas de drives Seagate FC
Como mostrado no exemplo acima, a velocidade de rotação do modelo ST3146807FC é de 10.008 rpm, sendo sua latência média, apresentada como metade do período (2,99mS). O número de Kbytes por trilha é apresentado como um valor médio (368).
Um aspecto interessante aqui é que, mantidas a velocidade de rotação (10Krpm) e a densidade de Kbits por polegada (570), conclui-se que as trilhas mais externas (de maior diâmetro) armazenam uma quantidade maior de dados que as mais internas, como mostra a figura abaixo :
Figura 2 – Mudança
na densidade de transferência / tempo devido a localização de trilha
Daí resultam os valores de taxas de transferência diferentes (conforme mostrados na Figura 1) e apresentados como uma faixa (Internal Data Rate 475-841 Mbps). As menores taxas de transferência ocorrem enquanto as cabeças de leitura e gravação estão posicionadas sobre as trilhas mais internas (mais próximas ao centro) e, as maiores sobre as mais externas. Valores médios podem ser utilizados, quando é necessário um único número (algumas modelagens podem exigir isso).
Dica 1 : os cilindros mais externos de um disco transferem dados a taxas substancialmente maiores que os internos. Utilize-os para seus arquivos que requeiram maiores velocidades NO DISCO (desconsiderando-se outros fatores, como transferências de cache, por exemplo). |
Ainda é importante notar que a variação é grande. No caso do exemplo acima, os cilindros mais externos transferem dados a quase 1.8 vezes a velocidade dos mais internos. Praticamente o dobro da velocidade, no mesmo disco físico.
As trilhas e, conseqüentemente, os cilindros, são formados por posições estacionarias do braço atuador, que sustenta as cabeças de leitura/gravação, sobre a superfície dos discos. Logo, o tempo de deslocamento mecânico do atuador também afeta a velocidade com que os dados são gravados ou recuperados. A figura abaixo mostra as especificações do modelo de exemplo:
Figura 3 –
Especificações de seek
Conforme mostrado acima, a movimentação do braço atuador de uma trilha para a trilha vizinha (anterior ou posterior), é chamado de “Single track seek”. Este modo de movimentação é mais lento que, por exemplo, o “Full stroke seek”, ou a movimentação desde a primeira até a última trilha do disco. Para se verificar isto, basta multiplicar-se o tempo típico de um “single track” (0,55mS) pelo número de trilhas em uma superfície (49855 – ver Fig.1), e comparar o resultado com o valor médio do “full stroke” (9,2mS).
Isto se deve ao mesmo comportamento observável nos elevadores modernos. Quando se deslocando, por exemplo, do primeiro ao último andar, os motores recebem uma potência maior (ou pulsos mais freqüentes), do que quando se deslocam para o próximo andar.
De um modo geral, pode-se dividir as fases de energização do mecanismo atuador em 5 fases distintas :
Estacionário (“track-following”) : o mecanismo recebe pulsos de curta duração, negativos ou positivos, apenas para manter o alinhamento com a trilha atual, de acordo com as informações da superfície (ou área embutida) de servo | |
Carga plena (“full-drive”) : período no qual toda a potencia é aplicada ao mecanismo, para acelerá-lo ao máximo (controlado via servo), no menor tempo possível | |
Manutenção (“coarse”) : manutenção da velocidade máxima, através de eventuais pulsos de grande potencia, porém pouca duração. A idéia aqui é apenas manter, e não acelerar. | |
Frenagem (“full-reverse”) : pulsos de grande intensidade e freqüência, aplicados no sentido OPOSTO ao utilizado durante a aceleração. O objetivo aqui é frear o conjunto, devido à aproximação da localidade desejada. | |
Aproximação : semelhante ao “coarse”, porém já em velocidade mais baixa. |
E volta ao estacionário novamente, já posicionado sobre a trilha desejada.
N.A.: alguns fornecedores incluem uma fase adicional chamada “settle time” em sua especificação de seek. Este é o tempo que o conjunto mecânico leva para estabilizar na posição após sua movimentação, sendo atualmente da ordem de 0,1 mS.
Entretanto, quando a movimentação desejada é relativamente pequena, a fase de aceleração tem menor duração ou nem sequer existe, causando a grande diferença nos tempos apresentados na tabela da Fig.3. A decisão de quando utilizar maiores velocidades ou não muda de modelo para modelo.
Os sistemas MainFrame têm, ao longo dos últimos anos, utilizado o formato (ou “geometria”) de trilha dos antigos IBM-3390, dando ainda bastante preferência ao seu modelo 3 (2.838 GBytes, 3339 cilindros, 15 trilhas / cilindro, 56664 bytes por trilha, formatação CKD).
Conforme mostrado na tabela da Fig.1, uma trilha do disco utilizado aqui como exemplo comporta até 368 Kbytes em média (ver 1.2 – Taxas de transferência). Isto chega a ser mais de 6.5 vezes o tamanho de uma trilha de um volume 3390.
Assumindo-se que nenhum esquema RAID seja utilizado, isto significa que várias trilhas lógicas do modelo simulado acabam por localizar-se fisicamente em uma única trilha física do disco rígido real.
Além disso, o mapeamento de dados é basicamente o definido no protocolo SCSI, com tamanhos de bloco ajustáveis entre 512 e 528 bytes, o que faz com que as trilhas dos volumes lógicos sejam fisicamente definidas em aproximadamente 110 blocos. As unidades de transferência, ou “frames”, podem variar de 256 a 2112 bytes. Portanto, a transferência de uma única trilha lógica pode implicar em várias operações SCSI ou FC-AL para se completar. O mapeamento entre o número do bloco (“SCSI logical block addres”) e a trilha simulada correspondente fica por conta dos algoritmos de controle implementados no subsistema.
Conseqüentemente, os cilindros do volume lógico também não mantêm mais correspondência alguma com sua localização física final. Atualmente, reservar um único cilindro para evitar movimentações do atuador não funciona mais.
Um último fator importante a se considerar nesta área é o mapeamento ou distribuição dos volumes lógicos no espaço físico disponível. Apesar de uma forte preferência pelos modelos IBM/3390-3, principalmente com o intuito de evitar concorrências em dados de alta prioridade, é importante manter-se em mente que no final, o disco físico é quem pode ser engargalado, independentemente do modelo de simulação utilizado.
Somente a titulo de exemplo, o disco de 146 Gbytes poderia conter 51 unidades 3390-3 (ainda sem quaisquer considerações sobre esquemas de proteção). Caso todos os 51 volumes apresentem altas taxas de utilização, o resultado final será a contenção apresentada por um único e fictício “3390-146”, acrescido da maior dificuldade de gerenciamento.
É claro que a dispersão dos dados de uma instalação entre diversos volumes menores diminui a contenção interna (entre as aplicações) por um único volume. Mas o fato dos volumes lógicos atualmente compartilharem os recursos mecânicos com vários outros, aliado a novas facilidades nos sistemas IBM-OS/390 e IBM-z/OS, como o PAV-MA (“Parallel Access Volume-Multiple Allegiance”) apontam em outra direção.
Dica 2 : ao dispersar seus dados, leve em
consideração os volumes físicos nos quais eles residirão. Caso a
controladora suporte, valha-se do PAV-MA para evitar contenções
intravolume e opte por volumes lógicos maiores. |
Assim como quaisquer dispositivos mecânicos, uma unidade de disco rígido também apresenta suas limitações. Uma maneira simples de defini-las seria partir das especificações mostradas nas figuras acima.
A rotação de um disco de 10Krpm faz com que uma volta seja completada em, no máximo, 6 mS, e o maior deslocamento do atuador levaria entre 9.2 e 9.7 mS. Portanto, no pior caso, somando-se o maior seek com o maior atraso rotacional, teríamos um tempo mecânico de aproximadamente 16 mS para uma operação. De acordo com a Fig.1, a pior taxa de transferência de dados seria de 475 MB/S, o que faria uma leitura de 16 Kbytes levar algo em torno de 34 uS, acrescentando pouco aos valores acima (os valores de transferência vão subir posteriormente, durante a transmissão da unidade de disco à sua controladora, por exemplo a 100 MB/s em um link FC-AL; no caso de nosso exemplo, subiriam para 161,5 uS, utilizando-se o mesmo link mencionado anteriormente).
Portanto, levando-se em conta apenas os números referentes aos movimentos mecânicos, temos que um máximo de 62,5 I/O´s por segundo seria o máximo que o dispositivo poderia executar, dadas condições extremamente adversas. É importante lembrar que este número aplicá-se ao DISCO FÍSICO, e não aos volumes 3390 simulados nele. Voltando ao exemplo do item anterior, temos 51 volumes lógicos 3390-3 simulados em um único disco físico. Isto significa que 62,5 Iops seria o máximo de operações que os 51 volumes poderiam executar por segundo, ou 1,2 iops / 3390-3, aproximadamente.
Inversamente, caso utilizemos o menor tempo de seek (0,55 mS, “single track seek”), e 1 mS de atraso rotacional, teríamos um tempo de 1,55 mS por operação, o que nos levaria a espantosos 625 iops por disco físico, ou 12,3 iops em média por 3390-3 (ainda no caso do nosso exemplo anterior). A média de tempos de resposta encontrada no mundo real para operações de leitura em blocos de 16Kbytes vai de 19 a 25 mS, dependendo do subsistema utilizado, os acréscimos ficando por conta das simulações (lembrar, por exemplo, do número de operações SCSI que tem de ser efetuadas para trazer os 16Kbytes do registro a ser lido, e que seria normalmente um único registro em uma única trilha – item 1.4 acima).
Um ponto importante aqui é que os discos físicos ainda levam tempos da ordem de dezenas de milisegundos para completar uma operação. Os tempos menores, por volta de 2 a 5 mS aos quais nos acostumamos só são possíveis devido a existência de caches. Um ambiente 100% CACHE MISS continuará a observar tempos iguais ou maiores aos que víamos na época dos 3390´s ou 3380´s, em média acima de 20 mS, sendo o “DISCONNECT TME” seu maior componente.
Dica 3 : ao dispersar a carga dos discos, utilize o valor médio de 120 iops por disco físico, e de preferência aos maiores IO rates e menores cache-hits (ou mais especificamente, maiores DASD IO RATES). |
Os novos discos, além de maiores velocidades e capacidades, também apresentam uma serie de recursos adicionais em seus circuitos locais de controle, como o buffer local, ou ALB (“Actuator Level Buffer”), processamento de filas de operações armazenadas, pré-leitura de dados e mudança da ordem das operações. A figura abaixo mostra parte da lista destes novos recursos ainda do mesmo disco FC-AL 146 Seagate usado como exemplo até agora :
Figura 4 – Especificações de funcionalidades
Como pode ser visto na figura acima, este dispositivo pode manter até 128 operações pendentes na memória (“queue-depth”) e atender a até 32 “initiators” diferentes. Um pouco além, na mesma lista, há a especificação de um buffer local de 8.192 Kbytes.
No momento em que um pedido de leitura é recebido de um host (ou, no caso dos subsistemas, das placas controladoras de discos), a lógica da unidade verifica se houve definição de modalidade em “pré-fetch” anteriormente (Mode Page 08h). Caso sim, verifica-se primeiro se o bloco pedido já está disponível no cache. Se não , é feito acesso diretamente a mídia e os dados colocados no cachê e enviados ao host. Os blocos imediatamente seguintes são colocados também em cache, mesmo que o pré-fetch mode esteja desligado. Nos próximos requests, estes dados são reportados como pré-fetch hit, ao invés de cache-hits.
Também via Mode Set, a controladora pode especificar a quantidade de blocos a serem armazenados via pré-fetch, e se o drive deve ou não cruzar os limites de cilindro durante esta operação.
Quaisquer outras operações que sejam recebidas durante o processamento desta primeira serão enfileiradas na “task-queue” do dispositivo.
Referencias :
Manual Seagate ds_cheetah10kProdMan - Numero de Publicação 100195490 - Revisão F - Março de 2003