cachestat, een van de nieuwigheden die zal worden gepresenteerd in Linux 6.5

Tux, de mascotte van de Linux Kernel

De Linux-kernel is de ruggengraat van Linux-besturingssystemen (OS) en is de fundamentele interface tussen de hardware van een computer en zijn processen.

In de afgelopen week begonnen met werken wat wordt de volgende versie van de kernel van Linux 6.5 en sinds toen enkele van de meest relevante wijzigingen zijn al aangekondigd die in deze volgende kernel-release zal worden geïntroduceerd.

En het is dat er bijvoorbeeld al een groot aantal verbeteringen en wijzigingen zijn doorgevoerd, zoals de parallelle CPU-opstartondersteuning Met als doel de opstarttijden van de kernel aanzienlijk te verkorten, pakt AMD ijverig veranderingen aan om problemen met het opschorten/hervatten van het systeem aan te pakken, samen met verbeteringen aan bestandssystemen, virtualisatie en meer.

Van de aangekondigde wijzigingen zullen we het in dit artikel hebben over een daarvan, waarvan wordt vermeld dat deze al is opgenomen in de codebase die de Linux 6.5-kernel bouwt en is geïntegreerd met de implementatie van een nieuwe systeemaanroep "cachestat".

Deze reeks patches introduceert een nieuwe systeemaanroep, cachestat, die geeft een overzicht van paginacachestatistieken (aantal pagina's in cache pagina's gemarkeerd voor herschrijven, verwijderde pagina's, etc.) van een bestand, in een opgegeven bytebereik. Het bevat ook een zelftestsuite die een aantal test typisch gebruik.

Over cachestat

cachestat is een nieuwe syscall waarmee userland-programma's meer gedetailleerde paginacachestatistieken kunnen opvragen aan de kernelzijde. Als zodanig is het bedoeld om de reeds bestaande mincore-systeemaanroep uit te breiden die wordt gebruikt om te bepalen of pagina's in het geheugen aanwezig zijn, de cachestat-aanroep zorgt voor meer gedetailleerde paginacachestatistieken en wijst op grotere schaalbaarheid.

Er wordt gezegd dat momenteel is het geheugen van de paginacache meestal de grootste geheugenverbruiker en daarom hebben de kernelmethoden die ermee omgaan een grote invloed op de prestaties. Als zodanig is er een rijke interface om die methoden uit te breiden met fadvise en de synchronisatiefamilie.

De systeemoproep cachestat() verzendt informatie over het aantal opgeslagen pagina's cache, vuile pagina's, verwijderde pagina's, onlangs verwijderde pagina's en pagina's gemarkeerd voor herschrijven.

De verstrekte statistieken voor bestanden kunt u nauwkeurigere beslissingen nemen over het werken met I/O die door de VFS gaan, niet alleen op basis van een abstract algoritme, maar ook rekening houdend met de kenmerken van een bepaald systeem op een bepaald moment.

Er is momenteel geen goede manier om de status van de grote cachepagina op te vragen bestandssets en mappenbomen. Er is mincore(), maar het schaalt slecht:
de kernel schrijft een grote hoeveelheid bitmapgegevens die gebruikersruimte nodig heeft voeg het toe, wanneer de gebruiker niet echt geeft om de informatie per pagina
Dan. De gebruiker moet ook elk bestand mmmapen en de toewijzing ongedaan maken terwijl het werkt door, wat ook behoorlijk traag kan zijn.

Over de pMogelijke use-cases van cachestat() door applicatiesen vermeld het volgende:

  • De queryplanner in het DBMS zal dit kunnen beslissen of u een indexscan wilt uitvoeren of de gegevens rechtstreeks uit de tabel wilt lezen op basis van de status van de tabelindex in de paginacache.
  • Gedetailleerde en belastingsafhankelijke afhandeling van het vullen van de paginacache en I/O (bijvoorbeeld vuile pagina's/pagina's gemarkeerd voor herschrijven), de synchronisatiefrequentie wijzigen, van zeer frequent onder lichte belasting tot bursty tijdens bursts van belasting.
  • Mogelijkheid van een meer visuele presentatie en handige weergave van geheugengebruiksinformatie over grote bestanden/mappen, vergelijkbaar met hoe het "du" hulpprogramma u in staat stelt om schijfruimtegebruik weer te geven.
  • Gemakkelijkere probleemoplossing en debuggen van luie schrijfbewerkingen voor prestatieproblemen.

Eindelijk als u er meer over wilt wetenkunt u de details in het volgende link.