| ° Forum ° Rejestracja ° Szukaj ° | |
|
Internetowa Auto Giełda -=-
Energooczędna stacja transformatorowa Monety rosyjskie - numizmatyka - 10 rubli |
| 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
|