11.04.2013 Views

Resumo sobre os métodos de escalonamento Acontecimentos que ...

Resumo sobre os métodos de escalonamento Acontecimentos que ...

Resumo sobre os métodos de escalonamento Acontecimentos que ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

O <strong>que</strong> são valores “normais”?<br />

Depen<strong>de</strong> do tipo da aplicação (batch, interactiva,<br />

servidor/cliente, CPU bound ou IO bound). Um ponto<br />

importante é o tempo passado na fila READY<br />

Heurísticas conhecidas para sistemas UNIX<br />

mais <strong>de</strong> 3000 chamadas ao sistema / seg po<strong>de</strong>m levar a<br />

<strong>que</strong> o CPU fi<strong>que</strong> saturado. As trocas <strong>de</strong> contexto <strong>de</strong>vem<br />

ser 1/3 disto<br />

Relação system time/user time<br />

70% user 30 % system OLTP<br />

90% user 10 % systema Computação intensiva<br />

percentagens elevadas <strong>de</strong> tempo <strong>de</strong> sistema junto<br />

com “idle time” po<strong>de</strong>m indicar problemas <strong>de</strong> memória<br />

ou <strong>de</strong> contenção n<strong>os</strong> CPUs<br />

02-12-2007 SO - 07/08 7<br />

Resolução <strong>de</strong> gargal<strong>os</strong> no(s) CPU(s)<br />

Soluções hardware<br />

CPU mais rápido, multiprocessador, mais cache, TLB<br />

maior. Nem todas as aplicações tiram partido <strong>de</strong> um<br />

multiprocessador<br />

Soluções software incluindo afinação do sistema<br />

fair share scheduler, nice, utilização das classes RT,<br />

mudar o time slice, mudar o perfil <strong>de</strong> utilização<br />

(horário, batch), afinida<strong>de</strong> <strong>de</strong> processadores<br />

Optimização da aplicação<br />

optimizações do compilador e “profiling” - reescrita<br />

das rotinas i<strong>de</strong>ntificadas<br />

diminuir o uso <strong>de</strong> chamadas ao sistema “caras”<br />

usar threads para tirar partido do paralelismo real<br />

02-12-2007 SO - 07/08 9<br />

Escalonamento para process<strong>os</strong> “timesharing”<br />

Tod<strong>os</strong><strong>os</strong>process<strong>os</strong>têmigualimportância<br />

O consumo <strong>de</strong> tempo <strong>de</strong> CPU diminui a<br />

priorida<strong>de</strong><br />

A permanênciaemesperaaumentaa<br />

priorida<strong>de</strong><br />

Os process<strong>os</strong> <strong>de</strong>ntro do sistema têm a priorida<strong>de</strong><br />

aumentada (em especial quando se blo<strong>que</strong>iam à<br />

espera <strong>de</strong> I/O)<br />

Com preensão<br />

Modificação externa da priorida<strong>de</strong> (UNIX<br />

nice/renice)<br />

02-12-2007 SO - 07/08 11<br />

Sintomas <strong>de</strong> <strong>que</strong> o gargalo é o CPU<br />

Saturação do CPU<br />

idle time 0 %<br />

user time muito alto<br />

system time muito alto<br />

muitas chamadas ao sistema: criação <strong>de</strong><br />

process<strong>os</strong> (fork/exec são as chamadas ao sistema<br />

mais “caras”, muit<strong>os</strong> pacotes recebid<strong>os</strong><br />

falhas na cache<br />

coerência das caches n<strong>os</strong> multiprocessadores,<br />

provocada por trocas <strong>de</strong> CPU ou activida<strong>de</strong> <strong>de</strong> IPC<br />

Filas ready muito gran<strong>de</strong>s<br />

Espera por recurs<strong>os</strong><br />

02-12-2007 SO - 07/08 8<br />

Escalonamento <strong>de</strong> process<strong>os</strong><br />

no Linux<br />

Linux usa dois algoritm<strong>os</strong> <strong>de</strong> <strong>escalonamento</strong>:<br />

Um para process<strong>os</strong> interactiv<strong>os</strong> (time sharing)<br />

Um para process<strong>os</strong> tempo real<br />

o <strong>escalonamento</strong> <strong>de</strong> longo prazo é externo ao<br />

kernel (comand<strong>os</strong> batch ou nqs)<br />

O algoritmo a aplicar <strong>de</strong>pen<strong>de</strong> da classe <strong>de</strong><br />

<strong>escalonamento</strong> do processo<br />

Para process<strong>os</strong> time-sharing, o Linux usa um<br />

algoritmo com múltiplas filas <strong>de</strong> process<strong>os</strong><br />

pront<strong>os</strong> com priorida<strong>de</strong>s variáveis<br />

02-12-2007 SO - 07/08 10<br />

Escalonamento <strong>de</strong> process<strong>os</strong> "RT"<br />

Dentro d<strong>os</strong> process<strong>os</strong> realtime, o Linux<br />

implementa classes <strong>de</strong> <strong>escalonamento</strong> FIFO e<br />

RR: em amb<strong>os</strong> <strong>os</strong> cas<strong>os</strong>, cada processo tem<br />

uma priorida<strong>de</strong><br />

O escalonador escolhe o processo com maior<br />

priorida<strong>de</strong>: em caso <strong>de</strong> igualda<strong>de</strong>, corre o <strong>que</strong><br />

espera há mais tempo<br />

Na classe FIFO <strong>os</strong> processes executam até<br />

terminarem ou se blo<strong>que</strong>arem (sem preensão)<br />

Os process<strong>os</strong> em RR utilizam uma fatia <strong>de</strong><br />

tempo (com preensão)<br />

02-12-2007 SO - 07/08 12<br />

2

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!