Прогресс в процессоростроения достиг таких вершин, что результаты их работы начинают напоминать анекдот о человеке, который считает быстро, хотя и неверно. Эти высокотехнологичные кристаллы кремния, в свое время завоевали мир тем, что умеют быстро, но при этом точно и без ошибок считать. Сегодня же погоня за скоростью приводит к тому, что они считают быстро, но уже не совсем точно.
Ранее довольно редки ошибки в расчетах процессоров сегодня все чаще проявляются в масштабах крупных дата-центров. Процессоры достигли такой точки, их результаты становятся ненадежными, в Google называют их «ртутными» — текучесть этого материала символизирует непостоянство результатов, которые выдают современные процессоры.
Компьютерные процессоры выдавали надежные результаты вычислений по сравнению с людьми, но в абсолютном измерении они не были 100% надежными. Ошибки в расчетах встречались постоянно результате инженерных недостатков архитектуры, условий работы и других препятствий.
Однако ошибочные результаты в работе процессоров были столь редким явлением, о которых заботились только авторы программ и систем, которые требовали сверхвысокой точности и надежности вычислений. Точности большинства компьютерных процессоров было достаточно, чтобы в целом считать их надежными.
Однако ситуация начала меняться в худшую сторону: два крупнейших ТехноГигант — Google и Facebook — начали замечать, что процессоры все чаще выдают неправильные результаты. Сбои происходят настолько часто, что они обратились к технологическим компаниям с предложением вместе исследовать проблему и понять, как выявить такие ошибки и уменьшить их.
Приключения Google
«Наши приключения начались, когда наши продакшн-команды стали все больше жаловаться на искажение данных, — говорит инженер Google Петер Хохшильд. — Эти машины были достоверно обвинены в разрушении различных хорошо отлаженных приложений большого масштаба. Каждую машину обвинило несколько независимых команд, но обычные методы диагностики не нашли проблем с ними «.
Инженеры Google после тщательного изучения программного кода и телеметрии с машин начали подозревать аппаратное оборудования. Их расследование показало, что количество случаев было больше, чем ожидалось и эти случаи проявлялись случайно. Они случались через длительное время после инсталляции на отдельных процессорных ядрах, а не на всех чипах или семействе компонентов.
Анализируя эти тихие ошибки искаженного исполнения (CEEs) специалисты Google пришли к выводу, что во всем виноваты «ртутные» процессорные ядра. Они случайным образом в различных обстоятельствах выдавали ошибку вычислений таким образом, что ее не удавалось спрогнозировать.
Эти ошибки не были результатом просчетов в архитектуре чипов, они не проявлялись во время производственных тестов. Инженеры Google предполагают, что ошибки стали появляться том, что прогресс в процессоростроения зашел слишком далеко. Он дошел до предела, когда ошибки начинают появляться гораздо чаще, но пока нет инструментов, чтобы их заблаговременно выявлять.
Хохшильд с коллегами опубликовал статью «Ядра, которые не считают» (Cores that do not count), в которой выдвинул несколько возможных причин, почему ненадежность процессорных ядер начала привлекать внимание только сейчас. Одна из них — распространение больших серверных ферм, которые делают редкие явления значительно чаще. Также среди причин — повышенное внимание к общей надежности, улучшения инструментов создания кода, которые уменьшают количество программных багов.
«Но мы верим, что есть более фундаментальная причина уменьшения размеров, которое приблизилось к лимитов масштабирования технологии CMOS в сочетании со сложностью архитектурного дизайна», — пишут инженеры в своей статье. Они отмечают, что существующие методы верификации надежности процессоров слабо пригодны для выявления багов, которые возникают случайно или является следствием износа в процессе эксплуатации.
Проблемы также в Facebook
Самая соцсеть планеты Facebook, которая также владеет гигантскими дата-центрами, также заметила ненадежность работы процессоров. В феврале компания выпустила статью «Тихая искажения данных в большом масштабе», которая описывает эту проблему.
«Тихая искажения данных становится все более распространенным феноменом в дата-центрах, чем это наблюдалось ранее», — говорится в статье. Ее авторы предлагают определенные способы смягчения проблемы, но они не касаются причин ее появления.
Ненадежные вычисления несут тяжелые последствия
Риски ненадежной работы процессорных ядер включают в себя не только сбои и «падения» программ. Это также неправильные расчеты и потеря данных, которые могут происходить незамеченными.
В большом масштабе они несут значительные риски. Например, Хохшильд вспоминает, что один из таких случаев в Google считали себя не аппаратным сбоем, а атакой программ-вымогателей.
«Один из наших» ртутных «ядер повредило шифрования, — объясняет Хохшильд. — Это произошло таким образом, что только она могла расшифровать зашифрованное ним «.
В Google отказываются называть уровень ошибок процессорных ядер, ссылаясь на бизнес-причины. Однако они привели грубую оценку — одно “ртутное ядро” на несколько тысяч машин. Похожую цифру сообщила и Facebook.»
В Google надеются на появление автоматизированных методов для обнаружения «ртутных» ядер и специалисты компании предложили стратегию тестирования процессоров на протяжении всего их жизненного цикла вместо однократной проверки на заводе. Сейчас мегакорпорация проводит такие проверки в ручном режиме, что не слишком точно, но соответствующие автоматизированные инструменты только разрабатываются.
“Наш опыт показывает, что примерно половина найденных людьми “ртутных” ядер оказывается проблемно. Другая половина представляет собой смесь ложных обвинений и ограниченной воспроизводимости ошибок”, — говорят исследователи Google.
По материалам: The Register