GetQueuedCompletionStatus вызывает всплески ЦП в нестабильных сценариях? - PullRequest
0 голосов
/ 04 мая 2018

enter image description here

Первый всплеск в некотором роде мой собственный код, но второй выделенный не является и, по-видимому, происходит от "KERNELBASE" (KERNELBASE!GetQueuedCompletionStatus) или libcef.dll (Chromium используется с CEFSharp).

Как видите, оно достигло 100% и осталось 100%. Так будет еще 5-10 секунд. Вы можете сказать, что это НАСТОЯЩЕЕ 100% с тем фактом, что visual-studio не смогла продолжить свои процедуры синхронизации, и из-за этого это выглядит как скачок в 1 мс.

Итак, для того, чтобы это произошло, все, что мне нужно сделать, это запустить определенную функцию в моем приложении (ее цикл async / await) и, если я должен был приостановить ее (с использованием семафорлиса) перед всплеском случается, это все еще будет всплеск По сути, это НЕ мой код. Спайк случается в одно и то же время каждый раз, когда я запускаю этот цикл асинхронного ожидания. Примерно через 11-12 секунд после того, как это началось, это происходит.

Сначала я предположил, что это было вызвано использованием CEFSharp C # -> JS, но это маловероятно, так как для теста я полностью удалил весь свой код, используя его полностью.

После исследования у некоторых людей была похожая проблема из-за функций энергосбережения Intel, которые обычно встречаются в Intel Pentiums с 2010 года. Но я использую intel i7-7700k, так что это маловероятно.

Странно, но это происходит только тогда, когда я использую свой прокси-вариант кода. Если я делаю код без прокси, скачок не происходит. То есть это несколько сузилось, но я до сих пор не могу понять, почему это происходит.

Буду очень признателен за любые идеи по отладке. Из-за природы этого я буквально не могу предоставить какой-либо код, поскольку он может встречаться где угодно в моих 300+ строках кода.

После того, как @HansPassant сказал мне попробовать отключить мой Антивирус, странно, это сработало (несколько). enter image description here

Это может выглядеть, как правило, БОЛЬШЕ использования процессора, но это потому, что я снова включил весь код C # -> JS Communication. Но 2 шипа, как начальный, так и основной, оба остались «шипованными» на СКОРО. Первый, например, idk полсекунды, второй примерно на 1-2 секунды.

Так что это очень хорошо помогло, но, как вы можете видеть, CEFSharp все еще делает довольно много вещей по какой-то причине, вызывающих использование процессора.

...