четверг, 11 марта 2010 г.

Где-то там есть куча разогнанных машин...

Это перевод There's an awful lot of overclocking out there. Автор: Реймонд Чен.

Часть нашей команды просматривает отчёты о проблемах Windows, которые люди отправляют нам, нажимая кнопку "Отправить отчёт" в диалоге вылета программы. И оказывается, что огромное количество отчётов вообще не имеют смысла.

Например, если бы у нас была последовательность инструкций вида:
mov ecx, dword ptr [какое-то значение]
mov eax, dword ptr [совершенно другое значение]
cmp ecx, eax
jnz generateErrorReport
то, когда мы смотрим в отчёт, регистры ecx и eax оказываются равными! Есть и другие отчёты аналогичной природы, когда CPU делает просто что-то невозможное.

Нам пришлось пометить все эти отчёты как "вероятно, проблема с железом". Поскольку отчёты о вылетах отправляются анонимно, у нас нет никакой возможности связаться с отправителем, чтобы задать ему вопросы (те, что исследовала группа, в которой я был, были ошибками, которые произошли только раз или два, но они были такого типа, что стоили более близкого исследования, потому что ошибки, которые могли бы за ними скрываться, были бы очень серьёзными).

Один из моих коллег имел просто кучу отчётов, где программа вылетала на инструкции
xor eax, eax
Как вы вообще можете вылететь на инструкции, которая просто обнуляет регистр? Несмотря на это, у нас были сотни отчётов в точности такого плана.

Мой коллега прошерстил все опубликованные материалы, которые могли бы пролить свет на эту проблему с "xor eax, eax". И ничего!

Он отправил письмо в Intel, чтобы его инженеры подсказали, не приходит ли им что-нибудь в голову по этому вопросу [кроме разгона, конечно же - я добавил это, потому что люди, кажется, принимают мои истории весьма буквально, требуя от меня указывать мельчайшие детали, даже если что-то настолько очевидно, что не требует упоминания]. Они сказали, что единственной [другой] вещью, которая приходит им в голову, является что кто-то мог бы иметь неправильно установленную память (mis-paired RAM) на своей мат-плате, но их описание того, что обычно при этом происходит, не вязалось с нашими случаями.

Поскольку отчёты с этой ошибкой приходили достаточно часто (определённо чаще, чем те раз или два, которые получал я, работая со своими ошибками), коллега попросил, чтобы следующим десяти людям, которые встретят эту ошибку, дали бы возможность оставить свой e-mail или номер телефона, чтобы он мог связаться с ними и задать вопросы. Чуть позже, ему сообщили, что набралось десять человек, принявшими его предложение, так что он отправил каждому из них письмо, задавая различные вопросы о конфигурации железа, включая вопрос о том, не используют ли они разгон [- продолжение врезки выше: Видите? Очевидно, что разгон рассматривался как возможность.]

Пять людей ответило: "ах, да, я разогнал машину. А, что, какие-то проблемы?".

Другая половина сказала: "а что такое разгон?". Он позвонил им и прошёлся по их конфигурации. Оказалось, что они все используют разгон машины. Но они не делали это специально. Компьютеры уже были разогнаны, когда они купили их. Эти компьютеры со "скрытым разгоном" пришли от небольших, независимых магазинчиков типа "Компьютеры Боба", а не от больших производителей или продавцов.

Обеим группам он посоветовал не использовать разгон или, хотя бы, не использовать его так агрессивно. Во всех случаях люди сообщили, что их компьютеры, которые регулярно вылетали, теперь работают стабильно.

Мораль истории: в мире используется множество разогнанных машин, и из-за них Windows смотрится плохо.

Я вот думаю, нельзя ли как-то определить, не разогнана ли машина, программно, чтобы поместить в дилог вылета предупреждение: "Кажется, ваш компьютер разогнан. Это может вызывать случайные вылеты. Попробуйте запустить его на сертифицированных настройках для улучшения стабильности". Но, наверняка, это не будет работать. Помимо ложно-положительных срабатываний, люди просто будут говорить: "ох, опять этот Microsoft пытается свалить вину за свои баги на других".

Читать далее: И опять же: это может быть и не разгон.

3 комментария:

  1. Спасибо!

    P.S. На будущее: можно выделить опечатку и нажать Ctrl + Enter.

    ОтветитьУдалить
  2. Да, забыл. Хотя постоянно на глазах маячит. :)

    ОтветитьУдалить

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.