Metodtips för Direkt I/O för Linux för Azure NetApp Files

Den här artikeln hjälper dig att förstå bästa praxis för direkt I/O för Azure NetApp Files.

Direkt I/O

Den vanligaste parametern som används vid prestandamätning för lagring är direkt I/O. Det stöds av FIO och Vdbench. DISKSPD har stöd för liknande konstruktion av minnesmappad I/O. Med direkt I/O kringgås filsystemcachen, åtgärder för direkt minnesåtkomstkopiering undviks och lagringstester görs snabbt och enkelt.

Med hjälp av den direkta I/O-parametern blir lagringstestningen enkel. Inga data läse från filsystemcachen på klienten. Därför betonar testet verkligen själva lagringsprotokollet och tjänsten, snarare än minnesåtkomsthastigheter. Utan DMA-minneskopior är läs- och skrivåtgärderna också effektiva ur ett bearbetningsperspektiv.

Ta Linux-kommandot dd som en exempelarbetsbelastning. Utan den valfria odirect flaggan hanteras allt I/O som genereras av dd från Linux-buffertcachen. Läsningar med blocken som redan finns i minnet hämtas inte från lagringen. Läsningar som resulterar i att en buffertcachemiss slutar läsas från lagring med hjälp av NFS-läsning med varierande resultat, beroende på faktorer som montering rsize och klientläsning. När skrivningar skickas via buffertcachen använder de en mekanism för att skriva bakom, som är otunnad och använder en betydande mängd parallellitet för att skicka data till lagringsenheten. Du kan försöka köra två oberoende strömmar av I/O, en dd för läsningar och en dd för skrivningar. Men i själva verket föredrar operativsystemet, untuned, skrivningar framför läsningar och använder mer parallellitet av det.

Förutom databasen använder få program direkt I/O. I stället väljer de att utnyttja fördelarna med en stor minnescachen för upprepade läsningar och en skrivning bakom cacheminnet för asynkrona skrivningar. Med direkt I/O omvandlas testet till ett mikromått om programmet som syntetiseras använder filsystemcachen.

Följande är några databaser som stöder direkt I/O:

  • Oracle
  • SAP HANA
  • MySQL (InnoDB-lagringsmotor)
  • RocksDB
  • PostgreSQL
  • Teradata

Metodtips

Att testa med directio är ett utmärkt sätt att förstå gränserna för lagringstjänsten och klienten. Om du vill få en bättre förståelse för hur själva programmet fungerar (om programmet inte använder directio) bör du också köra tester via filsystemets cacheminne.

Nästa steg