ScatterGather (SYSTEM)
Esse teste valida cenários de confiabilidade de E/S do sistema de arquivos, principalmente de forma assíncrona, utilizando as APIs ReadFile/WriteFile/ReadFileScatter/WriteFileGather. Os testes de HLK exercem variações de regressão automatizadas predefinidas.
Detalhes do teste
Especificações |
|
Plataformas |
|
Versões com suporte |
|
Tempo de execução esperado (em minutos) | 240 |
Categoria | Cenário |
Tempo limite (em minutos) | 14400 |
Requer reinicialização | false |
Requer configuração especial | false |
Tipo | automático |
Documentação adicional
Os testes nessa área de recurso podem ter documentação adicional, incluindo pré-requisitos, configuração e informações de solução de problemas, que podem ser encontradas nos tópicos a seguir:
Executando o teste
Antes de executar o teste, conclua a configuração de teste conforme descrito nos requisitos de teste: Pré-requisitos de teste de conceitos básicos do sistema WDTF.
Executa simultaneamente a E/S (gravações e leitura) de maneira multithread utilizando portas de conclusão de E/S para concluir a E/S. Ele começará definindo inicialmente o EOF do arquivo e agendando os threads de E/S. Enquanto o arquivo está sendo gravado, ele executa a verificação online em que espera zero ou valor calculado de deslocamento. Depois que todo o arquivo tiver sido gravado, ele executará a verificação completa do arquivo e falhará no teste se zero ou um valor inesperado for encontrado.
Solucionando problemas
Para solução de problemas genéricos de falhas de teste do HLK, consulte Solução de problemas de falhas de teste do Windows HLK.
Para obter informações de solução de problemas, consulte Solução de problemas de testes de conceitos básicos do sistema.
Este teste retorna Pass ou Fail. Para examinar os detalhes do teste, examine o log de teste do Windows Hardware Lab Kit (Windows HLK) Studio.
Mais informações
Modos de teste com suporte:
Esperamos que a maioria dos usuários use variações de regressão predefinidas.
Padrão, Regressão (variações predefinidas) e estresse indicam certos tipos de falhas, como repetições de Alocação Virtual etc. Para o modo padrão, há um sinalizador flagsauto que gerencia a maioria dos parâmetros se o usuário não quiser fornecer os parâmetros manualmente. Além disso, há suporte para a funcionalidade de temporizador com modos padrão e de estresse. Para o modo de regressão, há uma variação de temporizador predefinida.
Modos de leitura/gravação com suporte:
Modo de leitura/gravação:
RW( Leitura, Gravação)
RWG( Read, Write Gather)
RSW( Dispersão de Leitura, Gravação)
RSWG( Dispersão de leitura, gravação de coleta)
RRW( Leitura aleatória, gravação)
RRWG( Leitura aleatória, coleta de gravação)
RWR( Leitura, Gravação Aleatória)
RSWR( Dispersão de Leitura, Gravação Aleatória)
RRWR( Leitura Aleatória, Gravação Aleatória – Aproximadamente 50% de Dispersão/Coleta) –> Padrão
RRWR7( Leitura aleatória, gravação aleatória – aproximadamente 30% dispersão/coleta)
RRWR3( Leitura aleatória, gravação aleatória – aproximadamente 70% de dispersão/coleta
Além disso, o teste dá suporte à Leitura Inversa e à Gravação Inversa.
Mecanismo de limitação de E/S:
Dá suporte ao limite Inferior Superior & para solicitações de E/S controladas. O modo de bypass também é possível, o que essencialmente detona o sistema com E/S.
Padrão de dados:
Valor alfabético computado com deslocamento simples. No entanto, para variação de temporizador, pode haver buracos.
Modos de validação de dados:
Dá suporte a online (validação simultânea juntamente com gravações), verificação completa (que é após a conclusão de todas as gravações) e modos de verificação offline. Todos esses modos podem ser desativados/ativados. Se a verificação online estiver desativada, essencialmente apenas as gravações ocorrerão durante a fase inicial após a qual a verificação completa será executada.
A diferença entre o marcar Online e Completo é que o marcar completo só é feito depois que todas as gravações são concluídas por um único thread enquanto a verificação online é feita simultaneamente durante as gravações e durante, o que espera valor calculado zero ou deslocado, ao contrário da verificação completa, em que apenas exceto o valor calculado de deslocamento.
Uso de comando
Comando | Descrição |
---|---|
ScatterMultiThread.exe -default -rwmode:rw -iomode:sync |
Execute a E/S de Leitura de Gravação no modo de Sincronização com o tamanho do arquivo padrão. |
ScatterMultiThread.exe -default -rwmode:RSWG -RR -RER:2 -TESTPATH:d:\Scatter -FILESIZE:500m |
Execute a Coleta de Dispersão completa, arquivo de 500m, no testpath especificado com deslocamento aleatório e leitura inversa. |
ScatterMultiThread.exe -default -rwmode:RRWR -FILESIZE:2g -IODIFFUPPERTHRESHOLD:500 -IODIFFLOWERTHRESHOLD:100 |
Executar o arquivo de 2 GB de E/S de Coleta de Dispersão de 50% com limite superior e inferior de E/S |
ScatterMultiThread.exe -regressão -regressão:6 |
Execute a variação de regressão predefinida 6. |
ScatterMultiThread.exe -stress -RWMODE:rrwr -THREADS:2 -BS:100k |
Executar a coleta de dispersão no modo de estresse com 2 threads leitor e 2 gravadores com tamanho de bloco de E/S de 100k/ |
ScatterMultiThread.exe -default -FILE:timer.dat -timer:19s -FILESIZE:5g -ONLINEVERIFY:FALSE |
Modo de temporizador ReadWrite E/S não armazenada em buffer e nenhum modo OnlineVerify. |
ScatterMultiThread.exe -default -OFFLINEVERIFY -FILE:timer.dat -FULLCHECK:FALSE -ALLOWZERO4VERIFY |
Verificação offline da variação acima com a verificação completa desabilitada e o modo AllowZero4Verify. |
Sintaxe de comando
Opção de comando | Descrição |
---|---|
ScatterMultiThread.exe |
As opções de linha de comando para o teste estão listadas abaixo. |
-help ou /? |
Exibe a ajuda. |
-Padrão |
Executa a variação padrão com parâmetros de teste da linha de comando. |
-Stress |
Modo de estresse. Tenta novamente as falhas de alocação de memória etc. |
-Regressão |
Modo de regressão. Executa o modo de regressão predefinido. |
-Testpath |
Caminho completo para o arquivo. Valor padrão: CWD |
-file |
Arquivo no caminho de teste ou completo para o arquivo. Valor padrão: Scatter.dat |
-Filesize |
Tamanho do arquivo em bytes. Você também pode acrescentar k, m, g ou t. Valor padrão: 1m |
-Tópicos |
Número de threads de leitor e gravador exclusivos. Valor padrão: 2 |
-completionthreads |
O número de threads de conclusão. Valor padrão: o dobro do número de processadores |
-rwmode |
Modo de leitura/gravação:
|
-iomode |
sync ou async Valor padrão: assíncrono |
-flagsauto |
TRUE ou FALSE Valor padrão: TRUE
Observação
Determinados sinalizadores de arquivo são gerenciados automaticamente com base nas situações |
-ffnb |
TRUE ou FALSE Valor padrão: FALSE
Observação
FILE_FLAG_NO_BUFFERING será ativado automaticamente em determinadas situações, como Dispersão/Coleta. |
-ffss |
TRUE ou FALSE Valor padrão: FALSE
Observação
FILE_FLAG_SEQUENTIAL_SCAN será ativado automaticamente em determinadas situações, como E/S serializada. |
-ffra |
TRUE ou FALSE Valor padrão: FALSE
Observação
FILE_FLAG_RANDOM_ACCESS será ativado automaticamente em determinadas situações, como E/S aleatória. |
-ffwt |
TRUE ou FALSE Valor padrão: FALSE
Observação
FILE_FLAG_WRITE_THROUGH não será ativado automaticamente, a menos que seja especificado manualmente. Desabilite o sinalizador FLAGSAUTO para gerenciamento independente de sinalizadores e atributos de arquivos. O comportamento FLAGSAUTO será alterado dependendo de outros parâmetros, como identificador de arquivo compartilhado ou E/S reversa etc. Os sinalizadores FFSS e FFRA não terão efeito se o sistema de arquivos não der suporte à E/S armazenada em cache e o FFNB não tiver suporte do sistema de arquivos ou especificado. Os sinalizadores FFSS e FFRA são mutuamente exclusivos e não podem ser combinados, pois são autodestrutivos. |
-Bs |
Tamanho do bloco em bytes. Você pode acrescentar k, m, g, t. Padrão: 64k |
-Ignorar |
Ignora a espera do Limite de E/S. Isso pode ser VERDADEIRO ou FALSO. Valor padrão: FALSE |
-nsegments |
O tamanho da matriz do segmento para Dispersão/Coleta. Valor padrão: 16
Observação
Essa opção é corrigida automaticamente em determinadas situações para Dispersão/Coleta/ |
-totalsleep |
O tempo de suspensão total para cenários de limite de E/S ou alocação virtual com falha. Valor padrão: 30 minutos |
-sleepint |
O intervalo de suspensão do loop para cenários de alocação virtual com falha Valor padrão: 2 minutos |
-iodifferupperthreshold |
O limite superior para emitir solicitações de E/S. Valor padrão: 1.000 |
-iodifflowerthreshold |
O limite inferior para retomar a E/S solicitada após a comparação de E/S fica abaixo desse número. Valor padrão: 100
Observação
Essa opção é mutuamente exclusiva com o modo de bypass e será ignorada se o modo de bypass estiver ativado. |
-wfw |
O sinalizador writer(WFW) aguarda que WriterThreads seja feito antes que qualquer leitura aconteça. Essa opção pode ser verdadeira ou falsa. Valor padrão: FALSE |
-Rr |
A opção RR (leitura de deslocamento aleatório) faz com que ReaderThreads comece em um deslocamento aleatório. Esse valor pode ser verdadeiro ou falso. Valor padrão: TRUE |
-Rw |
A opção RW (gravação de deslocamento aleatório) faz com que WriterThreads comece com deslocamento aleatório. Esse valor pode ser true de false. Valor padrão: FALSE |
-Rer |
A leitura inversa do deslocamento inicial. Esse valor pode ser 0, 1 ou 2. Valor padrão: 2 |
-Rew |
A gravação inversa do deslocamento inicial. Esse valor pode ser 0, 1 ou 2. Valor padrão: 0
Observação
Para sinalizadores RER e REW, 0 significa nenhuma reversão, 1 significa reversão direta e 2 significa reversão aleatória (não aplicada sempre). Para sinalizadores RER e REW, a E/S completa do arquivo pode não ser concluída e as estatísticas e os resultados relatados podem ser imprecisos. |
-Timer |
Modo de temporizador (em segundos). Você pode acrescentar s, m, h. Valor padrão: 0 Isso executa E/S até que o temporizador tenha expirado. |
-timerloop |
O intervalo de loop do temporizador (em segundos). Você pode acrescentar s, m, h. Valor padrão: o mesmo que a opção de temporizador
Observação
A opção de temporizador é apenas para a emissão de solicitações e a conclusão ainda será concluída (nenhum temporizador é aplicável à conclusão). |
-onlineverify |
Verifica o conteúdo do arquivo depois de emitir solicitações de gravação no modo online. Valor padrão: TRUE |
-offlineverify |
Verifica o conteúdo do arquivo no modo offline executando novamente o teste. Valor padrão: FALSE |
-allowzero4verify |
Permite que um zero faça parte da verificação completa (OFFLINE ou ONLINE). Valor padrão: FALSE |
-onlyzero4verify |
Permite que um zero faça parte da verificação completa (OFFLINE ou ONLINE). Valor padrão: FALSE |
-sharedfh |
Permite que o mesmo identificador de arquivo seja usado para toda a E/S. Valor padrão: FALSE |
-Regressão |
A variação de regressão. Esse valor pode ser - 1 - 10 ou 1001(refere-se a todas as variações) Valor padrão: 0 (sem regressão) |
-displayprogress |
Exibir progresso de E/S (em segundos), Você pode acrescentar s, m, h, Valor padrão: 2m |
-fullcheck |
Verificação completa dos dados após a verificação online ou offline. Valor padrão: true |
-dbgcheck |
Divide em um depurador de kernel em caso de falha. Esse valor pode ser verdadeiro ou falso. Valor padrão: true |
-toleratesurpriseremove |
Não interrompa um depurador de kernel em uma falha surpriseRemove. Esse valor pode ser verdadeiro ou falso. Valor Padrão: false |
-toleraterepair |
Não interrompa um depurador de kernel em uma falha de reparo. Esse valor pode ser verdadeiro ou falso. Valor Padrão: false |
-toleratefailio |
Não interrompa um depurador de kernel em uma falha de FailIO. Esse valor pode ser verdadeiro ou falso. Valor Padrão: false |
-exitonerror |
Saia em caso de falha. Esse valor pode ser verdadeiro ou falso. Valor padrão: False |
Observação
Para obter ajuda de linha de comando para este teste, digite /?.
Lista de arquivos
Arquivo | Location |
---|---|
ScatterMultiThread.exe |
<[testbinroot]>\NTTest\BASETEST\core_file_services\NTFS\ScatterGather\ |
ntlog.dll |
<[osbinroot]>\NTTest\CommonTest\NtLog\ |
ntlogger.ini |
<[osbinroot]>\NTTest\CommonTest\NtLog\ |
stresslog.dll |
<[osbinroot]>\basetest\core_file_services\shared_libs\ |
fbslog.dll |
<[osbinroot]>\basetest\core_file_services\shared_libs\fbslog\ |
Parâmetros
Nome do parâmetro | Descrição do parâmetro |
---|---|
LLU_NetAccessOnly | |
TEST_PATH |