XFS: Ett problem i prestanda tänkbart orsakat av XFS

2015-10-01

Det här kan bero av annat än just filsystemet XFS (men bättre sammanfattning av vad XFS är i Wikipedia). Även möjligen orsakad relaterat Linux stacken har utrymme för optimering av access till minne resp. kopiering av filer disk och mellan fysiskt olika diskar tvivlar jag på det.


  • Disken har en mängd filer lagrade alla av samma syfte men varierande stora.
  • De är ofta lagrade så att om vi sorterar dem efter filnamn (givet någon storlek eller blandat i storlek) kommer vi ha nästa fil i listan närmare föregående fil än typiskt någon av de senare filerna.

Lägger jag nu trådar som läser filer som filtrerar efter storlek på filerna i en mängd filnamn (första bokstaven alltid här) och har en mycket stor i antal filer och mycket låg i storlek (ex. 8 - 32 byte) medan denna konkurrerar kortare lista av utvalda filer större så kan de senare hamna i mycket märkbar periodvis starvation utan någon access till disken. Också att vi skriver "väldigt hårt" mot disken utan särskilt mycket i logiken eller OS i övrigt som bromsar.


Av och till när arbete gjorts för att kraftigt uttrycka detta med långa perioder av starvation hamnar tråden eller de två trådar som kraftigt läst i antar jag påtvingad tystnad utan att göra något alls för att antar jag ge annat möjlighet att komma åt disken. Men inte oftare än att beteendet kraftigt kan störa normal upplevelse av disken.


Jag tror att orsaken är att stödet till XFS tittar var det i disken som läser och skriver befinner sig och när den kan välja tenderar till att belö vad som kan befinna sig närmare det.


Det var (och är kanske fortfarande att visa sig igen) väldigt irriterande eftersom jag med ett ganska litet antal trådar behöver vänta på disken för att göra icke-relaterat arbete. Jag har inte alls van vid det här problemet med så få trådar som ett par tre stycken (jag kom fram till att för fil-listor att gå igenom enligt tidigare med åtminstone någon över några hundra tusen åtminstone är två trådar åtminstone inte sämre än fler trådar och troligen bättre medan frågan om det är bättre eller sämre än en lista mer bestäms av att personligt periodvist engagemang med två trådar blir väsentligt mer sällsynt och inkluderar tid där det naturligt faller ner till en tråd).


Men som sagt andra orsaker till det här kan finnas. Erfarenhet av själva hårdvarulösningen ger att den ibland när man gjort om filsystemet arbetar på sämre prestanda rörande en del en period (men jag minns inte om jag tidigare sett något liknande som detta: snarare tror jag konkret sämre mängd data per sekund vid tydligast kopiering av filer).


Jag kan tänka mig att det här är någon algoritm i XFS. Dels därför att jag kan se hur det vid annat arbete (och kanske detta tror jag också) kan förbättra prestanda. Samtidigt att antalet fall "arbets-profil" man tagit hänsyn är ganska begränsat vilket är vad jag sett för en del andra filsystem på Linux (inte minst NTFS varför jag ganska nyligen bestämt att inte ha några diskar alls med NTFS). D.v.s. bredare fall att hantera lämnande från Linux-samhällets-framtid och i det följande en mer långsam tid än områden kanske roligare och/eller mindre kompetenskrävande och/eller fodrande mindre insats i att lära sig tämligen komplex kod befintlig.


Men jag har väldigt vaga begrepp om hur man optimerar diskar nära hårdvaran. Jag tyckte dock att det här kanske kunde vara en förklaring av det som jag kunde föreställa mig är vad man laborerar med. Det är ju utan just någon kunskap alls om hårddiskar fungerar fysiskt ungefär vad jag kan föreställa mig att man kan optimera: Ett tänkt don (vem vet kanske finns det många sådana: Ingen aning) som rör sig över det som kallas disk och läser eller skriver med en kostnad beroende av hur långt den måste flytta sig mellan skrivningar.


Praktiskt har jag fått en naturlig lösning av det hela med var arbetet ligger från att resp. lista filer som arbetas sorteras är mycket mer varierat i storlek. D.v.s. viss motsvarande fragmentering ges samtidigt som att inte samma enorma antal filer öppnas och stängs per byte. Att det senare kan tänkas spela in ger antar jag en indikation om vad resp. prediktion påverkas av: Position från föregående fil vi befinner oss på snarare än någon statistisk centralitet från en grupp (eller åtminstone en ganska liten grupp: Lätt att ta fel när man läser sorterat för filer som ligger "bra lagrade" på disken).


Hade jag större hårdvarulösningar lagring kanske jag hade övervägt att försöka hitta eller göra en lösning där man enkelt kan koda eller konfigurera hur optimering sker (om vi antar optimering som tänkt här faktiskt är hur det sker med mätbart resultat) utifrån typen av filer som lagrade och hur arbetet ska ske. Det är ju trots allt när mycket data som här ganska tidsödande totalt så en del annars kanske ganska små skillnader lär väl kunna summera en he del tänker jag: Kanske rent av många dagar totalt. Men nu arbetar jag inte riktigt med hårdvaruplattformar för lagring där jag tror det har förutsättningar att vara värt besväret i att lära sig mjukvarustöd eller värre problemområdet för egen kod. Här kan jag se att andra typer av prediktioner kanske fungerar bättre i såväl prestanda som risk för att irritera mig när jag gör klart konfigurationen inför nästa tråd som ska startas.


PS

Förövrigt rörande:


"Linux kernel's support for XFS was originally available through patches from SGI. It was merged into the Linux kernel mainline for the 2.6 series, and separately merged in February 2004 into the 2.4 series in version 2.4.25,[4] making XFS almost universally available on Linux systems.[5] Gentoo Linux was the first Linux distribution to introduce an option for XFS to be used as the default filesystem in mid-2002.[6] Installation programs for the Arch, Debian, Fedora, openSUSE, Kate OS, Mandriva, Slackware, Ubuntu, VectorLinux and Zenwalk Linux distributions all offer XFS as a choice of filesystem, but few of these let the user create XFS for the /boot filesystems due to deficiencies and unpredictable behavior in GRUB, generally the default bootloader.[7]"

Från: XFS | Wikipedia

Bootar jag tre Linux-distributioner från USB-disk formaterad XFS med GRUB. Arch även om jag har den installerad som köpt på en nätdisk från Sygate har jag dock inte bootat från XFS (om det nu inte är vad den kör som köpt).