Google прилагает много усилий, чтобы заранее обнаруживать дефекты программного обеспечения в ключевых проектах с открытым исходным кодом.
Но теперь, как сообщается, там разрабатывают систему SiliFuzz, которая будет выявлять дефекты в центральных процессорах.
Принцип работы SiliFuzz заключается в анализе работы процессора путём запуска заранее подготовленных тестовых данных, собранных с помощью эмуляторов и дизассемблеров. Это одна из разновидностей фаззинга — процессор нагружают «случайными» вычислениями, результат которых проверяется на выходе. Если расхождения есть, процессор считается дефектным.
Система рассчитана на выявление в первую очередь электрических дефектов чипов, которые могли возникнуть при производстве, установке, во время работы и т.д. Особое внимание уделяется именно им, а не логическим ошибкам в самих CPU. При этом сами тесты не используют какие-либо низкоуровневые механизмы отладки, что позволяет задействовать их на «боевых» системах.
Собственно говоря, задача разработчиков — создать систему, которая могла бы регулярно тестировать каждое ядро в каждом сервере Google, минимально влияя на его производительность. В текущем виде SiliFuzz выбирает момент, когда нагрузка на конкретную машину не так велика, и последовательно тестирует группы из четырёх потоков (2 ядра с SMT) в течение не более чем двух минут. Пока разработчики ориентируются на процессоры x86-64, которые массово используются самой Google.
Основная цель проекта — автоматизация выявления скрытых дефектов, которые приводят к неверным вычислениям и которые гораздо опаснее обычных сбоев и падений, поскольку единственное небольшие отклонения в работе чипа приводит к накоплению массива ошибок. Так, например, выяснилось, что некоторые CPU иногда возвращали неверные результаты вызова F2XM1 (x2-1), а другие — периодически давали отличающиеся от правильных расчёты FCOS. В последнем случае разница составляет менее 0,0000003%, но и этого может быть достаточно для проблем.
Как отмечается, около 45% дефектов, найденных с помощью SiliFuzz, не отслеживаются иными инструментами. В будущем разработчики планируют масштабировать SiliFuzz, повысить скорость работы программы, а также в целом повысить качество работы.
(С) servernews.