Tilldelning av CPU för en viss process

Tråden skapades och har fått 5 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Solna
  • 2010-02-23 10:10

Hej,

Ok något att bita.

Jag har försökt hitta svaret på min fråga på nätet men ej lyckats.

Jag skulle vilja kunna tilldela en process en viss "mängd" CPU tid.

Även om CPU idlear ska denna process INTE får mer CPU än tilldelat.

Det vill säga, det går INTE att lösa med nice/renice eftersom processer tilldelas CPU tid efter prioritet, så om CPU idlear så får processer med låg prioritet ändå CPU tid.

Jag har för många år sedan jobbat med SGI system (IRIX) och där kunde man tilldela processer den CPU tid man ville ge; även över ett nätverk i ett klustrat system. Mycket bra!

Jag har funderat på om man kan kanske använda accounting i Mac OS X men jag tror inte det.

Jag vet att t.ex SETI@home projektet har löst detta genom att, vad jag förstår, köra en process och sedan göra suspend på den ett tag för att sedan väcka upp den igen o.s.v.

Det skulle vara användbart om man t.ex vill köra en tung process på sin bärbara dator men att den inte ska blir så varm. I vissa fall spelar det kanske ingen roll om processen tar längre tid, bara den inte gör så att fläktarna går på mac hela tiden. Jag skulle t.ex vilja köra sådana processer på natten utan att datorn gick på "knäna".

Är det någon av er som vet hur man kan lösa detta?

/rob

  • Medlem
  • Stockholm
  • 2010-02-23 11:21

Du frågar efter att begränsa hur mycket CPU en process får använda. Svaret gives här:

$ man 2 setrlimit # För användning i program. Se RLIMIT_CPU
$ man bash # Sök efter kommandot ulimit

Fast jag tror att du EGENTLIGEN inte vill begränsa en process att ta t.ex. max 50 CPU-sekunder, utan vill begränsa att en process tar max 20% av tillgänglig CPU (fast får ta hur många CPU-sekunder den vill). Det är något annat.

Jag känner inte till att schedulern har explicit stöd för detta. Det kanske går att köra programmet under en "kontroll-process" som startar/stoppar din CPU-intensiva process så att CPUn blir idle emellanåt. SIGSTOP/SIGCONT ?

  • Medlem
  • Stockholm
  • 2010-02-23 11:28

Titta!

CPU limit

Det låter nyttigt, inte bara för batchjobb som inte får tynga ner för mycket. Det vore t.ex. sunt att begränsa Safari till sådär 20%. Alla Flash-annonser skulle förstås gå trögt, men vad gör det?

  • Medlem
  • Stockholm
  • 2010-02-23 13:16

Jag tycker tvärt om. Genom att begränsa en process till 20% förlänger man bara pinan. Och processen kommer ju att hogga upp minnet hela tiden (det är inte bara CPU som är en viktig resurs i ett system).

Har man ett långt jobb som man inte vill ska störa annat man gör så är nice (CPU prioritet) en bättre lösning.

Det hela verkar handla om att CPUn inte ska bli för varm (vad gör det?) eller att fläktarna inte ska gå för mycket. Om detta är ett reellt problem så se till att inte köpa en maskin med för många GHz!

Om problemet är att man vill köra på batteri ett tag så kan man ju pausa det långa jobbet (SIGSTOP) tills man får nätström igen.

  • Medlem
  • Solna
  • 2010-02-25 09:10

Ok jag vill tacka för alla svar.

/rob

1
Bevaka tråden