В одном из наших внутренних списков рассылки кто-то спросил, почему их дорогая четырёх-процессорная машина, кажется, использует только один из своих процессоров. Во вкладке "Производительность" Диспетчера Задач график показывал, что первый процессор выполняет всю работу, а остальные три практически всегда стоят. Используя способность Диспетчера Задач по установке привязки к процессорам для каждого процесса, конечно же, удалось заставить машину работать значительно быстрее. Но что же случилось, что привело к такой путанице привязок процессоров?
В этот момент, я подключил свои телепатические способности. Возможно, вы тоже сможете это сделать.
Первая подсказка: мои телепатические способности успешно предсказали, что Проводник также имел привязку к первому процессору.
Вторая подсказка: привязка к процессору наследуется дочерними процессами (почему? Потому что чаще всего это именно то, что вы хотите).
Вот моё телепатическое предсказание:
Мои телепатические силы говорят мне, чтоХотя моё первое предсказание было верным, остальные были просто случайными, правда они были на правильном пути, чтобы успешно помочь в разрешении проблемы и поиске виновника.
- Проводник имеет привязку к первому процессору....
- потому что вы смотрели предпросмотр MPG файла...
- чей декодер вызывает SetProcessAffinityMask в своей DLL_PROCESS_ATTACH...
- потому что разработчики кодека не смогли исправить свои баги с многопоточностью...
- и поэтому они установили привязку процесса в 1, "исправляя" баги.
Настоящей проблемой, как оказалось, было стороннее расширение оболочки, чьи авторы не смогли исправить свои баги с многопоточностью, поэтому они решили скрыть их вызовом функции SetProcessAffinityMask, привязывая весь процесс (который оказался Проводником) к единственному процессору. У-ху - мы исправили все наши глюки всего одним вызовом функции! Давайте закатим тусовку и отпразднуем это!
А поскольку привязка к процессору наследуется дочерними процессами, это привело к тому, что все программы, запущенные пользователем (Проводником) использовали только первый процессор из четырёх.
(Да, мы связались с разработчиками этого расширения, чтобы сообщить о проблеме, и они сказали, что в последней версии их программы такого уже нет).
Комментариев нет:
Отправить комментарий
Можно использовать некоторые HTML-теги, например:
<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>
Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку.
Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.
Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.
Примечание. Отправлять комментарии могут только участники этого блога.