On Saturday 08 September 2001 02:07, you wrote:
> Zdraveyte, LUG-BG
>
> Chetoh syobshteniata za 3-te mrejovi karti i osyznah, che imam podoben
> problem. Kompiutyryt mi v rabotata e compaq s niakakyv stranen bios, koito
> nastoichivo slaga IRQ-tata na mrejovata i videokartata da se prepokrivat
> kakvoto i da pravia, koeto vodi do syotvetnite dosadni zabaviania na
> ekrana, osobeno v X-Windows.
> Iskah da znam moje li ot Linux sa naglasia taka IRQ-tata, che da ne se
> pripokrivat? I kak, ako moje.
>
> Priaten den/nosht.
> ----
> Безплатна пощенска служба http://mail.Rambler.bg/
Всъщност забавянето не идва от това.
Видеоконтролерите са едни от малкото устройства които не
се нуждаят от прекъсване - с едно изключение евентуално  - 
когато се ползват 3D възможностите( не съм много сигурен, че дори
и тогава се използва ). Така ,че видео картите могат да си поделят
IRQ без никакво "performance penalty".
Защо всъщност поделянето на линия за прекъсване не е желателно?
Ами самото ядро - или "Interrupt scheduler"-a не може да знае чия подпрограма
за обработка на прекъсването трябва да извика при прекъсване по дадена линия.
Затова той си поддържа списък от регистрирани обработчици на дадено прекъсване
( за всяко едно прекъсване ). И съответно извиква последователно всеки от 
регистрираните обработчици. Обработчика пък съответно трябва да установи
дали прекъсването е от устройството което той обслужва, което обикновено 
става чрез четене на IO/регистри - което не е много бърза операция ( в 
сравнение с операциите с паметта и регистрите на процесора.)
По тази точка принципно Win2K би трябвало да се справя по бързо защото
при него обработчика на прекъсване трябва да върне стойност която указва
дали е разпознал прекъсването като идващо от устройство за което е отговорен 
или не, след което се прекратява разходката по списъка със обработчици за 
съответната IRQ линия. Уви( А може би не :) за нас привържениците на OSOS ) 
практиката показва съвсем  други резултати.

Но стига толкова, че се отклоних от темата.
Можеш лесно да провериш дали видеоконтролера ти ползва IRQ-то
като се опиташ да не предизвикваш трафик по мрежовата карта
и след извесно време си сравниш резултата от
cat /proc/interrupts  зa съответното прекъсване с този изпълнен
в началото на експеримента.
При мен видеото също "дели" прекъсване - със USB контролера ( IRQ 9 )
и резултата в сл. ,че не съм печатал нищо е следния:

[root@wolfy release]# uptime
  9:48pm  up  9:55,  3 users,  load average: 0.11, 0.06, 0.07
[root@wolfy release]# cat /proc/interrupts
           CPU0
  0:    3574312          XT-PIC  timer
  1:      27140          XT-PIC  keyboard
  2:          0          XT-PIC  cascade
  5:     689643          XT-PIC  MS Sound System
  8:          1          XT-PIC  rtc
  9:          0          XT-PIC  usb-uhci
 10:       1675          XT-PIC  eth0
 11:         30          XT-PIC  i91u
 12:     587088          XT-PIC  PS/2 Mouse
 14:      88364          XT-PIC  ide0
 15:         15          XT-PIC  ide1
NMI:          0
ERR:          0

Иначе ако наистина имаш бъгав BIOS може да пробваш да си компилираш ядрото с
опциа CONFIG_PCI_COBIOS=Direct( това в частта General Setup ).
Обаче това не гарантира , че няма да имаш поделени IRQ-та.
Всъщност освен от PCI BIOS-a това как ще ти бъдат конфигурирани
прекъсванията на PCI устройствата зависи от самите устройства - кои INT линии 
могат да използват - и от чипсет-а - или по точно от една част която 
реализира маршрутизирането на прекъсванията ( PCI шината е независима от 
процесора и е необходим платформено зависим механизъм който съпоставя 
прекъсванията генерирани от PCI шината към наличните линии за прекъсване на 
съответния процесорна архитектура ) - в частност контролера за прекъсване. 
Ако IRQ Stearing-a не покрива всички възможни комбинации също е възможно
дори и да имаш свободно прекъсване , да имаш две или повече устройства което 
поделят друго прекъсване. В този сл. можеш да пробваш да промениш слота на 
който ти е мрежовата карта. Понякога помага.




===========================================================================
A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers)
http://www.linux-bulgaria.org/ Hosted by Internet Group Ltd. - Stara Zagora

Reply via email to