Maak je programma's sneller met ionice

linux tools

Artikelgereedschap

  • Tip ons
  • Printen
  • Reacties (0)
  • Bij dit artikel adverteren?
4x Aanbevolen

Gepubliceerd: Donderdag 2 februari 2012
Auteur: Koen Vervloesem

Met het Unix-commando nice kun je de CPU-prioriteit van processen instellen, maar het programma heeft een minder bekend broertje dat hetzelfde doet voor I/O: ionice.

Het commando nice heeft alleen effect op de CPU scheduler, waardoor processen met een hogere of lagere prioriteit uitgevoerd worden. Een proces met lage CPU-prioriteit dat een zware I/O-taak uitvoert zal echter nog altijd een negatief effect hebben op de I/0 van een proces met hoge CPU-prioriteit, waardoor de responstijd van die laatste erbarmelijk wordt.

De oplossing is ionice, dat voor schijftoegang doet wat nice voor processortoegang doet. Het scenario waarin ionice het beste tot zijn recht komt is wanneer je een proces hebt dat voor lange tijd continu zware schijftoegang nodig heeft, maar niet dringend is, en een ander proces relatief weinig schrijftoegang nodig heeft maar dit wel zo snel mogelijk moet uitvoeren. In normale omstandigheden zal het eerste proces (bijvoorbeeld een back-up) het tweede afremmen, terwijl dit niet nodig is omdat een back-up in het algemeen gerust wat trager mag verlopen. En het effect is des te irritanter wanneer het tweede een desktopapplicatie is die je aan het gebruiken bent, want die is dan plots heel wat minder responsief.

Idle

Met ionice kun je een proces in verschillende I/O-klassen indelen: 0 (geen), 1 (realtime), 2 (best effort) en 3 (idle). Die laatste is voor bovenstaand scenario interessant: hiermee krijgt het proces alleen I/O-toegang op momenten dat andere processen geen I/O nodig hebben, waardoor het die andere processen niet meer kan afremmen. Deze prioriteit stel je eenvoudig in voor een proces met een gekend PID:


$ sudo ionice -c 3 -p PID

Een tip: als je het PID van de huidige shell opgeeft (in de shellvariabele $$), stel je met ionice de I/O-prioriteit in van de shell en alle commando's die in deze shell opgestart worden, wat handig is als je een aantal commando's denkt in te typen die veel I/O vereisen maar niet zo dringend zijn.

Als je op voorhand al weet dat je een specifiek programma wil opstarten met de idle I/O-prioriteit, dan start je het als volgt op:


$ sudo ionice -c 3 programma

Overigens kun je nice en ionice perfect combineren: voer nice uit met als argumenten de CPU-prioriteit en ionice, dat op zijn beurt als argumenten de I/O-prioriteit en het uit te voeren programma heeft... Zo zorg je ervoor dat een programma dat normaal zowel beslag legt op de processor als op I/O binnen de perken blijft.

Veel toepassingen

Ionice is in heel wat meer omstandigheden dan een back-up toe te passen. Elk proces dat veel I/O vereist maar niet dringend is, komt in aanmerking om met ionice op een lagere prioriteit te draaien. Denk daarbij ook aan het installeren of upgraden van programma's, het downloaden of kopiëren van grote bestanden, enzovoort. Met ionice kun je, vanaf het moment dat je merkt dat je desktopapplicaties eronder te lijden hebben, de boosdoeners een lagere I/O-prioriteit geven.

De rubriek Tips & Tools biedt praktische informatie die IT-professionals in hun dagelijkse werk kunnen toepassen.

Relevante whitepapers

Alle whitepapers >>

Totaal 0 reactiesLaatste reacties


Nieuwsbrief

Ontvang dagelijks een overzicht van het laatste ICT-Nieuws in uw mailbox

Whitepapers

  • Flexibele IT noodzaak voor banken

    Banken worden belemmerd in hun agility door de beperkte flexibiliteit van hun IT-systemen. Onderzoeksrapport waarin de drastische vernieuwing wordt beschreven.

    Downloaden
  • Beheer de gebruiker, niet de deviceGratis whitepaper over device-onafhankelijke netwerkomgevingen en meer...
  • VDI: Waar zitten de besparingen? Gratis whitepaper over verregaande besparingen en significante voordelen van VDI
» Meer whitepapers

Peiling

Loading Poll

Video: Google experimenteert met 'groen' geb...

Google experimenteert met 'groen' gebouw (video)