AIO / DIO não alinhado

7

Estou recebendo este erro na instalação do meu servidor Ubuntu:

kernel: [6622929.119915] EXT4-fs (sda1): Unaligned AIO/DIO on inode 43648079 by java; performance will be poor.

Este é um bug do kernel? Como faço para corrigir isso?

    
por Malcolm 02.04.2012 / 12:16

1 resposta

9

Não é um erro do kernel: em vez disso, é um aviso do kernel que o aplicativo em questão está usando a API (E / S assíncrona ou E / S direta) de maneira ineficiente.

Do código-fonte :

/*
 * This tests whether the IO in question is block-aligned or not.
 * Ext4 utilizes unwritten extents when hole-filling during direct IO, and they
 * are converted to written only after the IO is complete.  Until they are
 * mapped, these blocks appear as holes, so dio_zero_block() will assume that
 * it needs to zero out portions of the start and/or end block.  If 2 AIO
 * threads are at work on the same unwritten block, they must be synchronized
 * or one thread will zero the other's data, causing corruption.
 */

Portanto, o programa em questão está tentando usar as E / S assíncronas ou APIs de E / S diretas com buffers de memória que não estão alinhados aos limites de bloco do sistema de arquivos, o que força o sistema de arquivos a executar as operações assíncronas no arquivo em série para evitar corrupção.

Se o programa que aciona o aviso for um que você escreveu, você poderá ajustar como ele usa as APIs AIO ou DIO para evitar o problema. Se não é o seu programa, ou você não está usando as APIs diretamente, então provavelmente não há muito que você possa fazer além de preencher um relatório de bug contra o programa problemático.

Por que vale a pena, esse aviso é limitado a uma taxa por dia, portanto, ele não deve preencher seus registros.

    
por James Henstridge 03.04.2012 / 01:53

Tags