А.Андрей писал(а):О! да у вас стандартный компьютер i486 степпинг-С™! Вот где можно от души поковыряться лузеру супер-юзеру.
Да, когда-то был такой, и там сменой ядра можно было облегчить себе жизнь. Но сейчас у меня многоядерная система, а потому отключать apic и менять ядро не могу.
А.Андрей писал(а):Система сама сделает расчет наилучшей для работы конфигурации
Если бы. Так ведь косячит, сволочь, постоянно.
А.Андрей писал(а):Нынешний механизм прост, как хозяйственное мыло, но настолько-же универсален и надежен.
Вот с этого места по подробнее, что еще за нынешний механизм? Хотя бы ссылочку - интересно, как intel смогли избавится от текущих проблем железа.
А.Андрей писал(а):более умной работы? я умиляюсь. Чем прерывание имеет больший номер, тем ниже его приоритет, то бишь с более низким приоритетом не будет достукиваться до проца во время выполнения прерывания с более высоким приоритетом.
APIC позволяет забыть о прерываниях, ибо 224 прерывания на устройства за вычетом 32 под системные ошибки и исключения.
Все это я давно знаю - невольно пришлось изучить вопрос, пока боролся с железом. Только apic дает 24 линии (и то не все из них полноценные). Остальное - программные.
hybroid писал(а):APIC суёт всю толпу прерываний в узкую щель, ибо физически прерываний больше не стало. В курсе, откуда он вообще взялся? Надо было чем-то рулить на многопроцессорных системах, оттуда и пришло даже на однопроцессорники. И благодаря ему на физическом одном прерывании могут повиснуть пару прожорливых устройств и случится жопа, о которой видимо как раз и рассказывает tom1101
Абсолютно верно - контроллер прерываний фактически оперирует виртуальными прерываниями, т.к. линий столько же, а дополнительные прерывания получены навешиванием второго контроллера каскадом на одно прерывание первого, и последующей проверкой "Кто из десятка устройств на этой линии инициировал запрос? А ну признавайтесь!".
Плюс есть настоящие виртуальные прерывания, они же программные прерывания, которыми оперирует само ядро - взгляните в лист прерываний многоядерного компьютера, где их счет идет на сотни - софтовая эмуляция.
Все это позволяет отдалить конфликт прерываний, но не лучшим образом сказывается на работе. И не убирает конфликты приоритетов.
Компьютер должен сам правильно раскидывать устройства. Но сейчас у него это получается плохо - системный таймер черт знает где висит, звуковуха идет после видюхи, мышка тоже не в начале списка.
Правильно - системный таймер, устройства ввода (клава и мышь), звук, видюха, диски.
Если вдруг перед звуковой встает сетевуха или видюха - в некоторых случаях начинают лезть хрипы.
Если что-то есть перед мышкой или клавиатурой - они могут тормозить, а это раздражает больше всего.
Если вдруг кто-то залез перед системным таймером - начинаются тормоза при переключении задач. Видимо он как-то связан с ядром.
Именно эти 4 устройства должны быть распределены правильно: системный таймер, звуковуха, мышь и клавиатура. Если хоть одно из них имеет конфликт приоритетов, то это сразу становится заметно юзеру, и сильно снижает комфорт при работе на такой системе.
Остальное не так критично (хотя некоторые геймеры могут заморочиться еще и сетевухой).
Сейчас все мои манипуляции связаны с отключением в биосе виртуальных прерываний - чтобы их осталось 24, как и отдает apic. После этого в биосе перераспределяю прерывания карт расширения, отключаю незанятые слоты и сбрасываю таблицу ESCD.
Иногда это приходится делать несколько раз - пока прерывания не встанут наиболее удачно: это и есть так называемое автоматическое распределение - как бог пошлет

После этого смотрю таблицу прерываний, лезу в диспетчер устройств, и отключаю по возможности все лишнее, что стоит в листе прерываний до приоритетных мне устройств. Иногда сброс драйвера устройства, занимающего нужное мне прерывание, позволяет перепрыгнуть ему на другое, более свободное. Иногда можно обойтись и без сброса драйверов - можно переткнуть железку в порт, имеющий более низкое прерывание (особенно актуально это для USB, например мышки, т.к. клава у меня ps/2, а ps/2 всегда распределяется правильно). В общем, как и говорил, через задницу.