- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF120:Intel
Материал из Linuxformat.
Содержание |
Intel inside
- Новые чипы, виртуализация, инструменты администратора — Intel ломает все преграды, говорит Пол Хадсон, а преимущества первым получает Linux.
Компьютеризация — та же эволюция. Мы берем хорошие идеи и делаем их лучше — каждые 18 месяцев удваиваем число транзисторов, расширяем емкость устройств хранения данных, постоянно отлаживаем алгоритмы и улучшаем интерфейсы, продвигая компьютеризацию вперед.
Иногда, однако, появляется истинно новая технология, и рынок старается отреагировать. ОС с трех-четырехлетними циклами обновления должны бороться, чтобы не отстать, а вот Linux быстро откликается на все новые сдвиги в компьютерных технологиях, благодаря своей открытости.
Так, в Microsoft требуется несколько месяцев на прочтение технических спецификаций и создание кода для Windows. Затем, перед окончательным выпуском в виде части сервисного пакета или даже новой версии операционной системы, код должен пройти тщательное тестирование и процедуру контроля качества. В Linux каждый поставщик инноваций может иметь инженеров, работающих над изменениями в ядре задолго до выхода продукта, а значит, поддержка гарантируется сразу же. А кто напишет код для ядра лучше, чем инженеры той же компании, что изобрела технологию?
Один из самых поразительных подобных примеров – вклад Intel как в ядро, так и в другие свободные продукты, например, X.org. Будучи пятой компанией по величине вклада в ядро, Intel выдает огромную массу кода: и для драйверов к оборудованию, и по технологиям, связанным с CPU, например, виртуализацией. Она даже пошла дальше и взяла на работу двух высоко-профессиональных программистов ядра и X.org – Алана Кокса [Alan Cox] и Кейта Паккарда [Keith Packard], а также десятки других, чтобы ее новые технологии хорошо работали в Linux.
К сожалению, это сложно разглядеть сквозь фасад корпорации, и в качестве конкретных примеров того, где Intel доказала свое превосходство, мы расскажем о трех ключевых технологиях, о которых, вы, возможно, даже не слышали: Nehalem, VT-d и vPro. Заодно мы объясним, как другие свободные проекты, вроде GCC, выигрывают от вовлеченности корпораций и как новые разработки вы-водят Linux на передовые аппаратные рубежи.
История Nehalem
В конце прошлого года Intel выпустил новый процессор. Само по себе это не сильно интересно: за последние годы Intel выпускал десятки CPU, и большинство из них было x86‑совместимыми. Но если отбросить маркетинговую шелуху и технические мелочи, станет ясно, что за все эти годы было только три крупных изменения.
В 1985 появился 386, и – хотите верьте, хотите нет – Intel продолжал его выпуск вплоть до 2007 года, то есть этот процессор – долгожитель-рекордсмен. Главным его преимуществом была 32‑разрядность, то есть адресация до 4 ГБ памяти (астрономическая цифра, по тем временам). Однако это также значит, что 386 – общий знаменатель для всех современных CPU от Intel и AMD: например, Debian все еще компилируется для 386, ибо это гарантирует работу на всех более поздних CPU.
Через десять лет Intel выпустил Pentium Pro, впервые шагнув в мир серверов. Несмотря на сохранение старой торговой марки, только с привеском Pro, Pentium Pro кардинально изменил архитектуру Pentium’а, введя то, что сейчас называется i686. Ее используют около 70 % пользователей Linux. Так как i686 был на 100 % обратно совместим с 386, специально для Pentium Pro компилировались только высокопроизводительные серверные приложения. Тогдашние нововведения Pro – исполнение с изменением последовательности, переименование регистров и встроенный кэш – создали основу для процессоров Pentium II и Pentium III. Те в конце концов вышли на 1,4 ГГц – более чем в десять раз превзойдя исходную частоту. А когда все уже решили, что ядро Pentium Pro забыто, оно возродилось в передовых процессорах Intel Core и Intel Core 2 как Pentium M, доказав мощный потенциал первоначальной архитектуры.
Но сейчас больше всего шума вызывает третья переработка – отчасти потому, что Intel расхвалила его как «самый важный серверный выпуск со времен Pentium Pro», но отчасти так оно и есть: Nehalem, последняя процессорная технология Intel, это громадный скачок вперед в разработке CPU. Она позволяет сисадминам разворачивать больше мощности на меньшем пространстве, причем существенно дешевле, чем всего год назад.
Nehalem в действии
Intel упразднил системную шину (Front Side Bus, FSB), которая тормозила старые Xeon’ы по полосе пропускания и латентности. Также был заменен дискретный контроллер памяти, расположенный в чипе северного моста материнской платы. В новых Xeon’ах 5500 вместо них введены Nehalem QPI (Quick Path Interconnect) и встроенный контроллер памяти.
Первый – это интерфейс от-точки-к-точке, способный развить теоретическую скорость до 6,4 ГБ/с на канал или до 32 ГБ/с суммарно. Xeon 5500 – это чип с двумя сокетами и двумя QPI-каналами на сокет, причем «четверной » Xeon 5500 на базе Nehalem с дополнительными QPI-каналами планируется уже в этом году. Что касается нового контроллера памяти, то за счет расположения внутри CPU он не просто выигрывает по части полосы пропускания и времени ожидания: Intel также запихнул новый канал и ввел поддержку сверх-быстрых 1,333‑MГц DDR3 DIMM’ов. Результат – резкий рост пропускной способности.
Но это только начало. Nehalem – это масса других функций, направленных на резкое улучшение и общей производительности вычислений, и специфичных серверных нагрузок. Во-первых, Intel расчехлила технологию Hyperthreading (HT), позволяющую одному четырехъядерному чипу Xeon 5500 обрабатывать одновременно восемь потоков. Есть еще и новый режим Turbo Mode. По сути, это функция автоматического разгона: на ней лежит тонкое управление частотами, потреблением мощности и температурой. В случае 2,93‑ГГц модели Xeon X5570, все четыре ядра могут быть разогнаны до 3,2 ГГц при соответствующих условиях, однако от одного до трех ядер могут работать на частоте 3,33 ГГц при низкопотоковой загрузке.
Все эти чудеса едва оставляют место на описание мелких выигрышей в производительности. Проще сказать, Nehalem – это монстр. По сравнении с 2,7‑ГГц процессором Opteron с двойным сокетом, самым быстрым из распространенных серверных чипов AMD, 2,93‑ГГц Xeon X5570 обычно от 50 % до всех 100 % быстрее. Это показали тесты, включающие профессиональную визуализацию, моделирование гидродинамики и кодирование видео.
У нас была возможность побаловаться с новым Boston Quattro 5500 GP – диву даешься, сколько мощи втиснуто в столь малый объем. Когда-то давно нам приходилось рассматривать Boston 2300 GP, с двумя индивидуальными материнскими платами, помещенными в единый модуль 1U. Это нелегко, учитывая, сколько тепла любят выделять серверные CPU. Но в 5500 Boston взяла свою систему с двумя материнскими платами и удвоила ее, применив модуль 2U и, на изумление, 32 ядра. Да, новый Nehalem HT означает, что вы получите 64 виртуальных ядра в одной посуде.
Не так давно блейды считались лучшим способом вместить компьютерную мощь в малый объем, однако Nehalem овеществил сервер Boston без ущерба разом и для производительности, и емкости дисков. Это стало возможным с появлением модели Xeon L5520, которая, при тактовой частоте 2,26 ГГц и четырех ядрах, потребляет всего 60 Вт при работе на полной мощности.
Каждая из материнских плат работает независимо от других, на каждой два четырехъядерных Xeon’а, а также свое ОЗУ и свой диск. А значит, остальные платы можно подключать по необходимости: в конце концов, самый энергосберегающий CPU – тот, что выключен. Когда все четыре платы заработают на полную мощность, вентиляторы охладят машину, произведя сильный шум, но зато ваш 2U-сервер легко может оказаться самым сильным в мире: предустановленная 64‑разрядная CentOS выполнит любую задачу, что ни взбредет вам в голову.
Блейды хоронить пока рано, но Quattro с Nehalem доказывает, что стоечные серверы все еще верховодят в курятнике, обеспечивая грубую силу без взлета счетов за электричество выше крыши.
Серверная сторона
Когда Nehalem в прошлом году добрался до потребителей, он стал почти всеобщим любимцем. Мгновенная прибавка в скорости всегда приветствуется, а архитектура Nehalem содержит ряд изменений, обеспечивающих скачки в производительности без ощутимых затрат на энергопотребление. В большинстве случаев Nehalem действительно потребляет меньше мощности, чем его предшественник.
Владельцы серверов восторгались им еще больше, ведь потребление энергии – проблема серьезная. (Вспомним, что обеспечение серверов энергией и их охлаждение – самая большая расходная статья серверной, превышающая затраты на оборудование и персонал.) Новые процессоры Xeon, использующие Nehalem – модель 5500 – экономят столько энергии, что окупают себя менее чем за год. Представьте себе масштаб: взяв ферму из 200 серверов Intel Xeon четырехлетней давности и заменив их тем же количеством Xeon’ов серии 5500, вы получите производительность, большую в 10 раз, а потребление энергии снизится на 20 %. А если вы хотите резко снизить свои затраты, берите 25 Xeon’ов серии 5500, при этом потребление энергии снизится на 90 %, а вычислительная мощность будет та же.
Одна из причин, почему Nehalem настолько эффективен по энергопотреблению – он является вехой, отмечающей возврат Hyperthreading (HT), Intel’овского рыночного наименования для симметричной многопоточности их CPU. HT разрабатывался, чтобы улучшить работу чипов со сложным дизайном, то есть по возможности использовать простаивающие части CPU для других операций. Это не всегда работало – бывало, что процессоры первого поколения HT от Intel в некоторых случаях даже замедлялись. Однако второе поколение HT (начиная с SSE3) было недурным – при неудачном раскладе производительность падала до уровня не-HT чипа, а зачастую CPU превосходили своих лишенных HT соперников. Nehalem представляет третье поколение HT, созданное, чтобы одновременно задействовать еще больше частей CPU и расширить зону оптимальной работы.
Изящество HT состоит в том, что энергии потребуется не больше, чем без нее. Мало того, она может быть даже эффективнее «настоящей» многоядерной технологии, благодаря новой энергосберегающей функции, которая переводит бездействующие ядра в состояние без потребления энергии.
Конечно, ядро CPU, виртуализованное с использованием HT, никогда не обгонит настоящий CPU с той же тактовой частотой; здесь-то и выходит на сцену Linux. Видите ли, наивная реализация многопроцессорности одинаково обращается с каждым CPU, хоть виртуальным, хоть нет; для HT это, очевидно, не годится. Впервые кусок кода, распознающего процессоры Nehalem (его использует сам Линус), появился в ядре 2.6.27, но Intel вложился в написание кода ядер 2.6.28 и 2.6.29, чтобы извлечь из новой архитектуры максимум.
Такой оборотистости может достичь только свободное ПО, причем каждый, кто пользуется современным ядром, получает выгоду от Nehalem немедленно, не дожидаясь выхода новой версии ОС. Более того, некоторые из функций новейших ядер – а именно, мониторинг производительности и экономия энерго- потребления для Nehalem – были портированы назад на более ранние ядра; то есть пользователи Red Hat Enterprise Linux 5, получив очередное обновление, насладятся эффективным энергопотреблением Nehalem.
Виртуализация ввода/вывода
Linux был на передовой в аппаратной виртуализации для x86 с момента ее появления несколько лет назад, за что опять-таки спасибо разработчикам свободного ПО, способным следовать мантре «выпускайте часто, выпускайте рано» и набрасываться на новые технологии, как только они возникают.
Теперь, благодаря технологиям VT-x от Intel и AMD-V от AMD, аппаратная виртуализация означает, что виртуальные процессоры смогут работать очень быстро. Это идеально для операций, привязанных к CPU, так как технология сейчас настолько хорошо отлажена, что CPU, работающий виртуально в Nehalem, не отстает от «голого» Xeon’а прошлого поколения. Однако стоит виртуализации отойти от CPU, как неожиданно возникает проблема: если ваша сетевая или графическая карты были не в курсе виртуализации, они должны управляться программой, которая вызовет большое падение производительности. Если вас раздражало, что Compiz не работает на виртуальной машине, вообразите попытку запуска в ней рабочей станции для 3D-визуализации!
Сейчас два решения этой проблемы только начинают входить в мейнстрим, и опять Linux здесь в первых рядах. Первое решение в Intel окрестили Directed I/O или VT-d, а в AMD – просто IOMMU. На самом деле, второе название более точное – хотя обе технологии дают виртуальной машине прямой доступ к таким устройствам ввода/вывода, как видеокарта или сетевой адаптер, как если бы они были для нее родными.
Parallels уже использует VT-d в своем приложении Parallels Desktop Extreme, которое пока допускает только виртуализацию видеокарты. Так что если у компьютера внутри четыре GPU, можно назначить по штуке на три разных виртуальных машины, а последний приберечь для операционную систему хоста.
Прежние попытки решить эту проблему обычно применяли отображение вызовов OpenGL гостевой машины на вызовы OpenGL хостовой, что давало существенный выигрыш в скорости – до 40 % реальной производительности видеокарты. Однако при прямом доступе виртуальной машины к видеокарте она работает почти на полной скорости: задержка происходит только из-за тонкого слоя, предохраняющего хостовую ОС на случай, если виртуальная вдруг задурит. Parallel Desktop Extreme поддерживает до 16 ядер и 64 ГБ ОЗУ на виртуальной машине, то есть огромное количество данных можно гонять целиком в виртуальном окружении. И, как вы, наверно, уже догадались, Linux был сертифицирован для использования с первого же дня, и как хост, и как гость.
Второе решение проблемы виртуализированного ввода/вывода Intel назвал как VMDq, и у AMD нет соответствующего эквивалента, так как технология реализуется в сетевом оборудовании, а не в CPU. Приведем два примера:
- У вас есть одна ОС, работающая на «голом железе». При входе сетевого пакета он передается прямо в ОС, так как других вариантов нет.
- У вас есть одна ОС, работающая на «голом железе», но с двумя гостевыми виртуальными машинами. При входе сетевого пакета хост определяет, которой из них нужен этот пакет, затем виртуализирует его и передает гостевой ОС.
Второй случай представляет проблему – правда, небольшую: ведь у вас всего две виртуальные машины. А если их 16? Тогда ваша проблема разрастется – виртуализация такого количества ввода/вывода требует немалого объема работы CPU, в частности, из-за того, что придется размышлять над балансом загрузки и убеждаться, что какая-то из виртуальных машин не забирает слишком много сетевого времени.
VMDq делает так, что ваша сетевая карта знает о виртуализации. Таким образом, исключается ситуация, когда одно ядро CPU на хосте обрабатывает весь сетевой трафик. Вместо этого, у каждой виртуальной машины своя очередь на сетевое оборудование – она думает, что все как в жизни, и использует его обычным образом, но за кулисами сетевая карта автоматически тасует все запросы, чтобы гарантировать равноправие доступа к сетевому адаптеру. В результате снижаются требования к CPU и ускоряется работа с сетью – и, опять-таки, поддержка VMDq уже интегрирована в ядро Linux, то есть пользоваться ею можно уже сейчас.
VPro: друг сисадмина
Последняя технология, которую мы рассмотрим, называется vPro, и хотя она не связана непосредственно с Linux (она сидит глубже ОС), но весьма популярна среди системных администраторов Linux, управляющих крупными парками компьютерной техники.
Вы могли видеть указание на vPro в виде наклейки на ноутбуке или других устройствах, но некоторые просто не понимают, что она делает – во многом потому, что она не имеет единой количественной задачи.
В сердце vPro лежит обычный CPU, но он все время активен и потребляет немного энергии, даже когда машина выключена. При подключении к корпоративной сети к этому CPU можно обратиться напрямую, если иметь пароль администратора, и считывать основную информацию о машине, о CPU, ОЗУ и емкости жесткого диска, без необходимости включать компьютер. По сути, это позволяет производить ночную инвентаризацию ресурсов, каждые сутки, без особых затрат энергии. При желании можно даже получить эту информацию по HTTP, но лучше оставить это для аварийных ситуаций.
Настоящее волшебство данной технологии в том, что Intel выпустил открытый код для Linux, который позволяет всем сохранять небольшие объемы данных – около 8 КБ за раз – в постоянном хранилище, которое можно будет читать при выключенной машине. Это значит, что вы можете записывать данные об обновлении системы или последнее обновление антивирусной базы на постоянное хранение и считывать его в процессе инвентаризации.
Но это только основы vPro. Поскольку эта платформа требует только материнскую плату Intel, CPU и сетевую карту, она способна на большее – вы получаете доступ к BIOS до загрузки или можете программировать правила фильтрации, отсеивающие сетевые пакеты перед тем, как они попадут к ОС, а то и аппаратные таймеры, запускающие механизм самозащиты, если определенное действие не происходит. Все эти функции возможны потому, что vPro сидит глубже, чем Linux, и в то же время обеспечивает резервный доступ к ОС; делайте с ним что хотите.
Заветная цель vPro состоит в максимальном уменьшении числа обращений в службу поддержки, так как вы сможете почти все сделать удаленно. Если дела действительно пойдут плохо, вы сможете перенаправить удаленную консоль на ваш локальный компьютер, получив полный контроль над системой, даже если SSH не работает.
LXF