Ужасные тормоза в время компиляции в Visual Studio?
Добрый день!
В последнее время (возможно после каких-то апдейтов) Visual Studio стала очень сильно нагружать компьютер во время компиляции. Очень сильно — это «заикание» музыки на Core i7, с учетом того, что cl.exe (компилятор С++) выполняется с «низким» приоритетом (базовый приоритет приложения можно настроить в реестре) это просто нонсенс. Через некоторое время попыток осознать, что происходит с компьютером я заметил, что во время компиляции время ядра («Kernel Time») в диспетчере задач достигает 90+% от общего времени загрузки CPU (что, вероятно, и приводит к глюкам). Анализ стека показывает, что это время тратится на синхронизацию (процесс почти постоянно висит внутри «ntoskrnl.exe!KeAcquireSpinLockAtDpcLevel+0x682»). Лечатся эти симптомы перезагрузкой компьютера — после этого некоторое время все хорошо (студия запускается, компилирует, процессор нагружается в нормальном режиме, т.е. проводя в ядре 10-15% времени).
Хотелось бы узнать, есть ли такая проблема еще у кого-то и чего с ней делать.
Переустанавливать студию/винду просьба не предлагать.
Студия 2010, вчера у меня еще машина упала с синим экраном, кажется из-за daemon tools, утром уточню (посмотрю дамп, если он есть), возможно найден «виновник торжества», хотя раньше я за ним такого не замечал… Да и синий экран первый за полгода, а тормозам уже с неделю.
Может, что-то с драйверами или системными службами? простой процесс-числогрыз вряд ли повесит ядро. Также, проверьте, достаточно ли памяти и не лезет ли компьютер в своп. Также, попробуйте procmon, посмотрите что в системе происходит. Также, можно попробовать программу API Monitor, показывающую системные вызовы. Procmonб process explorer и API monitor рекомендую, если есть желание поразбираться.
Чтобы музыка заикалась под Windows — компьютер очень сильно надо замучать, такого практически никогда не бывает.
С памятью свопом и т.п. все хорошо. Проблема именно в том, что несмотря на низкий приоритет компиляции, компилятор умудряется загрузить систему (за счет непонятного глюка, который приводит к 90%-у времени препровождения компилятора в ядре). За идею с procmon спасибо, как-то я про него забыл совсем.
Не знаю как с VS 2010, а 11 beta вообще комп кладет на лопатки, я так понял какой-то процесс переходит на приоритет real-time и грузит проц на 100%, комп вешается на мертво, ориентировочно, что это делает Intellisence, ибо происходит временами перед появлением подсказки. Разбираться особо не стал, а удалил и вернулся на VS2010. А VS2010 вроде работает отлично.
Однажды сталкивался с подобной проблемой. После долгих гуглений нашел совет — удалить все брекпоинты через Debug -> Delete All BreakPoints. Мне это помогло, возможно решит и вашу проблему.
Ну это точно НЕ САМА Visual Studio. Предположительно какой то сильно умный фильтр/минифильтр (возможно антивирус: типа ему нужен процессор чтобы проверить сигна). Попробуйте собрать профайл трейс со стеками и посмотреть кто эти самые спинлоки захватывает.