Sem aumento de desempenho na operação intensiva de E / S após o symlink para ramdisk

7

Temos um sistema que transforma um conjunto de vários milhares de arquivos multi-MB. Após cada passo na transformação, ele grava o arquivo intermediário no disco. O conceito é semelhante a um disco de trabalho.

Temos unidades SAS de alto desempenho em execução no RAID 6, mas como nem a RAM nem a CPU sofrem muito, suspeito que um dos nossos gargalos é na verdade gravar os arquivos intermediários no diretório temporário.

Temos muita RAM nesses sistemas, e o RHEL sai da caixa com um drive de ram / dev / shm. Então, como um teste rápido, eu removi o diretório de rascunho e criei um link simbólico para um diretório na unidade de memória RAM. O desempenho foi o mesmo ou um pouco pior? Como?

O disco para obter o symlink de alguma forma nega o benefício de desempenho do ramdisk?

Eu testei isso em algumas situações em que sei que tocamos mais de 10 GB de dados (o máximo do java vm) e, portanto, não deveria estar em cache.

O que estou perdendo aqui?

    
por MattPark 16.12.2013 / 18:46

1 resposta

7

O que você está perdendo é que as gravações de arquivos são quase sempre não-bloqueantes. Desde que o sistema operacional tenha memória suficiente, uma gravação de arquivo apenas será gravada na memória. O sistema operacional irá liberar essas gravações no disco, já que possui os recursos para isso. Como você tem muita RAM, está escrevendo arquivos pequenos e tem disco rápido, seu aplicativo quase nunca precisa esperar que as gravações sejam concluídas.

Como suposição completa, acho que você é realmente limitado à arquitetura de aplicativos. Você diz que a CPU não sofre muito, mas isso provavelmente significa que sua aplicação é muito bruta para tirar proveito de grande parte dos recursos da sua CPU. Por exemplo, se sua CPU tiver 8 núcleos, mas sua arquitetura de aplicativo for de processo único, thread único, ela poderá usar apenas um núcleo.

    
por 16.12.2013 / 18:57