/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Dele cpu'en mellem flere processer
Fra : Sune Vuorela


Dato : 26-07-05 16:45

Hej!

Jeg har et par processer som koerer paa skift og nogen gange samtidigt.
Alle vil gerne traekke saa meget cpu som muligt.

Hvis flere af processerne koerer samtidigt, skal de paent dele
cpu-kraften ligeligt, ogsaa i korte tidsintervaller som 500
millisekunder - og ogsaa selvom en af processerne i tiden op til har
haft al cpu'en. Det skal ogsaa deles paent mellem processerne uanset
hvor mange traade der er i hver proces!

Hvordan loeser jeg det ?

Specielle programmer ?
Nogle kerneoptions der skal saettes ?
Nogle specielle kernepatches der skal tilfoejes ?

Andet ?

--
Sune

 
 
Niels Kristian Jense~ (26-07-2005)
Kommentar
Fra : Niels Kristian Jense~


Dato : 26-07-05 16:52

Sune Vuorela <nospam@vuorela.dk> wrote in
news:slrndecmkg.6b3.nospam@sshway.ssh.pusling.com:

> Hvis flere af processerne koerer samtidigt, skal de paent dele
> cpu-kraften ligeligt, ogsaa i korte tidsintervaller som 500
> millisekunder

Du mener et halvt sekund? Er det et kort interval?

> - og ogsaa selvom en af processerne i tiden op til har
> haft al cpu'en.

Ikke forstået?

> Det skal ogsaa deles paent mellem processerne uanset
> hvor mange traade der er i hver proces!

Hvad mener du med pænt?

Du må beskrive langt mere præcist, hvad du vil opnå, ellers tror jeg ikke
at nogen kan hjælpe dig.

De fleste langvarige CPU-tunge processer kan klare sig fint i sameksistens
bare ved at "nice" til samme prioritet.

Mvh. NKJensen

--
DYT ikke ved E-mail...

Sune Vuorela (26-07-2005)
Kommentar
Fra : Sune Vuorela


Dato : 26-07-05 17:09

On 2005-07-26, Niels Kristian Jensen <midlertidigDYT2005@internetDYTgruppen.dk> wrote:
>> cpu-kraften ligeligt, ogsaa i korte tidsintervaller som 500
>> millisekunder
>
> Du mener et halvt sekund? Er det et kort interval?

Gad vide om jeg ikke kom til at skrive et 0 for meget ?


>> - og ogsaa selvom en af processerne i tiden op til har
>> haft al cpu'en.
>
> Ikke forstået?

Hvis proces A koerer og er alene, saa maa den bruge al cpu'en. Proces B
startes op og vil ogsaa gerne have al cpu'en.
Nu maa proces A ikke nedprioteres til mere end halvdelen af cpu'en,
heller ikke mens proces B starter op.


>> Det skal ogsaa deles paent mellem processerne uanset
>> hvor mange traade der er i hver proces!
>
> Hvad mener du med pænt?

At hvis proces A har 5 traade og proces B 10 traade, saa skal de gerne
dele cpu'en ca. 50% 50%


> De fleste langvarige CPU-tunge processer kan klare sig fint i sameksistens
> bare ved at "nice" til samme prioritet.

Ogsaa maalt over korte tidsintervaller ? Og mens en af dem starter op ?
Det er ikke nok at de deler cpuen i mellem sig gennemsnitligt over 2
minutter.

--
Sune

Jacob Sparre Anderse~ (27-07-2005)
Kommentar
Fra : Jacob Sparre Anderse~


Dato : 27-07-05 10:47

Sune Vuorela skrev:

> At hvis proces A har 5 traade og proces B 10 traade, saa skal de
> gerne dele cpu'en ca. 50% 50%

Det kræver vist at du flikker din egen »scheduler« sammen. I Linux
vil hver af de 15 tråde a priori være prioriteret lige højt.

> > De fleste langvarige CPU-tunge processer kan klare sig fint i
> > sameksistens bare ved at "nice" til samme prioritet.
>
> Ogsaa maalt over korte tidsintervaller ? Og mens en af dem starter
> op ? Det er ikke nok at de deler cpuen i mellem sig gennemsnitligt
> over 2 minutter.

Netop med langvarige CPU-tunge processer er det da spild af tid at
skifte kontekst hele tiden.

Jacob
--
»... alle de vestlige demokratiers hemmeligheder gn. årene.
Lumumba, Thule, Nixon, Vietnam, Allende, Indonesien,
Østtimor etc. etc. - som INGEN benægter i dag & spør bare:
Hvad er det offentligheden ikke hører NU??« -- Divus Madsen

Kasper Dupont (26-07-2005)
Kommentar
Fra : Kasper Dupont


Dato : 26-07-05 17:16

Sune Vuorela wrote:
>
> Hej!
>
> Jeg har et par processer som koerer paa skift og nogen gange samtidigt.
> Alle vil gerne traekke saa meget cpu som muligt.
>
> Hvis flere af processerne koerer samtidigt, skal de paent dele
> cpu-kraften ligeligt, ogsaa i korte tidsintervaller som 500
> millisekunder - og ogsaa selvom en af processerne i tiden op til har
> haft al cpu'en. Det skal ogsaa deles paent mellem processerne uanset
> hvor mange traade der er i hver proces!
>
> Hvordan loeser jeg det ?

Hvilken kerne og threading libraries kører du med?
Hvor mange processer og tråde har du? Og hvor
mange CPUer?

Du kunne bruge realtime round robin scheduling. Så
ville dine processer hver især få deres andel af
CPU tiden. Problemet er så bare, at ingen andre får
noget.

--
Kasper Dupont -- der bruger for meget tid på usenet.
Note to self: Don't try to allocate 256000 pages
with GFP_KERNEL on x86.

Sune Vuorela (26-07-2005)
Kommentar
Fra : Sune Vuorela


Dato : 26-07-05 17:27

On 2005-07-26, Kasper Dupont <kasperd@daimi.au.dk> wrote:
> Hvilken kerne og threading libraries kører du med?

standard 2.6.noget fra <standard linuxdistribution>

Traadene er primaert den type som man laver med suns java

> Hvor mange processer og tråde har du?i

2-3 processer med svingende antal traade.


> Og hvor
> mange CPUer?

enkeltcpu-maskiner.
Maaske kan der snige sig en enkelt dual-cpu-maskine ind en gang i
mellem.


> Du kunne bruge realtime round robin scheduling. Så
> ville dine processer hver især få deres andel af
> CPU tiden. Problemet er så bare, at ingen andre får
> noget.

hmm.. ja .. syslog skal jo gerne kunne komme til en gang i mellem - og
naar jeg skal have en ssh-forbindelse til maskinen .. og .... saa det
kan godt vaere at det ikke er den optimale loesning.

--
Sune

Kasper Dupont (26-07-2005)
Kommentar
Fra : Kasper Dupont


Dato : 26-07-05 17:40

Sune Vuorela wrote:
>
> On 2005-07-26, Kasper Dupont <kasperd@daimi.au.dk> wrote:
> > Hvilken kerne og threading libraries kører du med?
>
> standard 2.6.noget fra <standard linuxdistribution>

Så er processer og tråde en abstraktion som libraries tager
sig af. Scheduleren ser vist bare en stak tråde og ved intet
om, hvilke du mener hører til samme process.

>
> Traadene er primaert den type som man laver med suns java

Der kan man bare se, jeg sad jo og tænkte i C og Posix tråde.
Så ved jeg faktisk slet ikke, hvordan kernen kommer til at
se på dem.

Prøv lige det her eksperiment (så vi ved, hvilke problemer
du prøver at løse): Start to processer, den ene har en tråd,
der tager al den CPU, den kan få, den anden har to tråde,
der også tager al den CPU de kan få. Prøv så at se, hvordan
det kommer til at se ud i top?

>
> > Hvor mange processer og tråde har du?i
>
> 2-3 processer med svingende antal traade.
>
> > Og hvor
> > mange CPUer?
>
> enkeltcpu-maskiner.
> Maaske kan der snige sig en enkelt dual-cpu-maskine ind en gang i
> mellem.

OK, så skal man nok fokusere på en løsning, der fungerer så
godt som muligt på en single CPU maskine. Og skulle der så
gå hen at komme to i, så kan processerne kun risikere at få
mere CPU tid.

>
> > Du kunne bruge realtime round robin scheduling. Så
> > ville dine processer hver især få deres andel af
> > CPU tiden. Problemet er så bare, at ingen andre får
> > noget.
>
> hmm.. ja .. syslog skal jo gerne kunne komme til en gang i mellem - og
> naar jeg skal have en ssh-forbindelse til maskinen .. og .... saa det
> kan godt vaere at det ikke er den optimale loesning.

Nej, så skulle man nok til at køre alt med realtime
prioriteter. Det er nok ikke nogen god idé. Du kan evt.
prøve at køre den java processer med nice. Så vidt jeg
erindrer bruger Linux kortere time slices, jo lavere
prioriteten er.

Evt. skriver du selv noget kernekode, der kan schedulere
som du vil have det. Så vidt jeg har forstået tillader
scheduleren i Linux 2.6 at man indlæser en alternativ
scheduling policy som et kernemodul.

--
Kasper Dupont -- der bruger for meget tid på usenet.
Note to self: Don't try to allocate 256000 pages
with GFP_KERNEL on x86.

Søren Hansen (26-07-2005)
Kommentar
Fra : Søren Hansen


Dato : 26-07-05 18:24

Den Tue, 26 Jul 2005 18:40:05 +0200. skrev Kasper Dupont:
>> Traadene er primaert den type som man laver med suns java
> Der kan man bare se, jeg sad jo og tænkte i C og Posix tråde.

Jeps, samme her.

> Så ved jeg faktisk slet ikke, hvordan kernen kommer til at
> se på dem.

Som nævnt andetsteds, så kan man vist vælge mellem native threads, som
er egentlige POSIX tråde, mens green_threads implementerer tråde i
VM'en, så dit eksperiment vil syne som to processer, der kæmper om
CPU'en.

--
| Søren Hansen | Linux2Go | http://Linux2Go.dk/ |
| Seniorkonsulent | Lindholmsvej 42, 2. TH | +45 46 90 26 42 |
| sh@linux2go.dk | 9400 Nørresundby, Denmark | GPG key: E8BDA4E3 |


Søren Hansen (26-07-2005)
Kommentar
Fra : Søren Hansen


Dato : 26-07-05 18:21

Den Tue, 26 Jul 2005 16:26:42 +0000. skrev Sune Vuorela:

> On 2005-07-26, Kasper Dupont <kasperd@daimi.au.dk> wrote:
>> Hvilken kerne og threading libraries kører du med?
> standard 2.6.noget fra <standard linuxdistribution>
> Traadene er primaert den type som man laver med suns java

Aha! Nu er jeg ikke den helt store java-ekspert, men så vidt jeg husker,
så kan man vælge mellem green threads og native threads. Hvis du
vælger green threads, så eksisterer trådene jo kun i din VM og ikke som
tråde, som OS'et kan se. På den måde har du jo kun to egentlige
processer, og så burde loadbalancingen imellem processerne klare sig
selv.

--
| Søren Hansen | Linux2Go | http://Linux2Go.dk/ |
| Seniorkonsulent | Lindholmsvej 42, 2. TH | +45 46 90 26 42 |
| sh@linux2go.dk | 9400 Nørresundby, Denmark | GPG key: E8BDA4E3 |


Thorbjoern Ravn Ande~ (26-07-2005)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 26-07-05 18:28

Sune Vuorela <nospam@vuorela.dk> writes:

> Andet ?

Det er en af de ting som tilbydes med "Containers" under Solaris 10.

Måske var det en mulighed?

--
Thorbjørn Ravn Andersen

Stig H. Jacobsen (28-07-2005)
Kommentar
Fra : Stig H. Jacobsen


Dato : 28-07-05 11:53

On Tue, 26 Jul 2005 15:45:20 +0000 (UTC), Sune Vuorela wrote:

> Andet ?

Dit behov er jo sådan halv-realtime, så kig efter distro'er til
realtime brug og prøv med en af deres kerner (eller hele
distroen).

Med lidt større armbevægelser, så kan du implementere Xen - den
har flere schedulere at vælge imellem, der kan skrues på dem og
den har endda en scheduler API.

http://www.cl.cam.ac.uk/Research/SRG/netos/xen/readmes/user/user.html#SECTION03240000000000000000

--
Stig

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste