Bitcoin

Процессор, очевидно, имеет 8 ядер, почему сетевая карта отчаянно выбрасывает ядро ​​№ 1?


Процессор, очевидно, имеет 8 ядер, почему сетевая карта отчаянно выбрасывает ядро ​​№ 1?

Автор | Технологии программирования Космос

Главный редактор | Кэрол

CS 图 | CSDN Скачать с Vision China

Процессор, очевидно, имеет 8 ядер, почему сетевая карта отчаянно выбрасывает ядро ​​№ 1?

Механизм прерывания

Я Q из мастерской ЦП № 1, я снова здесь

Наша ежедневная работа состоит в том, чтобы постоянно выполнять инструкции кода, но эта, казалось бы, простая работа на самом деле не легкая.

Мы не можем скучать и не заботимся о выполнении кода. Нам приходится иметь дело с другими устройствами, подключенными к материнской плате. Есть клавиатуры, мыши, диски, о да, и сетевые карты, с которыми я общаюсь. Этот парень недавно доставил мне неприятности. Я расскажу об этом позже.

Процессор, очевидно, имеет 8 ядер, почему сетевая карта отчаянно выбрасывает ядро ​​№ 1?  Я думал, что парень в памяти был достаточно медленным. Я не ожидал, что буду общаться с вышеупомянутыми медленнее, чем он. Время нашего завода процессоров стоит больших денег. Мы не можем ждать и задерживать работу. Позже, как только фабрика подвела итоги, я подумал о методе, называемом прерыванием.

В нашей мастерской была установлена ​​фара. Если эти устройства захотят связаться с нами, они сначала отправят нам сигнал прерывания, и фара автоматически включится. Когда мы обычно работаем над выполнением инструкций кода, мы посмотрим на каждую инструкцию, чтобы увидеть, включены ли фары. Как только вы обнаружите, что свет включен, отложите работу и позаботьтесь о ней.

Процессор, очевидно, имеет 8 ядер, почему сетевая карта отчаянно выбрасывает ядро ​​№ 1?  У нас плохая память, нам придется возвращаться после завершения обработки, а затем продолжать выполнять исходную работу, чтобы иметь возможность подключиться после ожидания возврата, мы должны проверить значения регистров текущего выполняющегося потока и куда идти. Подождите, пока эта информация будет сохранена в стеке этого потока.

Но иногда мы не хотим, чтобы их прерывали, когда мы выполняем очень важные вещи. Таким образом, мы устанавливаем флаг в регистре eflags в мастерской, если он равен 1, нам разрешают прерываться, если он равен 0, тогда не имеет значения, ищет ли нас император.

Процессор, очевидно, имеет 8 ядер, почему сетевая карта отчаянно выбрасывает ядро ​​№ 1?

О, неправильно, есть также прерывание NMI, которое не может быть замаскировано, и оно идет по зеленому каналу. Но я не ожидаю, что такого рода вещи произойдут, потому что, как правило, ничего хорошего нет: либо питание отключено, либо слишком высокая температура, либо произошла ошибка шины и другие серьезные вещи.

Процессор, очевидно, имеет 8 ядер, почему сетевая карта отчаянно выбрасывает ядро ​​№ 1?

8259A PIC

Есть также проблема. Есть много подразделений, которые работают с нами. Мы должны различать, кто является источником новостей, и если они собираются вместе, чтобы выяснить, в каком порядке приоритетности, это также головная боль.

С этой целью на заводе была создана дочерняя компания, находящаяся в полной собственности. Он является программируемым контроллером прерываний PIC, псевдоним 8259A. Другие подразделения хотят связаться с нами через эту PIC, нам нужно только выполнить с PIC Стыковка достаточно.

Процессор, очевидно, имеет 8 ядер, почему сетевая карта отчаянно выбрасывает ядро ​​№ 1?  Мы присвоили офису номер, который называется вектором прерывания. Мы также подготовили таблицу с именем IDT таблицы дескрипторов прерываний, в которой записано много информации, включая адрес функции, соответствующей этому номеру прерывания. Мы находим PIC и получаем номер и выполняем функцию обработки.

Процессор, очевидно, имеет 8 ядер, почему сетевая карта отчаянно выбрасывает ядро ​​№ 1?  Эта таблица немного большая и содержит 256 элементов. Наш цех по процессору имеет ограниченное пространство и не может его вместить. Поэтому мы поместили его в память. Чтобы быстро найти эту таблицу, был добавлен регистр с именем idtr, чтобы указать на эту таблицу.

Фактически, в дополнение к прерыванию, если мы встретим исключение при выполнении инструкции, мы также перейдем к этой таблице для выполнения функции обработки исключений.Наилучшими примерами являются делитель 0, неправильный адрес памяти и т. Д.

В этом случае мы должны активно опускать руки, чтобы разобраться с исключением, поэтому мы также говорим, что исключение является синхронным, и прерывание не знает, когда оно происходит, поэтому оно асинхронно.

Процессор, очевидно, имеет 8 ядер, почему сетевая карта отчаянно выбрасывает ядро ​​№ 1?

APIC

8259A хорошо поработал, но затем наша фабрика расширила масштаб с одноядерного процессора до многоядерного, и он был немного перегружен.

Наконец, однажды на фабрике было проведено собрание, 8259A была отозвана, и была основана новая дочерняя компания, которая называлась Advanced Programmable Interrupt Controller APIC. В названии было слово «advanced», и работа была такой же.

Но не говорите это, эти два слова на самом деле не хвастаются, я не знаю, где он выше, чем 8259A.

Как только эта новая компания APIC пришла к власти, были созданы два отдела, один из которых назывался I / O APIC, который отвечал за прием устройств, ищущих наши услуги, а другой — Local APIC, который был передан на аутсорсинг различным цехам моего ЦП. , Потому что это рядом с нашим офисом, поэтому зовут Local.

Процессор, очевидно, имеет 8 ядер, почему сетевая карта отчаянно выбрасывает ядро ​​№ 1?  После того, как APIC ввода / вывода получает сигнал прерывания, он распределяется по соответствующему локальному APIC в соответствии со своей собственной стратегией. Наши восемь мастерских могут сконцентрироваться на обработке, сэкономив нам много вещей.

Мало того, что через эту команду аутсорсинга наши восемь мастерских могут также инициировать запросы прерываний друг к другу, для краткости мы называем это межпроцессорное прерывание или IPI.

Процессор, очевидно, имеет 8 ядер, почему сетевая карта отчаянно выбрасывает ядро ​​№ 1?

Прерывание близости

Всякий раз, когда пакет поступает в сеть, парень на сетевой карте отправляет сообщение о прерывании и говорит нам, что нужно с ним работать.

Однако я не знаю, что произошло в последнее время, и объем сетевых данных резко возрос. На нашем заводе, очевидно, есть 8 мастерских, и он должен был постоянно присылать нам новости, и работа всегда была прервана, и он был слишком занят.

Наконец, я ничего не мог поделать, и пошел к парню с сетевой картой, чтобы сделать теорию. Тем не менее, он сказал мне, что в этом нельзя винить его, который будет распределен, чтобы справиться с этим, то есть APIC несет ответственность.

Подумайте об этом тоже. Я вернулся в APIC и попросил их поделиться этим с другими семинарами.

APIC сказал, что они не могут принять решение, и они должны позволить фабрике решать.

Через несколько дней на фабрике было проведено совещание, на котором присутствовали представители различных мастерских и ответственный за APIC, а также представители операционной системы.

Процессор, очевидно, имеет 8 ядер, почему сетевая карта отчаянно выбрасывает ядро ​​№ 1?  На встрече все оспаривали этот вопрос.

Хузи в Мастерской 2: «Ах, кто называет тебя Bootstrap Processor в Мастерской 1, ты должен работать усерднее»

Представитель семинара № 3: «Вы сказали что-то неуместное. Каждый — это команда. Если вы хотите помогать друг другу, это так. Поскольку существует так много подразделений, с которыми мы можем связаться, мы разделим работу. Например, семинар № 1 отвечает за сетевую карту, а № 2 отвечает». Диск наш номер три отвечает за клавиатуру и тд

Представитель семинара № 5: «То, что вы считаете симпатичным. Сколько прерываний может отправлять клавиатура в день и сколько прерываний должно отправлять сетевая карта в день. Вы можете сделать это легко. Итак, давайте использовать случайное распределение для балансировки нагрузки. Что вы думаете? ?»

Представитель семинара № 8: «Какой случайный, какой хлопотный, на мой взгляд, мы будем по очереди на 8 семинарах»

Процессор, очевидно, имеет 8 ядер, почему сетевая карта отчаянно выбрасывает ядро ​​№ 1?  В это время руководитель спросил представителя операционной системы, есть ли какие-либо предложения.

Этот представитель встал, поднял очки и спросил: «Вы слышали о близости потоков к процессору?»

Все покачали головами и спросили: «Что это значит?»

«Это означает, что некоторые потоки хотят привязаться к одному из ваших ядер для выполнения, не хотят какое-то время выполнять на этом ядре и какое-то время выполнять на этом ядре»

Я взял его слова: «Похоже, что такая вещь есть. Я сталкивался с этим раньше, и на нашем семинаре № 1 была назначена нить, но нас это не волнует. Кто не выполняет работу, нам Все так же»

Представитель покачал головой: «Ах, это не одно и то же. Кэши первого и второго уровня каждого из ваших ядер управляются вами самостоятельно. Если вы переходите на другие ядра, этот кеш в основном бесполезен, и вам придется его заново создать. Разве это не слепая задержка? Их не волнуют обычные потоки, но если некоторые потоки выполняют большой объем доступа к памяти и обрабатывают вычисления и предъявляют высокие требования к производительности, то они очень обеспокоены этой проблемой ».

Все мы внезапно осознали, что киваем один за другим.

Процессор, очевидно, имеет 8 ядер, почему сетевая карта отчаянно выбрасывает ядро ​​№ 1?  Ху Цзы встал и спросил: «Как вы достигаете этой близости? Как это связано с нашей сегодняшней встречей?»

Представитель продолжил отвечать и сказал: «Сначала я отвечу на ваш первый вопрос. Планирование потоков — это работа, выполняемая нашей операционной системой. Мы предоставляем интерфейсы API. Потоки вызывают эти интерфейсы, чтобы указать на их готовность быть совместимыми. Мы планируем планирование». Затем вы можете назначить потоки для выполнения в соответствии с их пожеланиями. «

Представитель сделал глоток воды и сказал: «Я отвечу на ваш второй вопрос. Поскольку потоки могут иметь сходство, прерывания также могут распределяться в соответствии с этой идеей. APIC по умолчанию имеет набор стратегий распределения, но также обеспечивает сходство. Вы можете указать, с кем и с каким ядром иметь дело, чтобы вам не приходилось фиксировать правила и проявлять гибкость. Разве это не будет лучше? «

Только что закончив, в дверях конференц-зала неожиданно появился мальчик и помахал представителю операционной системы.

Процессор, очевидно, имеет 8 ядер, почему сетевая карта отчаянно выбрасывает ядро ​​№ 1?  Далее мы подробно обсудили возможность реализации этой схемы. В конце концов, все единогласно решили сделать именно это. Мы собрали вещь, называемую привязкой к прерываниям. Операционная система предоставляет настраиваемую запись smp_affinity. Установив маску каждого ядра процессора, чтобы решить, кто будет обрабатывать прерывание, APIC будет отвечать за поддержку посадки.

С этим набором планов, когда мы снова встретимся с пиком сети, нагрузка на нашу мастерскую № 1 может быть снята.

Мы только что достигли соглашения. Представитель операционной системы вернулся в конференц-зал и торжественно сказал: «Извините всех, в операционной системе есть что-то, что нужно срочно вернуть, чтобы разобраться с этим. Давайте сначала сделаем шаг».

Продолжение следует…

пасхальное яйцо

С прерыванием сетевой карты, новый пакет данных пришел на эту землю.

Вновь прибывшие молодые люди из Департамента Сети Империи явно не осознавали наступление опасности …

Предвидеть будущее, пожалуйста, обратите внимание на продолжение замечательно …

Процессор, очевидно, имеет 8 ядер, почему сетевая карта отчаянно выбрасывает ядро ​​№ 1?

Процессор, очевидно, имеет 8 ядер, почему сетевая карта отчаянно выбрасывает ядро ​​№ 1?

** Более интересные рекомендации **

☞ Интервью | Вице-президент «Smartbi» Сюй Цзин: В будущем BI станет лицом, принимающим решения Чжугэ Лян

[☞加密货币界“女杀手”,破译世上最安全加密货币系统,获 771 万奖金](http://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&mid=2650757593&idx=1&sn=2cccf4bc367d01948dc34531da60520f&chksm=bea7280a89d0a11c621632c2bacfa15e418e31036f2cd827ddbcd8

[☞](http://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&mid=2650750309&idx=2&sn=e6772d93425a7a23a9d53c793274b9bd&chksm=bea74cb689d0c5a0a5958c2f20aaae0d8[他被称为 ” 中国第一程序员 “,一人之力单挑微软,如今拜入武当修道](http://mp.weixin.qq.com/s?__biz=MzA5MzY4NTQwMA==&mid=2651021126&idx=1&sn=1a22d3847fd59daea65028c6a3dd5c2b&chksm=8badecb1bcda65a75e1aa0998f623b91889fdbe14e14#

[☞](http://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&mid=2650750309&idx=2&sn=e6772d93425a7a23a9d53c793274b9bd&chksm=bea74cb689d0c5a0a5958c2f20aaae0d8[高文、张钹、杨强隔空论道:AI 精度与隐私的博弈](http://mp.weixin.qq.com/s?__biz=MzI0ODcxODk5OA==&mid=2247519512&idx=1&sn=fcba907ddbcd498d968ae35235a0d1c3&chksm=e99ebee1dee937f73a0d88bdbbdfee9c66de302fddbffbfbfb

[☞](http://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&mid=2650746260&idx=1&sn=ec250a1510b9cf57c8ba19578decefb1&chksm=bea75c4789d0d551e79436a31b723defb9f792c09c0d78#78[带你从零入门 Serverless | 一文详解 Serverless 架构模式](http://mp.weixin.qq.com/s?__biz=MzA3MjY1MTQwNQ==&mid=2649838961&idx=1&sn=0d1ff461712f4a3c3dc94af5b6aabb37&chksm=871ef293b0697b85e47322bd1063af748260f1c83cd79#

☞[中央银行数字货币的总体框架](http://mp.weixin.qq.com/s?__biz=MzU2MTE1NDk2Mg==&mid=2247502546&idx=1&sn=924a8af270689c2155c198d80bc24961&chksm=fc7f942fcb081d39584649c73693b59b832bc8984425b127ede4dc2#

Процессор, очевидно, имеет 8 ядер, почему сетевая карта отчаянно выбрасывает ядро ​​№ 1?

Ваше «разделение», «лайк», «просмотр» — это самая большая поддержка для нас

Ссылка на источник:mp.weixin.qq.com

Отказ от ответственности: вышеуказанный контент получен из Интернета. Авторские права на произведение принадлежат первоначальному автору. Весь контент предназначен для передачи информации. Это не означает, что этот сайт согласен с его мнениями и не служит руководством для инвестиций. Валютный круг является рискованным и инвестиции должны быть осторожными