Изучение утечки памяти в svchost/nsi с данными
svchost
а также nsi
в частности, на протяжении многих лет постоянно были связаны с утечками памяти, из-за поисков в Google было много хитов (но мало решений). Связанные вопросы с соответствующими ответами задавались много раз на суперпользователе в прошлом, но все, что я видел, было людьми, спрашивающими, как определить, какой процесс содержит утечку, которая не очень помогает, если я уже знаю это.
Я открываю этот вопрос, потому что проблема, кажется, сохраняется, несмотря на заявления о том, что это решение было исправлено тем или иным способом, а также сообщать о результатах моего собственного расследования, если это будет полезно, и посмотреть, как еще я смогу разобраться в проблеме.
Единственное, что можно было предположить для решения этой проблемы, - это применение KB 2950358 (извините, я не могу ссылаться из-за отсутствия репутации), но установщик просто говорит, что это обновление не применимо к этой системе.
Машина, ОС и программное обеспечение: Win7 Pro x64, 8 ГБ памяти с видео nVidia GTX 580 (драйверы от nVidia, 372.54 от 15 августа, на момент написания которой 15 дней назад). Процессы, которые почти всегда работают, включают Spotify, Chrome (в настоящее время v52.0.2743.116), Skype (в настоящее время 7.26.0.101) и несколько Cygwin. mintty
, bash
а также ssh
процессы. Internet Explorer не установлен (за исключением битов, которые нельзя удалить). Обычные надстройки для браузера, такие как flash для yt и т. Д. Ничего необычного, хотя некоторые из них интенсивно используют сетевое взаимодействие и, теоретически, могут быть замешаны, если верить подобным KB 2847346. Все обновления Windows, включая последнее необязательное обновление, были применены.
Пропустив некоторые промежуточные шаги, я расстался nsi
в свое собственное svchost
, перезагрузил, а затем зарегистрировал вывод tasklist
каждую секунду для PID nsi
процесс и svchost
которому nsi
раньше принадлежал. Результаты представлены здесь; конечно, последний в основном плоский, но nsi
растет с постоянной (если не увеличивается) скоростью.
В то же время я использовал procmon
записывать системные вызовы nsi
, но все события, кроме 6, были событиями Thread Create и Thread Exit, что не очень полезно. Все, что вызывает проблему, не вызывает nsi
делать системные вызовы самостоятельно.
Прежде чем я разделить nsi
Я сделал похожий след в течение почти четырех дней, и это svchost
Экземпляр начинался с 24 МБ и непрерывно увеличивался до примерно 2150 МБ до того, как я его остановил, причем скорость изменения, очевидно, со временем увеличивается. В прошлом я видел обидчика svchost
процесс объемом более 6 ГБ, но с procmon
бег, это был момент, когда я начал исчерпывать память. Пару раз какая-то память освобождалась, но не так сильно, как было выделено. Я могу связать этот график позже, если кто-нибудь захочет его увидеть.
Я также контролировал это с procmon
и может обеспечить разбивку событий, но они, вероятно, не очень интересны, учитывая, что это установлено nsi
в этом виноват тот факт, что ни одно из его событий не особенно интересно.
Есть ли какой-нибудь инструмент для отслеживания того, какие процессы делают запросы определенного сервиса?
Каков мой следующий шаг, учитывая, что явно исправление KB не применимо?