Начиная с систем типа 7044, модели 270, аппаратное обеспечение всех многопроцессорных систем может обнаруживать устранимые ошибки, сведения о которых собираются встроенным программным обеспечением. Если число таких ошибок невелико, то они не представляют серьезной опасности и их можно игнорировать. Однако, если число ошибок какого-либо процессора постоянно возрастает, то это может указывать на возможность скорого отказа этого процессора. Такой прогноз формируется на основании анализа частоты возникновения неполадок и заданных пороговых значений.
Данная операционная система при работе на данном аппаратном обеспечении реализует функцию контроля аппаратного обеспечения и постоянно запрашивает у встроенного программного обеспечения сведения об аппаратных ошибках. Когда число ошибок процессора достигает порогового значения, встроенное программное обеспечение делает вывод о возможном сбое аппаратного компонента и возвращает отчет об ошибке. Все ошибки заносятся в системный протокол ошибок. Кроме того, в многопроцессорных системах, в зависимости от типа ошибки, операционная система может отказаться от использования ненадежного процессора. Такая возможность называется динамическим отключением процессора.
При этом процессор помечается встроенным программным обеспечением как отключенный для всех последующих запусков системы вплоть до замены процессора.
Описанное отключение процессора незаметно для большинства приложений, включая драйверы и расширения ядра. Тем не менее, с помощью стандартных интерфейсов можно определять, работает ли приложение или расширение ядра в многопроцессорной системе, определять количество процессоров и связывать нити с различными процессорами.
Интерфейс связывания процессов и нитей с процессорами использует логические номера CPU. Логические номера CPU лежат в диапазоне от 0 до N-1, где N - это общее число CPU. Во избежание возникновения неполадок в приложениях и расширениях ядра, не предполагающих наличия пропусков в нумерации CPU, операционная система динамически изменяет максимально возможный номер доступного CPU. Например, в 8-процессорной системе SMP применяются логические номера CPU [0..7]. В случае сбоя одного из процессоров общее число доступных CPU снизится до 7, а их номера будут лежать в диапазоне [0..6]. С точки зрения внешнего наблюдателя это выглядит как исчезновение CPU 7, независимо от того, какой именно физический процессор оказался неисправным. В связи со сказанным, в данной главе словом CPU обозначается логический ресурс, а словом процессор - физический.
Нормальная работа приложений или расширений ядра может быть нарушена, если при динамическом отключении процессора операционная система без предупреждения прервет работу каких-либо нитей, явно связанных с определенными CPU, или принудительно переключит обработку этих нитей на другие CPU. В связи с этим функция динамического отключения процессоров поддерживает программный интерфейс, позволяющий уведомлять приложения и расширения ядра об отключении процессоров. При получении такого уведомления приложения и расширения ядра должны самостоятельно отключить нити и другие связанные ресурсы от ставшего недоступным CPU и приспособиться к изменившейся конфигурации CPU.
Если после отправки уведомления приложений или расширений ядра некоторые из нитей остаются связанными с последним логическим CPU, то отключение отменяется. В этом случае сообщение об отмене динамического отключения заносится в протокол ошибок и система продолжает использование ненадежного процессора. После окончательного выхода процессора из строй происходит общий сбой системы. Таким образом, при разработке приложений и расширений ядра, явно связывающих нити с определенными CPU, важно обрабатывать поступающие уведомления об отключении процессоров и выполнять перераспределение нитей и других ресурсов.
Даже в тех редких случаях, когда динамическое отключение не выполняется, эта функция обеспечивает уведомление системного администратора о возможном сбое. Занесение сообщения в протокол ошибок позволяет администраторам запланировать обслуживание системы и заменить ненадежный компонент до того, как система полностью выйдет из строя.
Обычно отключение процессоров происходит следующим образом:
В случае сбоя в любой момент отключения в протокол заносится сообщение об ошибке с указанием причины отказа от отключения. Системный администратор может просмотреть протокол ошибок, предпринять необходимые действия по устранению ошибки, и повторить попытку отключения. Например, если отключение было отменено из-за того, что какое-либо приложение не отменило связь нитей с CPU, то системный администратор может завершить работу этого приложения, заново инициировать отключение процессора, а затем снова запустить приложение.
Функция динамического включения и отключения процессора может быть включена или отключена путем изменения значения атрибута cpuguard в объекте ODM sys0. Возможные значения атрибута: enable и disable.
По умолчанию динамическое отключение процессора запрещено (атрибуту cpuguard присвоено значение disable). Системные администраторы, которые хотят применять эту функцию, должны включить ее с помощью Web-администратора системы, SMIT или команды chdev.
Примечание: Если отключение процессора выключено, то сообщения об ошибках по-прежнему заносятся в протокол ошибок и вы все равно сможете увидеть сообщение о том, что операционная система получила уведомление о неполадке CPU (CPU_FAILURE_PREDICTED, см. описание формата ниже).
Иногда отключение процессора отменяется из-за того, что приложение не переключило все нити с последнего логического CPU. После устранения неполадки путем отмены связывания нитей с CPU (если это возможно) или завершения работы приложения системный администратор может перезапустить отключение процессора командой ha_star.
ha_star -C
где -C обозначает прогнозируемое событие сбоя CPU.
Физическим процессорам в базе данных ODM соответствуют объекты с именами procn, где n - это физический номер процессора n десятичное). Как и у любых других "устройств" в базе данных ODM, у объектов процессоров есть атрибуты и состояния (определено/доступно).
Для объектов proc всегда указывается состояние Доступен, несмотря на то, возможна работа с соответствующим процессором или нет. В атрибуте state объекта proc указывается, используется ли процессор, и если нет, то почему. Этому атрибуту могут быть присвоены следующие три значения:
enable | Процессор используется. |
disable | Процессор динамически отключен. |
faulty | Процессор объявлен неисправным при загрузке. |
Если в случае ошибок CPU процессор, для которого встроенное программное обеспечение сообщало о наличии ошибок, был успешно отключен, то его состояние изменяется с enable на disable. Независимо от операционной системы, отключенный процессор помечается встроенным программным обеспечением как неисправный. После перезагрузки он будет недоступным, а в атрибуте состояния будет указано значение faulty (неисправен). При этом объект ODM proc по прежнему будет помечен как доступный. Состояние объекта proc будет изменено на defined только после того, как неисправный CPU будет физически удален с системной карты или карты CPU (если это возможно).
Примеры:
Процессор proc4 работает правильно и используется операционной системой:
# lsattr -EH -l proc4 attribute value description user_settable state enable Processor state False type PowerPC_RS64-III Processor type False #
Для процессора proc4 поступает сообщение о возможном сбое и этот процессор отключается операционной системой:
# lsattr -EH -l proc4 attribute value description user_settable state disable Processor state False type PowerPC_RS64-III Processor type False #
При следующем перезапуске процессор proc4 помечается встроенным программным обеспечением как неисправный и недоступный для операционной системы:
# lsattr -EH -l proc4 attribute value description user_settable state faulty Processor state False type PowerPC_RS64-III Processor type False #
Во всех трех случаях для процессора proc4 указывается состояние Доступен:
# lsdev -CH -l proc4 name status location description proc4 Available 00-04 Processor #
Ниже приведены примеры записей протокола ошибок с комментариями:
# errpt ИДЕНТИФИКАТОР ВРЕМЯ T C ИМЯ РЕСУРСА ОПИСАНИЕ 804E987A 1008161399 I O proc4 CPU ОТКЛЮЧЕН 8470267F 1008161299 T S proc4 ОТКЛЮЧЕНИЕ CPU ОТМЕНЕНО 1B963892 1008160299 P H proc4 ПРОГНОЗ ОТКАЗА CPU #
Описание ошибки: Прогноз сбоя процессора
Данная ошибка указывает, что аппаратное обеспечение обнаружило высокую вероятность сбоя процессора в ближайшее время. Это сообщение выдается всегда, независимо от того разрешено отключение процессора или нет.
ПОДРОБНАЯ ИНФОРМАЦИЯ: Номер и расположение физического процессора
Пример: запись протокола ошибок - полный формат
МЕТКА:CPU_FAIL_PREDICTED ИДЕНТИФИКАТОР: 1655419A Дата/Время: 30 Сент 01 13:42:11 Порядковый номер: 53 ИД системы: 00002F0E4C00 ИД узла: auntbea Класс: H Тип: PEND Имя ресурса: proc25 Класс ресурса: processor Тип ресурса: proc_rspc Расположение: 00-25 Описание ПРОГНОЗ СБОЯ CPU Возможные причины СБОЙ CPU Причины сбоя Сбой CPU Рекомендуемые действия ВКЛЮЧИТЕ РЕЖИМ ЗАЩИТЫ CPU ВЫПОЛНИТЕ ПРОЦЕДУРЫ ДИАГНОСТИКИ Подробные данные ДАННЫЕ О НЕПОЛАДКЕ 0144 1000 0000 003A 8E00 9100 1842 1100 1999 0930 4019 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 4942 4D00 5531 2E31 2D50 312D 4332 0000 0002 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ... ... ... ... ...
Описание ошибки: При получении сообщения о прогнозируемом сбое процессор был успешно отключен.
Это сообщение заносится в протокол в том случае, если отключение CPU разрешено и CPU был успешно отключен.
ПОДРОБНАЯ ИНФОРМАЦИЯ: Логический номер CPU отключенного процессора.
Пример: запись протокола ошибок - полный формат:
МЕТКА: CPU_DEALLOC_SUCCESS ИДЕНТИФИКАТОР: 804E987A Дата/Время: 30 Сент 01 13:44:13 Порядковый номер: 63 ИД системы: 00002F0E4C00 ИД узла: auntbea Класс: O Тип: INFO Имя ресурса: proc24 Описание CPU ОТКЛЮЧЕН Рекомендуемые действия СБОЙ CPU - НЕОБХОДИМО ВМЕШАТЕЛЬСТВО ОБСЛУЖИВАЮЩЕГО ПЕРСОНАЛА Подробные данные ЛОГИЧЕСКИЙ НОМЕР ОТКЛЮЧЕННОГО CPU 0
В предыдущем примере показано, что процессор proc24 был успешно отключен и в момент отключения был связан с логическим CPU 0.
Описание ошибки: Отключение процессора, связанное с сообщением о прогнозируемом сбое, не было выполнено.
Это сообщение заносится в протокол в том случае, если отключение CPU разрешено, но CPU не был отключен.
ПОДРОБНАЯ ИНФОРМАЦИЯ: Код причины, логический номер CPU, дополнительная информация, зависящая от типа сбоя.
Код причины - это числовое шестнадцатеричное значение. Возможные
коды причины:
2 | Есть процессы или нити, связанные с последним логическим CPU. В этом случае в подробных данных перечисляются PID таких процессов. |
3 | После отправки уведомления о сбое процессора от зарегистрированного драйвера или расширения ядра было получено сообщение об ошибке. В этом случае в поле подробных данных указано имя драйвера или расширения ядра (в текстовом формате). |
4 | Отключение процессора привело к тому, что в системе осталось менее двух доступных CPU. Данная операционная система не отключает более N-2 процессоров в N-процессорных системах; это позволяет обеспечить правильную работу приложений и расширений ядра, которые используют общее число процессоров для определения типа системы, в которой они работают (однопроцессорная или многопроцессорная система SMP). |
200 (0xC8) | Процессор отключен (атрибуту ODM cpuguard присвоено значение disable). Это сообщение может быть показано только при запуске ha_star вручную. |
Примеры: записи протокола ошибок - полный формат
Пример 1:
МЕТКА: CPU_DEALLOC_ABORTED ИДЕНТИФИКАТОР: 8470267F Дата/Время: 30 Сент 01 13:41:10 Порядковый номер: 50 ИД системы: 00002F0E4C00 ИД узла: auntbea Класс: S Тип: TEMP Имя ресурса: proc26 Описание ОТКЛЮЧЕНИЕ CPU ОТМЕНЕНО Возможные причины ПРИКЛАДНАЯ ПРОГРАММА Причины сбоя ПРИКЛАДНАЯ ПРОГРАММА Рекомендуемые действия СБОЙ CPU - НЕОБХОДИМО ВМЕШАТЕЛЬСТВО ОБСЛУЖИВАЮЩЕГО ПЕРСОНАЛА СМ. ПОЛЬЗОВАТЕЛЬСКУЮ ДОКУМЕНТАЦИЮ ПО CPU Подробные сведения ПРИЧИНА ОТМЕНЫ ОТКЛЮЧЕНИЯ 0000 0003 ДАННЫЕ ОБ ОТМЕНЕННОМ ОТКЛЮЧЕНИИ 6676 6861 6568 3200
В предыдущем примере показано, что отключение proc26 не было выполнено. Код причины 3 указывает, что расширение ядра вернуло сообщение об ошибке процедуре уведомления ядра. В поле ДАННЫЕ ОБ ОТМЕНЕННОМ ОТКЛЮЧЕНИИ указано значение fvhaeh2, представляющее собой имя зарегистрированного расширения ядра.
Пример 2:
МЕТКА: CPU_DEALLOC_ABORTED ИДЕНТИФИКАТОР: 8470267F Дата/Время: 30 Сент 01 14:00:22 Порядковый номер: 71 ИД системы: 00002F0E4C00 ИД узла: auntbea Класс: S Тип: TEMP Имя ресурса: proc19 Описание ОТКЛЮЧЕНИЕ CPU ОТМЕНЕНО Возможные причины ПРИКЛАДНАЯ ПРОГРАММА Причины сбоя ПРИКЛАДНАЯ ПРОГРАММА Рекомендуемые действия СБОЙ CPU - НЕОБХОДИМО ВМЕШАТЕЛЬСТВО ОБСЛУЖИВАЮЩЕГО ПЕРСОНАЛА СМ. ПОЛЬЗОВАТЕЛЬСКУЮ ДОКУМЕНТАЦИЮ ПО CPU Подробные сведения ПРИЧИНА ОТМЕНЫ ОТКЛЮЧЕНИЯ 0000 0002 ДАННЫЕ ОБ ОТМЕНЕННОМ ОТКЛЮЧЕНИИ 0000 0000 0000 4F4A
В предыдущем примере показано, что отключение proc19 не было выполнено. Код причины 2 указывает, что с последним логическим CPU были связаны нити, которые не были отключены от этого CPU при получении сигнала SIGCPUFAIL. ДАННЫЕ ОБ ОТМЕНЕННОМ ОТКЛЮЧЕНИИ указывают, что эти нити принадлежат процессу 0x4F4A.
Опции команды ps (-o THREAD, -o BND) позволяют просматривать список нитей процесса с указанием номера CPU, с которым они связаны.
Пример 3:
МЕТКА: CPU_DEALLOC_ABORTED ИДЕНТИФИКАТОР: 8470267F Дата/Время: 30 Сент 01 14:37:34 Порядковый номер: 106 ИД системы: 00002F0E4C00 ИД узла: auntbea Класс: S Тип: TEMP Имя ресурса: proc2 Описание ОТКЛЮЧЕНИЕ CPU ОТМЕНЕНО Возможные причины ПРИКЛАДНАЯ ПРОГРАММА Причины сбоя ПРИКЛАДНАЯ ПРОГРАММА Рекомендуемые действия СБОЙ CPU - НЕОБХОДИМО ВМЕШАТЕЛЬСТВО ОБСЛУЖИВАЮЩЕГО ПЕРСОНАЛА СМ. ПОЛЬЗОВАТЕЛЬСКУЮ ДОКУМЕНТАЦИЮ ПО CPU Подробные сведения ПРИЧИНА ОТМЕНЫ ОТКЛЮЧЕНИЯ 0000 0004 ДАННЫЕ ОБ ОТМЕНЕННОМ ОТКЛЮЧЕНИИ 0000 0000 0000 0000
В предыдущем примере показано, что процессор proc2 не был отключен, поскольку в момент сбоя в системе оставалось менее двух активных процессоров (код причины 4).