Nicht ausgerichtetes AIO / DIO

7

Ich erhalte diesen Fehler bei meiner Ubuntu Server-Installation:

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

Ist das ein Kernel-Fehler? Wie behebe ich das?

Malcolm
quelle

Antworten:

9

Es handelt sich nicht um einen Kernel-Fehler, sondern um eine Warnung des Kernels, dass die betreffende Anwendung die API (entweder asynchrone E / A oder direkte E / A) auf ineffiziente Weise verwendet.

Aus dem Quellcode :

/*
 * 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.
 */

Dies bedeutet, dass das betreffende Programm versucht, die asynchronen E / A- oder direkten E / A-APIs mit Speicherpuffern zu verwenden, die nicht an den Blockgrenzen des Dateisystems ausgerichtet sind, wodurch das Dateisystem gezwungen wird, die asynchronen Vorgänge für die Datei auszuführen in Serie, um Korruption zu vermeiden.

Wenn das Programm, das die Warnung auslöst, von Ihnen geschrieben wurde, können Sie die Verwendung der AIO- oder DIO-APIs anpassen, um das Problem zu vermeiden. Wenn es nicht Ihr Programm ist oder Sie die APIs nicht direkt verwenden, können Sie wahrscheinlich nicht viel anderes tun, als einen Fehlerbericht gegen das Problemprogramm einzureichen.

Für das, was es wert ist, ist diese Warnung auf einmal pro Tag begrenzt, daher sollte sie Ihre Protokolle nicht füllen.

James Henstridge
quelle