Введение в РАН (1)
написано до начала
Недавно я получил от компании большой подарочный пакет и захотел разобраться в Linux RAS и написать серию статей, пока ищу работу. В конце концов, как ответственное лицо и разработчик ОС RAS, я реализовал множество усовершенствований и решений RAS для Alibaba Cloud X86 и Etian 710 RAS, внося некоторый вклад в стабильность серверов Alibaba Cloud. В этот период многие другие команды приходили за советом по вопросам RAS, поэтому я подумал о том, чтобы записать их, чтобы помочь энтузиастам Linux, которые планируют понять и изучить RAS в будущем. Кроме того, мой личный взгляд в основном начинается с ядра Linux, разбирая компоненты, функции и возможности, задействованные в Linux RAS, а также знакомлю с аппаратным обеспечением, задействованным в ядре RAS.
История РАН
С наступлением эры облачных технологий различные компании переносят продукты и услуги в облако. Облако обеспечивает большое удобство для цифрового строительства. Как грибы после дождя выросли отечественные и зарубежные производители облачных серверов, такие как Google Cloud, Alibaba Cloud, Tencent Cloud и др. В последние годы облачные сервисы неоднократно сталкивались с сбоями в работе по всему миру, а стабильность облака привлекает все больше и больше внимания. Согласно «Белой книге индустрии аварийного восстановления данных Китая и отчету об исследованиях в области строительства аварийного восстановления данных», одна минута простоя бизнеса приведет к средним потерям в размере 150 000 долларов США для транспортной отрасли, 270 000 долларов США для банковской отрасли, 350 000 долларов США для связи. промышленность и 350 000 долларов США для обрабатывающей промышленности. Промышленность понесла убытки в размере 420 000 долларов США, а индустрия ценных бумаг понесла убытки в размере 450 000 долларов США. В то же время потеря нематериальных активов, таких как репутация компании, была неоценимой.
В области встраиваемых систем все больше и больше отечественного оборудования собственной разработки выпускается на коммерческой основе, включая память, жесткий диск, графический процессор, процессор и т. д., которые используются в хост-компьютерах, автомобильной электронике, промышленном управлении и других рынках. С быстрым ростом использования этого оборудования постепенно начали проявляться проблемы со стабильностью. Например, автор отвечает за стыковку бизнеса по встраиваемым продуктам ARM в основной команде Huawei. При использовании модулей памяти отечественного производства я обнаружил, что вероятность аппаратных проблем при использовании модулей памяти отечественного производства намного выше, чем у крупного зарубежного производителя. .
Вообще говоря, по мере развития и совершенствования технологий программного обеспечения доля проблем, вызванных программным обеспечением, уменьшается с каждым годом. В этих условиях доля проблем с оборудованием становится все более заметной с каждым годом. Например, сбои в работе серверов или простои, вызванные сбоями оборудования, постепенно становятся первой проблемой облачных серверов.
определение РАН
Стабильность серверного оборудования в основном отражается на RAS. RAS относится к надежности машины (Reliability), доступности (Availability) и исправности (Serviceability). Ядро Linux определяет надежность, доступность и удобство обслуживания следующим образом:
Reliability
is the probability that a system will produce correct outputs.
•Generally measured as Mean Time Between Failures (MTBF)
•Enhanced by features that help to avoid, detect and repair hardware faults
Availability
is the probability that a system is operational at a given time
•Generally measured as a percentage of downtime per a period of time
•Often uses mechanisms to detect and correct hardware faults in runtime;
Serviceability (or maintainability)
is the simplicity and speed with which a system can be repaired or maintained
•Generally measured on Mean Time Between Repair (MTBR)
Цель RAS — обеспечить надежную работу системы как можно дольше без простоев и сократить время простоя системы, чтобы обеспечить механизм обнаружения оборудования и отчетности, чтобы администраторы могли быть уведомлены о необходимости своевременной замены оборудования до того, как ошибки оборудования приведут к потере данных или простою; ; обеспечить механизм восстановления аппаратных ошибок и максимально исправить ошибки, чтобы система могла работать устойчиво и надежно.
Аппаратное обеспечение, задействованное в RAS, включает, помимо прочего: ЦП, память, ввод-вывод, PCIe, жесткий диск и другие периферийные устройства.
•CPU – detect errors at instruction execution and at L1/L2/L3 caches;
•Memory – add error correction logic (ECC) to detect and correct errors;
•I/O – add CRC checksums for tranfered data;
•Storage – RAID, journal file systems, checksums, Self-Monitoring, Analysis and Reporting Technology (SMART).
Вообще говоря, аппаратные ошибки делятся на CE, UE, фатальную ошибку и нефатальную ошибку, которые определяются следующим образом.
•Correctable Error (CE) - the error detection mechanism detected and corrected the error. Such errors are usually not fatal, although some Kernel mechanisms allow the system administrator to consider them as fatal.
•Uncorrected Error (UE) - the amount of errors happened above the error correction threshold, and the system was unable to auto-correct.
•Fatal Error - when an UE error happens on a critical component of the system (for example, a piece of the Kernel got corrupted by an UE), the only reliable way to avoid data corruption is to hang or reboot the machine.
•Non-fatal Error - when an UE error happens on an unused component, like a CPU in power down state or an unused memory bank, the system may still run, eventually replacing the affected hardware by a hot spare, if available.
Но фактическое определение относительно широкое и простое, например, отложенная ошибка (DE).
Deferred error
The error was detected, was not corrected, and was deferred. The error has not been silently propagated. The error might be latent in the system. It is IMPLEMENTATION DEFINED whether the error continues to infect the state of the node or whether it has been deferred to the consumer. The node continues to operate. If the error might have been silently propagated, it must be reported as an Uncorrected error.
Другой пример: Intel определяет программно-восстанавливаемую ошибку UC как ошибку UCR (неисправимую восстанавливаемую ошибку), которая далее делится на SRAR, SRAO, UCNA и т. д.
Базовая блок-схема RAS
Основная блок-схема RAS показана выше. После возникновения аппаратного сбоя функция аппаратного RAS вызывает прерывание или исключение и уведомляет прошивку/ОС. После получения уведомления программное обеспечение применяет соответствующие стратегии, такие как паника, выполнение восстановления. действия или уведомить пользователя.
Благодаря непрерывному обновлению функций RAS и различным архитектурам система RAS начала демонстрировать разнообразие, которое различается из-за разных сценариев использования, что отражено в:
1. Различные способы уведомления
Методы уведомления разбиты на IRQ, Exception, Poll, SEA, SDEI, GPIO и другие методы.
2. Разнообразные режимы
аппаратное обеспечение Сначала сообщите о неисправностиFirmware,Затем прошивка обрабатывает это вне диапазона или снова уведомляет об этом ОС.,называетсяFirmware First Mode;
аппаратное уведомление об отказе программного обеспечения для ОС, ОС обрабатывает аппаратное обеспечениепуть неудачи,называетсяKernel First Mode;
Эти два метода также можно использовать смешанно, каждый из них имеет свои преимущества и недостатки, и необходимо научиться приспосабливаться к местным условиям. Например, для CE, если на сервере часто происходит большое количество событий CE, возникают штормы CE Irq. Если ЦП обрабатывает эти Irq в течение длительного времени, другие задачи не будут запланированы, и это повлияет на общую производительность.
3. Архитектура чипа и разнообразие аппаратного обеспечения
С развитием индустрии микросхем в последние годы архитектуры чипов становятся все более разнообразными, включая Intel, AMD, ARM, RISC и т. д. Также существуют небольшие различия в составе аппаратного обеспечения разных архитектур чипов.
4. Разнообразие программного обеспечения
Для драйверов Linux, включая драйвер mce, драйвер apei, драйвер edac и т. д.;
Для служб RAS пользовательского режима, включая mcelog, rasdaemon, уведомление о событиях производительности и т. д.;
Вообще говоря, RAS представляет собой сложную систему. Различные архитектуры микросхем и разное оборудование имеют разные функции RAS. Разработка RAS требует соответствующих решений RAS в соответствии с различными бизнес-сценариями.
Процесс устранения неполадок RAS
Взяв в качестве примера сервер Intel,
1. После того, как в памяти сервера Intel происходит сбой CE, аппаратное обеспечение запускает прерывание CMCI и выполняет функцию обработки прерывания, зарегистрированную ОС;
2. Эта функция вызывает код драйвера EDAC и считывает регистр состояния MCA для получения информации о неисправности оборудования, такой как уровень неисправности, местоположение неисправного оборудования, адрес неисправности и т. д. Драйвер EDAC сохранит информацию в /dev/mcelog;
3.Mcelog — это сервисная программа пользовательского режима, которая анализирует информацию /dev/mcelog и сохраняет ее в /var/log/mcelog. Пользователи могут проверить этот файл, чтобы узнать, произошел ли сбой оборудования на этом сервере, а также ключевую информацию, такую как время сбоя, информацию об оборудовании и было ли оно восстановлено;
Примеры аппаратных сбоев RAS
Ниже приведен журнал неисправности CE памяти, введенной в сервер x86. Драйвер EDAC распечатает аппаратное обеспечение (память), адрес, процессор, тип (CE), канал памяти/размер и другую информацию, в которой произошла ошибка.
C++[22715.830801] EDAC sbridge MC3: HANDLING MCE MEMORY ERROR[22715.834759] EDAC sbridge MC3: CPU 0: Machine Check Event: 0 Bank 7: 8c00004000010090[22715.834759] EDAC sbridge MC3: TSC 0[22715.834759] EDAC sbridge MC3: ADDR 12345000 EDAC sbridge MC3: MISC 144780c86[22715.834759] EDAC sbridge MC3: PROCESSOR 0:306e7 TIME 1422553404 SOCKET 0 APIC 0[22716.616173] EDAC MC3: 1 CE memory read error on CPU_SrcID#0_Channel#0_DIMM#0 (channel:0 slot:0 page:0x12345 offset:0x0 grain:32 syndrome:0x0 - area:DRAM err_code:0001:0090 socket:0 channel_mask:1 rank:0) |
---|
Источник изображения: v2-8e4986144a6a70301ee1a30c60c5ffad_720w.webp (720×378) (zhimg.com)