Next: Semana 4
Up: 2000 - Setembro
Previous: Semana 2
  Sumário
- Detecção de problemas de I/O. Quando uma página é mandada para
swap e a rotina rw_swap_base (chamada pela rw_swap_nocache(),
mm/page_io.c, com o parâmetro de espera da página definido como 1)
aguarda pela página, ela coloca o processo no escalonador e volta a
rodar o restante do kernel. Bem, aí continua-se querendo páginas no
cache, e não se tem.
- Uma das soluções definitivas, conforme conversado com a prof.
Dilma, é estabelecer uma marca d'água, com uma função dentro da
função do kswapd.
- A solução temporária foi aumentar o número de
páginas. Aparentemente o problema parou de aparecer.
- Bug no get_compressed_page() e no throw_page_swap(). Quando
o cache ainda tem páginas livres, ele o get_compressed_page()
retorna um endereço que estava na lista dos usados. No caso do cache
cheio, e por conseqüência a chamada do throw_page_swap(),
retornava-se um endereço que estava na lista dos
livres. Inconsistência.
- A solução foi criar um parâmetro ``keep'' no compressed_remove()
(mm/compressed.c) de modo que se esse parâmetro tiver o valor 1, a
página terá o seu endereço retornado, mas não será jogada na lista
das livres. Esse é o típico caso do throw_swap_page() explicado
acima.
- Foi sugerida uma idéia, pelo Livio, de incluir o cache
comprimido no menu de opções do kernel, para que se codifique sem
alterar o código antigo.
Next: Semana 4
Up: 2000 - Setembro
Previous: Semana 2
  Sumário
Rodrigo Souza de Castro
2000-12-18