Vincent Lammens

Terug

Linux processen beperken in CPU gebruik

2022/09/04
notes-to-self
linux, nice, cpulimit

Nice

Met nice kan een process een prioriteit toegekend worden. Prioriteiten zijn een manier om de scheduler te vertellen welke processen voorang krijgen op minder belangerijke processen. Dit kan met renice ook op een process dat al draait. Nice waarden gaan van -20 (hoogste) tot 19 (laagste). Standaard is deze waarde 0.

Het gebruik van nice is zeer eenvoudig, je plaatst nice -n <prioriteit> voor het commando dat je wenst uit te voeren, bijvoorbeeld nice -n 19 tar -zcf /var/backups/home.tgz /home/.

De scheduler zal processen met een hoge nice waarde (dus lage prioriteit) minder cpu tijd geven dan processen met een hogere prioriteit. Heel handig voor bijvoorbeeld zware backup processen.

Een voorbeeld van nice processen

Default nice voor een linux gebruiker

De standaard nice waarde voor een linux gebruiker is 0. Dit kan echter aangepast worden in /etc/security/limits.conf door de priority parameter in te stellen voor een bepaalde gebruiker/groep. Bijvoorbeeld:

gebruiker   hard    priority    10

De gebruiker gebruiker zal standaard processen uitvoeren met nice 10, dus met een lagere prioriteit

Cpulimit

cpulimit is een programma dat met behulp van SIGSTOP en SIGCONT signalen het gemiddelde cpu-percentage van een process beperkt tot een gegeven percentage. Dit commando werkt net zoals nice door het te plaatsen vlak voor het commando dat je wilt uitvoeren:

cpulimit -l 50 tar -zcf /var/backups/home.tgz /home/

Het voorbeeld hierboven zou de backup van de /home/ directory beperken tot 50% cpu snelheid.

Indien een process subprocessen spawned, is het belangerijk om aan cpulimit ook de -m parameter mee te geven.