Составляющие ядра, о которых следует знать

Для этого раздела лучше подошел бы заголовок «Параметры ядра, о которые можно споткнуться, если не знать, для чего они нужны». Если кто-то сообщает вам, что у вас наблюдаются проблемы с ACPI, вы должны понимать, о чем идет речь. Когда система извергает страшное проклятие: «lock order reversals» (аннулирован запрос на блокировку), вы должны знать, что неприятности вам гарантированы. Основные источники проблем – это ACPI, РАЕ, SMP и аннулирование запроса на блокировку.

ACPI

Усовершенствованный интерфейс управления конфигурированием и энергопотреблением (Advanced Configuration and Power Interface, ACPI) отвечает за низкоуровневое конфигурирование аппаратного обеспечения, режима электропитания и т. п. Это следующий этап развития устаревших протоколов, таких как Plug-and-Play, системы настройки аппаратного обеспечения PCI BIOS и АРМ (Advanced Power Management – усовершенствованное управление питанием). Как и в других UNIX-подобных операционных системах, при реализации ACPI в системе FreeBSD была использована справочная информация, представленная компанией Intel.

Это просто протокол конфигурирования аппаратного обеспечения, какие тут могут быть ошибки? Скажем так, не все производители аппаратных компонентов реализуют поддержку ACPI в точном соответствии со спецификациями, скорее, они реализуют достаточный объем функций, чтобы обеспечить совместимость своей аппаратуры с операционными системами компании Microsoft. Это означает, что все остальные, которые используют другие операционные системы, должны искать способы обхода этих недостатков. FreeBSD также включает в себя различные обходные пути для таких неполных реализаций ACPI, но иногда до их выхода в свет проходит некоторое время.

Кроме того, в первых моделях аппаратных средств, использовавших ACPI, часто обнаруживались проблемы с самим ACPI. Как и в случае с любым другим сложным протоколом, первым разработчикам приходилось учиться применять этот протокол на практике. Если ваши аппаратные компоненты были собраны в этот период, вам может потребоваться вообще запретить использование ACPI, поместив строку hint. acpi. 0. disabled=1 в файл /boot/loader.conf. Если у вас есть подозрения на проблемы с ACPI в вашем аппаратном окружении, можно попробовать запретить использование ACPI однократно, выбрав соответствующий пункт меню загрузки, как рассказывалось в главе 3.

РАЕ

В течение многих лет компьютеры с архитектурой i386 имели свойственное им ограничение – они могли иметь не более 4 Гбайт памяти. В то время компьютеры со 128 Мбайт памяти рассматривались как высокопроизводительные серверы, но к настоящему моменту развитие технологий сделало преодоление этого барьера не только мыслимым, но и реальным. Подобные ограничения существовали и раньше, начиная от предела в 640 Кбайт памяти для IBM PC и заканчивая пределом в 8 Гбайт для жестких дисков. Разработчики архитектуры должны выбрать некоторые пределы и попытаться установить их как можно выше, чтобы потом не волноваться о них в течение ближайших десяти лет или что-то около того. Механизм расширения пространства физических адресов (Physical Address Extensions, РАЕ) позволил поднять планку ограничения на объем памяти до 64 Гбайт, чего должно хватить на ближайшие несколько лет. К тому времени, когда такие объемы памяти станут обычным делом, большинство новых систем будут работать в 64-битовом режиме, что позволит поднять ограничения намного выше.

Но не все устройства совместимы с РАЕ, поэтому РАЕ не может включаться в ядро GENERIC. Конфигурацию ядра с поддержкой РАЕ можно найти в файле /sys/i386/conf/РАЕ. Поддержка РАЕ необходима только для архитектуры i386 – amd64, sparc64 и другие новейшие архитектуры имеют другие ограничения на объем памяти, которые еще не были достигнуты.

Поддержку РАЕ нельзя запретить на этапе загрузки или во время работы системы – она либо присутствует в ядре, либо нет.

Симметричная многопроцессорная обработка

Симметричная многопроцессорная обработка (Symmetric Multiprocessing, SMP) означает наличие в системе нескольких микропроцессоров общего назначения. В теории операционная система равномерно распределяет рабочую нагрузку между несколькими процессорами. Но на самом деле все гораздо сложнее, чем кажется на первый взгляд, по причинам, которые будут рассматриваться в главе 12. Для обслуживания нескольких процессоров ядро должно включать options SMP и device apic.

В некоторых случаях в отдельных частях системы могут появляться проблемы, связанные с поддержкой SMP. До выяснения источника проблем может оказаться полезным временно отключить поддержку SMP. Если проблема присутствует при включенной поддержке SMP и пропадает при ее отключении, это поможет идентифицировать проблему. Запретить поддержку SMP можно на этапе загрузки, установив значение параметра kern. snip, disabled равным 1. Аналогичным образом можно отключить поддержку APIC, побочным эффектом чего является отключение поддержки SMP. Запретить поддержку APIC можно, установив значение параметра hint. apic. 0. disabled="1".

Аннулирование запроса на блокировку

Ключевым элементом реализации поддержки SMP является блокировка ядра. Хотя вы, как пользователь, не должны беспокоиться по поводу блокировок ядра, тем не менее иногда при работе с определенными версиями FreeBSD (в частности, -current) в консоли могут появляться сообщения об аннулировании запросов на блокировку. Эти сообщения генерируются механизмом отладки ядра WITNESS (глава 13) и означают, что блокировки в ядре выполняются не так, как было задумано разработчиками. По большей части эти сообщения не представляют ничего опасного, но они выглядят устрашающе и действительно свидетельствуют о потенциальных проблемах.

Если вам встретятся подобные сообщения, лучше всего узнать, не сообщалось ли что-нибудь об этом конкретном сообщении ранее. Для этого можно выполнить поиск в Интернете по тексту сообщения. Можно также поискать на странице Lock Order Reversal веб-сайта FreeBSD (к моменту написания этих строк поддерживалась Бьерном Зибом (Bjoern Zeeb)) и узнать, упоминается ли данное сообщение здесь. Если поиск сообщения, встретившегося у вас, не дал результатов, вам следует сообщить об этом разработчикам FreeBSD, написав письмо в рассылку FreeBSD-hackers@FreeBSD.org.

Теперь у вас имеется объем знаний, достаточный для обслуживания ядра FreeBSD. Пойдем дальше и посмотрим, что можно сделать с сетью.

Источник: ЛукасМ. FreeBSD. Подробное руководство, 2-е издание. – Пер. с англ. – СПб.: Символ- Плюс, 2009. – 864 е., ил.

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий