sql >> Database teknologi >  >> NoSQL >> MongoDB

XFS vs EXT4 – Sammenligning af MongoDB-ydelse på AWS EC2

AWS er ​​en ekstremt populær og pålidelig cloud-platform til styring af MongoDB-implementeringer, men spørgsmålet om XFS vs EXT4 har mange udviklere til at spekulere på, hvilket Linux-filsystem der vil give dem den bedste ydeevne til deres applikationer. MongoDBs officielle vejledning om implementering til produktion anbefaler brug af XFS-filsystemet på Linux, især når du implementerer WiredTiger-lagringsmotoren. Anbefalingen fortæller os dog ikke, hvorfor vi skal forvente et præstationsboost, eller hvilken slags præstationsgevinster vi vil opleve. Vi besluttede at komme til bunden af ​​det ved kvantitativt at undersøge MongoDB-ydeevnen på XFS, så du kan sammenligne, om EXT4 er et bedre valg til dine AWS EC2-instanser.

XFS-filsystem

XFS er et meget skalerbart, højtydende 64-bit journaling filsystem udviklet hos SGI i 1993 og porteret til Linux i 2002. Det understøtter meget parallelle I/O og filsystemstørrelser op til 9 Exabyte, og journaliserer kun filsystemets metadata, ikke brugerdataene. Nogle vigtige præstationsforbedrende funktioner i XFS er:

    • Paralleliseret adgang via allokeringsgrupper sikrer, at flere tråde kan udføre I/O samtidigt på samme volumen.
    • Omfangsbaseret tildeling reducerer fragmentering, metadatastørrelse og forbedrer I/O-ydeevne ved at tillade færre og større I/O-operationer.
    • Forsinket tildeling forbedrer datasammenhæng og ydeevne. Fragmentering reduceres ved at kombinere skrivninger og allokere omfang i store bidder, og filer, der er skrevet tilfældigt (såsom dem, der er hukommelseskortlagt) kan allokeres sammenhængende

Der er mange flere XFS-funktioner at udforske, og du kan lære mere på XFS’s websted og XFS-brugervejledningen.

Kørsel af ydeevnetest på MongoDB

Som du måske har lært i vores tidligere indlæg, har vi brugt YCSB til at benchmarke MongoDB-ydeevne, herunder en detaljeret sammenligning af MMAP-støttet MongoDB-ydeevne på tværs af forskellige cloud-udbydere. Vi besluttede at bruge den samme arbejdsbyrde af YCSB, som vi har brugt tidligere:Arbejdsbelastning A (Tung opdatering:50 % læser + 50 % opdateringer). Indsættelsesfasen af ​​arbejdsbelastningen måler ydeevnen af ​​100 % skrivebelastninger, mens indlæsningsfasen vil måle ydeevnen i forhold til den faktiske arbejdsbelastning (50/50 % læs/opdatering).

Vores test blev kørt på synkroniserings-MongoDB-driveren, og Linux-distroen var Amazon Linux (4.4.44-39.55.amzn1.x86_64). Vi hentede MongoDB version 3.2.10, der kører WiredTiger til vores tests, da WT var der, der forventedes bedre gevinster, og kørte testene på 2 forskellige hardwarerigge:

  • Højhastighedsdiske :AWS EC2 c3.large-forekomst, hvor MongoDB brugte SSD-diske i RAID 0-konfiguration til lagring (tilknytning til ScaleGrid-klyngestørrelse HighPerfLarge).
  • Diske med medium hastighed :AWS EC2 m3.medium forekomst, hvor MongoDB brugte EBS (Elastic Block Store) IOPS-provisioneret disk sat til 300 IOPS (tilknyttet ScaleGrid-klyngestørrelse Medium).

Bemærk:Enhver form for præstationstest i virtualiserede miljøer bør tages med et gran salt. Vores mål her er ikke at benchmarke ydeevnetal for disse miljøer, men at give nogle kvantitative mål for ydeevneforskelle mellem EXT4 og XFS i det samme virtualiserede miljø.

Højhastigheds SSD-disk

Vi kørte følgende test på vores højtydende rig:

  1. Indsat 6 mio. poster ved forskellige serverbelastninger (ved at variere antallet af YCSB klienttråde).
  2. Kørte arbejdsmængde ved driftstælling på 10 millioner poster ved forskellige serverbelastninger.

Resultater af SSD-diskydeevne

Gennemløbs-/latensegenskaber for 6M-postindsættelse på den højtydende konfiguration:

Gennemløbs-/forsinkelseskarakteristika for 10 millioner skrive-/opdateringsoperationer på den højtydende konfiguration:

SSD-diskobservationer

  • XFS er spektakulært hurtigt under både indsættelsesfasen og arbejdsbelastningen. Ved lavere trådtal er det så meget som 50 % hurtigere end EXT4. Efterhånden som belastningen steg, blev begge filsystemer begrænset af den underliggende hardwares gennemstrømning, men XFS beholdt stadig sit forspring.
  • Latens for både XFS og EXT4 var sammenlignelig i begge kørsler. Bemærk, at alle tal er i mikrosekunder.

Langsommere EBS-forsynet IOPS-disk (300 IOPS)

Følgende test blev udført på vores mellemstore performance rig:

  1. Indsat 3 mio. poster ved forskellige serverbelastninger (ved at variere antallet af YCSB klienttråde).
  2. Kørte arbejdsmængde ved driftstælling på 5 millioner poster ved forskellige serverbelastninger.

I betragtning af vores erfaring med den avancerede konfiguration forventede vi, at XFS også ville have et anstændigt forspring i denne rig.

IOPS Disk Performance Resultater

Gennemløbs-/latensegenskaber for 3M-postindsættelse på mediekonfigurationen:

Gennemløbs-/forsinkelseskarakteristika for 5M skrive-/opdateringsoperationer på mediekonfigurationen:

IOPS-diskobservationer

  • XFS er sammenlignelig, dog lidt bagud EXT4 på den mellemstore konfiguration. Det ser ud til, at på dette niveau af systemressourcer gør ydelsesoptimeringerne af XFS ikke rigtig en forskel. Dette er en vigtig observation, hvis du overvejer at implementere XFS på mindre forekomster i håb om forbedret ydeevne.

XFS vs EXT4 på AWS EC2

Med hensyn til ydeevne er XFS faktisk en kraftmultiplikator, når den er parret med højhastighedsdiske, som den virkelig kan drage fordel af. For lav- til mid-end systemer ser det ikke ud til at kunne gøre meget for at forbedre din ydeevne.


  1. Databasebrugerstyring med ClusterControl

  2. Konfigurer Redis Session State på Azure

  3. Rails og caching, er det nemt at skifte mellem memcache og redis?

  4. Hvordan bruger man uordnet bulk-indføring med Mongoskin?