giełda, akcje, inwestycje
 ° Forum ° Rejestracja ° Szukaj °
Internetowa Auto Giełda -=- Energooczędna stacja transformatorowa
Monety rosyjskie - numizmatyka - 10 rubli

dziwne nowe klawiatury

Forum: / Archiwum Sprzęt 2007 / dziwne nowe klawiatury
<< . 1 . 2 . 3 .
Autor Wiadomość
gotar

Posted: 23 Lis 2007 09:56:33




E - to jest wina fizycznych podłączeń AGP do tej samej linii. Chyba że
już mówisz o sytuacji z włączonym APIC.

Dlaczego wina fizycznych podłączeń?


Od środka PC-ta nie wiem, od zewnątrz - bo karty włożonej w określony
slot PCI nie dało się przestawić na inne przerwanie.

Nawet gdybym miał wszystkie
linie przerwań razem zNANDowane do jednego wejścia, sterowniki
muszą dawać możliwość zidentyfikowania źródła przerwania.
I stabilnie pracować w takiej sytuacji.

Jedna rzecz to zidentyfikować urządzenie, druga to zmienić numer
przypisanego przerwania. Tego parę lat temu zrobić się nie dało inaczej,
niż przekładając kartę do innego slotu.




gotar

Posted: 23 Lis 2007 16:08:26




Taka, że mając dwa rdzenie każdy z nich może obsługiwać inne przerwanie,
np. poprzez smp_affinity albo IRQ balancing.

A co niby szkodzi, że przerwanie dwóch urządzeń zostanie

zgłoszone tą samą linią?

To, że do procesorów przypisujesz właśnie linię przerwania:

/proc/irq/*/smp_affinity

więc 2 urządzenia na tej samej lini == dwa urządzenia, których
przerwania obsługiwane są tym samym procesorem/rdzeniem/wirtualną
jednostką HT, co z kolei prowadzić może do przeciążenia danego rdzenia
(softIRQ) przy niewykorzystaniu drugiego.

Obsługa przerwania zajmuje drobny moment, zaraz potem
rusza asynchroniczna procedura obsługi przerwania urucha-
miana na pierwszym wolnym procesorze, a nie na tym, który
odebrał przerwanie.

Nie na pierwszym wolnym - właśnie o tym mówię. To IRQ balance w kernelu
stosuje politykę round-robin, ale softIRQ (procedury obsługi przerwania)
można wykonywać na konkretnej jednostce przypisanej na sztywno w
powyższy sposób (lub demonem irqbalance działającym w userspace, który
właśnie zmienia affinity tak, aby rozłożyć w miarę po równo).
Nota bene bez affinity ani kernelowego IRQ balance wszystkie procedury
obsługi lecą na pierwszą jednostkę.

Zaraz zaraz. W PCI? Bo w PCIe o ile mi wiadomo można
zgłaszać przerwanie tyko przez MSI (normalne INTx jest
emulowane w MSI).

Hm, wydaje mi się, że jest dokładnie odwrotnie - to normalne przerwanie
jest mapowane na MSI przez mostek PCI-Express (oraz PCI-X):

Capabilities: [a0] HyperTransport: MSI Mapping

ale nawet jeśli tak nie jest, to ja się pytałem o odbieranie a nie
zgłaszanie; oto karta w PCIe:

07:00.0 Ethernet controller: Intel Corporation 82572EI Gigabit Ethernet Controller (rev 06)
Subsystem: Intel Corporation Unknown device 1082
Flags: bus master, fast devsel, latency 0, IRQ 19
Memory at e8420000 (32-bit, non-prefetchable) [size=128K]
Memory at e8400000 (32-bit, non-prefetchable) [size=128K]
I/O ports at 5000 [size=32]
[virtual] Expansion ROM at e2200000 [disabled] [size=128K]
Capabilities: [c8] Power Management version 2
Capabilities: [d0] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable-
Capabilities: [e0] Express Endpoint IRQ 0

a oto jej przerwania:

19: 1728 216455 160465 802383756 IO-APIC-level eth3

jak widzisz korzystam z IO-APIC a nie MSI, gdyż z tego co gdzieś
czytałem MSI cechuje niższa responsywnoć.

Gdybym włączył sobie tę opcję:

config PCI_MSI
bool "Message Signaled Interrupts (MSI and MSI-X)"
depends on PCI
depends on (X86_LOCAL_APIC && X86_IO_APIC) || IA64
help
This allows device drivers to enable MSI (Message Signaled
Interrupts). Message Signaled Interrupts enable a device to
generate an interrupt using an inbound Memory Write on its
PCI bus instead of asserting a device IRQ pin.

to w miejscu IO-APIC-level pojawiłoby się MSI właśnie.

I tu właśnie moje pytanie - czy rzeczywiście MSI powoduje większe
opóźnienia niż APIC?




Radosław Sokół

Posted: 27 Lis 2007 11:21:46



A co niby szkodzi, że przerwanie dwóch urządzeń zostanie
zgłoszone tą samą linią?

To, że do procesorów przypisujesz właśnie linię przerwania:
/proc/irq/*/smp_affinity
więc 2 urządzenia na tej samej lini == dwa urządzenia, których
przerwania obsługiwane są tym samym procesorem/rdzeniem/wirtualną
jednostką HT, co z kolei prowadzić może do przeciążenia danego rdzenia
(softIRQ) przy niewykorzystaniu drugiego.

Tylko do samego przyjęcia przerwania. Obsługa leci już na
*dowolnym* procesorze. W Linuksie (chodzi mi o najnowsze
jądra 2.6) jest to, o ile się nie mylę, podobnie jak w
Windows: procedura obsługi przerwania ma działać jak naj-
krócej, odbierając tylko dane od urządzenia i zlecając
dalsze ich przetwarzanie asynchronicznej procedurze
wykonywanej już na zupełnie dowolnym procesorze/rdzeniu.

Zresztą domyślnie przerwania też chyba są przypisywanie
na zmianę rdzeniom, więc system będzie sam równoważył
obciążenie.

Nie na pierwszym wolnym - właśnie o tym mówię. To IRQ balance w kernelu
stosuje politykę round-robin, ale softIRQ (procedury obsługi przerwania)

AFAIK to jest starsza metoda, teraz obsługa leci już na
zwykłych kolejkach "worker queue", uruchamianych w ramach
zwykłych wątków jądra obsługiwanych standardowym schedu-
lerem. Owszem, rdzeń na którym przyjęto przerwanie może
być preferowany ze względu na wydajność, ale niekoniecznie
musi zostać wybrany.

Hm, wydaje mi się, że jest dokładnie odwrotnie - to normalne przerwanie
jest mapowane na MSI przez mostek PCI-Express (oraz PCI-X):

W PCI-Express *nie ma* osobnej linii przerwania. Tylko MSI
jest dopuszczalne. Mostek konwertuje MSI dla kart, które
tego chcą, na klasyczny sygnał przerwania.

I tu właśnie moje pytanie - czy rzeczywiście MSI powoduje większe
opóźnienia niż APIC?

Z jednej strony pewnie minimalnie tak (ale nie mam 100%
pewności) -- bo zamiast zwykłej zmiany stanu linii trzeba
przejąć na chwilę magistralę i wysłać pakiet danych. Trwa
to parę cykli.

Z drugiej strony jednak MSI zapewnia *od razu* identyfi-
kację nie tylko konkretnej karty, ale też konkretnego
urządzenia, a nawet konkretnego *bloku* karty. W efekcie
przy MSI odpada cała identyfikacja przerwania po stronie
mostków i systemu operacyjnego.

MSI niestety nie jest jeszcze dzisiaj poprawnie obsługi-
wane przez wszystkie mostki, ale powoli się to zmienia.
O ile mi wiadomo Vista już preferuje MSI nad zwykłe
przerwania.




Radosław Sokół

Posted: 30 Lis 2007 09:33:30



Tak. Wtedy wszystko ląduje na jednym rdzeniu, który ma 100%, a pozostałe
nie są w ogóle używane i świecą zerami.

To koszmar. Nie jestem specjalistą w kwestii jądra Linuksa,
ale wydawało mi się, że inaczej to wygląda.

W Windows sytuacja wygląda następująco:

1. Urządzenie zgłasza przerwanie. Wywoływana jest procedura
obsługi przerwania (ISR) w trybie nadzorowanym, w sposób
naturalny dla procesora.

2. ISR ma za zadanie jedynie potwierdzić odebranie przerwania,
zidentyfikować źródło i wywołać procedurę obsługi przer-
wania konkretnego sterownika urządzenia.

3. Ta z kolei jedynie informuje urządzenie o obsłużeniu
przerwania, programuje je w taki sposób, aby nie nadpisało
danych (jeżeli trzyma je w jakichś swoich buforach) i
zgłasza potrzebę wykonania asynchronicznej procedury
kontynuującej przetwarzanie.

4. Na tym ISR się kończy. System wraca na niski poziom IRQL
i poziom użytkownika. Całość trwała drobną chwileczkę
w porównaniu do całości czasu potrzebnego na obsłużenie
przerwania.

5. Jeżeli kolejka procedur asynchronicznych jest niepusta,
jest opróżniana. W tym momencie - w kwancie czasu procesu
użytkownika (ale na podwyższonym IRQL i w trybie jądra),
na dowolnym wolnym procesorze - kończona jest obsługa
przerwania, dane kopiowane z urządzenia do pamięci lub
vice versa i w ogóle robione jest wszystko, co wymaga
jeszcze pracy w trybie jądra i kontaktu z urządzeniem.

Nie wiem jak miał NT, ale przejmowanie obsługi przerwania na zmianę
przez procesory było zaimplementowane sprzętowo bodajże w PIII. Od tego
czasu jest to po prostu gorzej zrobione na poziomie hardware.

Ale tu nie chodzi o samo zgłaszanie przerwań. Tu chodzi o
implementację obsługi przerwań. W gorszym rozwiązaniu będzie
się je obsługiwało na procesorze, który odebrał przerwanie.
W lepszym -- na dowolnym wolnym procesorze, angażując ten
odbierający ino na krótki moment.




<< . 1 . 2 . 3 .
 

Komputer osobisty (ang. Personal Computer, stąd skrót PC i powszechne polskie określenie pecet). Obecnie następca klonów mikrokomputera wyprodukowanego przez firmę IBM w latach 80. Przeznaczony przede wszystkim do użytku osobistego, domowego i biurowego, zazwyczaj stacjonarny. W węższym znaczeniu PC oznacza komputery standardu IBM-PC.
W dobie "komputer w każdym domu" wiele osób napotyka na problemy, których nie jest w stanie rozwiązać samemu. Możliwe, że to forum Tobie pomoże...

Czas ładowania strony (sek.): 0.389
miniBB.net © 2001-2010 | Polityka Prywatności
archiwum - ogłoszenia + filmiki + giełda + makowski + mini-me kronika

Online: Odwiedzający - 2
+ - 0
Najwięcej odwiedzających: 18 [12 Sty 2010 02:47:11]
Odwiedzający - 18 / + - 0