Hej,
> Kan man et eller andet sted i Snow Leopard bestemme at program/process X
> ikke må få lov at bruge mere end fx 10% CPU?
Du har nogle forskellige muligheder for at styre det. Hvad der er bedst
af afhænger af, hvad du skal bruge det til.
Den "klassiske" måde at begrænse programmerne på er ved at bruge "nice".
Her kan du sætte prioriteter på programmerne i forhold til hinanden. På
den måde sikrer du at mindre vigtige programmer ikke stjæler CPU-tiden
fra vigtige programmer.
Den "grove" måde kan bruges på flerkerne eller fler-CPU systemer. Her
sætter du processor affinity op således at dit program kun bruger en
eller flere af dine CPU-kerner. På den måde kan du fx nemt begrænse et
program til 25% af den tilgængelige CPU-tid på et 4-kerne system. Der
kan i øvrigt være nogle fordele ved at låse et enkelttrådet program fast
på den måde.
Den "dyre" måde giver muligheder for at sætte det mere finkornet op
sådan som du selv nævner det med at begrænse et program til fx max 10%
CPU tid. Rent teknisk gøres det ved at en proces står periodisk
overvåger de kørende programmer. Når et program har brugt sine 10% i en
given tidsperiode sendes SIGSTOP til programmet. Ved næste tidsperiode
sendes SIGCONT så programmet får lov til at fortsætte igen. Jeg kalder
det den dyre måde fordi dette overvågningsprogram vil bruge noget af din
CPU-tid på at stå og overvåge de andre programmer (det er dog
forholdsvist minimalt).
Udover det er der nogle muligheder som ændrer generelt på den måde
processerne får lov til at bruge CPUen på - fx ved ændring af
KERN_QUANTUM. Dette går dog ikke ind og ændrer på een specifik process,
men på alle processer som helhed.
Jeg gætter på at dit næste spørgsmål er, hvor man får nogen fine
GUI-applikationer til at styre ovenstående med istedet for at bruge
kommandolinjen. Disse programmer kender jeg ikke rigtigt noget til.
--
Jens Kristian Søgaard, Mermaid Consulting ApS,
jens@mermaidconsulting.dk,
http://www.mermaidconsulting.com/