Nrfg что это за процесс
Перейти к содержимому

Nrfg что это за процесс

Nrfg что это за процесс

Completing the CAPTCHA proves you are a human and gives you temporary access to the web property.

What can I do to prevent this in the future?

If you are on a personal connection, like at home, you can run an anti-virus scan on your device to make sure it is not infected with malware.

If you are at an office or shared network, you can ask the network administrator to run a scan across the network looking for misconfigured or infected devices.

Another way to prevent getting this page in the future is to use Privacy Pass. You may need to download version 2.0 now from the Chrome Web Store.

Cloudflare Ray ID: 71a8bc15ddf69b55 • Your IP : 82.102.23.104 • Performance & security by Cloudflare

Зомби, которые съедают вашу память

Что бы вы там себе не думали, а зомби существуют. И они действительно едят мозги. Не человеческие, правда, а компьютерные. Я говорю сейчас о зомби-процессах и потребляемых ими ресурсах. Это будет душераздирающая история о потерянных и снова найденных 32 ГБ оперативной памяти. Возможно, лишь некоторые из вас столкнутся с точно такой же проблемой, но если вдруг это произойдёт — у вас хотя бы будет шанс понять, что происходит.

Начнём с того, что компьютеры под управлением ОС Windows склонны со временем терять память. Ну, по крайней мере, у меня, при моём способе ими пользоваться. После пары недель без перезагрузок (или, например, всего одного уикэнда за который я 300 раз пересобрал Хром) я стал замечать, что диспетчер задач начинает показывать мне очень маленькое количество свободной оперативной памяти, но в то же время в системе нет никаких процессов, которые эту самую память активно используют. В том примере выше (с 300 сборками Хрома) диспетчер задач сказал мне, что в системе занято 49.8 ГБ плюс ещё 4.4 ГБ памяти сжато — но при этом запущено всего несколько процессов, и все они в сумме даже и близко не используют столько памяти:

image

В моём компьютере 96 ГБ оперативной памяти (да, я счастливчик) и когда у меня нет вообще никаких запущенных процессов — я, знаете ли, хотел бы видеть ну хотя бы половину этой памяти свободной. Я правда рассчитываю на это. Но иногда этого достичь не удаётся и мне приходится перезагружать ОС. Ядро Windows написано качественно и надёжно (без шуток), так что память не должна бы пропадать бесследно. Но всё же она пропадает.

Первой же моей догадкой стало воспоминание о том, что один из моих коллег как-то жаловался на зомби-процессы, которые иногда остаются в ОС уже не активными, но всё же ещё не до конца удалёнными ядром. Он даже написал специальную утилиту, которая выводит список таких процессов — их имена и количество. Когда он запускал эту утилиту в своих тестах, то получал до нескольких сотен зомби-процессов на обычной Windows-машине. Я нашел его инструмент, запустил на своём компьютере и получил… 506 000 зомби-процессов. Да, 506 тысяч!

Я вспомнил, что одной из возможных причин перехода процесса в состояние «зомби» может быть то, что какой-то другой процесс держит открытым его дескриптор (handle). В моём случае большое количество зомби-процессов играло мне на руку — им было сложнее скрыться. Я просто открыл диспетчер задач и добавил на вкладку Details столбец с количеством открытых дескрипторов для каждого процесса. Затем отсортировал список по убыванию значений в этом столбце. Я сразу нашел героя данной истории — процесс CcmExec.exe (часть Microsoft System Management Server) имел 508 000 открытых дескрипторов. Это было во-первых, очень много, а во-вторых, подозрительно близко к найдненному мною выше числу в 506 000 зомби-процессов.

image

Я убил процесс CcmExec.exe и получил следующий результат:

image

Всё получилось ровно так, как я того и ожидал. Как я без иронии писал выше — ядро Windows написано очень хорошо и когда процесс уничтожается, то и все занятые им ресурсы освобождаются. Закрытие CcmExec.exe освободило 508 000 дескрипторов, что дало возможность окончательно закрыть 506 000 зомби-процессов. Количество свободной оперативной памяти мгновенно выросло на 32 ГБ. Тайна раскрыта!

Что такое зомби-процесс?

До этого момента мы ещё не выяснили, что же заставило все эти процессы зависнуть в неопределённости, а не быть удалёнными. Похоже на то, что мы имеем дело с тривиальным багом в приложении (а не в ядре ОС). Общее правило гласит, что когда вы создаёте процесс, то получаете его дескриптор и дескриптор его главного потока. Вы ОБЯЗАНЫ закрыть эти дескрипторы. Если вашей задачей было просто запустить процесс — их можно закрыть сразу же (это не убъёт запущенный процесс, а просто разорвёт связь вашего процесса с ним). Если новый процесс вам для чего-то нужен (например, вы ждёте окончания его работы или вам нужен код, который он вернёт) — то нужно воспользоваться соответствующими функциями (например, WaitForSingleObject(hProcess, INFINITE) для ожидания выхода или GetExitCodeProcess(hProcess, &exitCode) для получения кода возврата) и всё-равно закрыть дескрипторы после того, как вы получили от дочернего процесса всё, чего хотели. Аналогично следует и поступать и с дескрипторами процессов, которые вы для чего-нибудь открываете с помощью функции OpenProcess().

Если процесс, который забывает так поступать, относится к системным, то вам даже может не помочь выйти из своего аккаунта и снова залогиниться, только полная перезагрузка.

Куда же девается память?

500 000 раз по 32 КБ будет равно примерно 16 ГБ — куда же делась остальная память? Сравнение состояния памяти до и после закрытия зомби-процессов даёт ответ на этот вопрос:

image

Мы можем чётко увидеть, что

16 ГБ уходит на Process Private Memory. Также мы видит, что ещё 16 ГБ приходится на Page Table Memory. Очевидно, что каждый зомби-процесс занимает 32 КБ в таблице страниц памяти и еще 32 КБ использует для своей личной памяти. Я не знаю для чего зомби-процессу так много памяти, но, наверное, никто никогда не думал, что число таких процессов может измеряться сотнями тысяч.

Некоторые типы занятой памяти увеличились после закрытия процесса CcmExec.exe, в основном это касается Mapped File и Metafile. Я не знаю точно, почему так получилось. Одной из моих догадок является то, что ОС решила, что свободной памяти теперь достаточно и что-то себе закешировала. Это, в общем, не плохо. Мне не жаль памяти для нужд ОС, я просто не хочу, чтобы она пропадала совсем уж бесцельно.

Важное замечание: RamMap тоже открывает дескрипторы всех процессов, так что эту утилиту следует закрыть, если вы хотите добиться закрытия зомби-процессов.

Я написал твит о моей находке и исследование продолжил другой программист, который сумел воспроизвести данный баг и передать информацию о нём разработчику из Microsoft, который сказал, что это «известная проблема, которая иногда случается, когда очень много процессов запускаются и закрываются очень быстро».

Я надеюсь, что данная проблема будет скоро исправлена.

Почему у меня на компьютере возникают такие странные проблемы?

Я работаю над кодом Windows-версии Хрома и одной из моих задач является оптимизация его сборки на этой ОС, а это требует многократных запусков этой самой сборки. Каждая сборка Хрома запускает огромное множество процессов — от 28 000 до 37 000 в зависимости от выбранных настроек. При использовании нашей распределённой системы сборки (goma) эти процессы создаются и закрываются очень быстро. Мой лучший результат сборки Хрома — 200 секунд. Но столь агрессивная политика запуска процессов выявляет и проблемы в ядре Windows и её компонентах:

  • Быстрое удаление процессов ведёт к зависаниям пользовательского ввода
  • Драйвер тачпада выделяет, но не освобождает память при каждом создании процесса
  • App Verifier создаёт O(n^2) лог-файлов (и об этом стоит написать отдельный пост!)
  • Есть баг в ядре Windows, который касается буферизации файлов, и этот баг воспроизводится на всех Windows от Server 2008 R2 до Windows 10
  • Windows Defender задерживает запуск каждого процесса goma на 250 мс

Что дальше?

Если вы работаете не на компьютере, управляемом политиками компании, то процесс CmmExec.exe у вас не запущен и с конкретно данным багом вы не столкнётесь. Также он коснётся вас только если вы собираете Хром или делаете ещё что-то похожее, создавая и закрывая при этом десятки тысяч процессов в короткие промежутки времени.

CcmExec — не единственная в мире программа с багами. Я нашел много других, содержащих в себе конкретно этот же тип ошибок, приводящих к созданию зомби-процессов. И есть ещё огромное множество тех, которые я не нашел.

Как знают все опытные программисты, любая ошибка, которая не была явно исправлена или предупреждена — точно когда-то произойдёт. Просто написать в документации «Пожалуйста, закройте этот дескриптор» — не достаточно. Так что вот мой вклад в то, чтобы сделать нахождение подобного типа ошибок проще, а их исправление — реальнее. FindZombieHandles — это инструмент, основанный на NtApiDotNet и коде от @tiraniddo, который выводит список зомби-процессов и информацию о том, кто сделал их зомби. Вот пример вывода данной утилиты, запущенной на моём компьютере:

274 зомби — это ещё не так плохо. Но уже и это указывает на определённые проблемы, которые могут быть найденны и исправлены. Процесс IntelCpHeciSvc.exe в этом списке имеет самые большие проблемы — похоже на то, что он открывает (и забывает закрыть) дескриптор процесса каждый раз, когда я открываю видео в Windows Explorer.

Visual Studio забывает закрыть дескрипторы как минимум двух процессов, в одном случае это воспроизводится всегда. Просто запустите сборку проекта и подождите

15 минут пока процесс MSBuild.exe закроется. Можно также выставить опцию “set MSBUILDDISABLENODEREUSE=1” и тогда MSBuild.exe закроется сразу по окончанию сборки и потерянный дескриптор будет виден сразу. К сожалению, какой-то негодяй в Microsoft исправил эту проблему и фикс должен выйти в обновлении VS 15.6, так что поторопитесь воспроизвести её, пока это ещё работает (надеюсь, не нужно объяснять, что это была шутка и никакой он на самом деле не негодяй).

Также вы можете использовать для просмотра забытых процессов программу Process Explorer, сконфигурировав её нижнюю панель так, как это показано ниже (заметьте, что в этом случае будут показаны забытые дескрипторы как для процессов, так и для потоков):

image

Вот пару примеров найденных багов (о некоторых сообщено разработчикам, но не о всех):

  • Утечка в CcmExec.exe (описанный выше случай с 500 000 зомби) — разработчики работают над исправлением
  • Утечка в Program Compatibility Assistant Service — проблема исследуется
  • Утечка в devenv.exe + MSBuild.exe (проблема уже исправлена)
  • Утечка в devenv.exe + ServiceHub.Host.Node.x86.exe (багрепорт отправлен)
  • Утечка в IntelCpHeciSvc.exe + Video.UI.exe для каждого открытого видеофайла (Intel приняла багрепорт и переслала его в Lenovo)
  • Утечка в RuntimeBroker.exe + MicrosoftEdge и Video.UI.exe (возможно, имеет отношение к некоторым другим багам в RuntimeBroker.exe)
  • Утечка в AudioSrv + Video.UI.exe
  • Утечка в одном внутреннем инструменте Google из-за использования старой версии psutil
  • Утечка в утилитах от Lenovo: tphkload.exe теряет один дескриптор, SUService.exe теряет три
  • Утечка в Synaptic’s SynTPEnh.exe

image

Используя Process Explorer, я заметил, что NVDisplay.Container.exe открывает

5000 дескрипторов на событие \BaseNamedObjects\NvXDSyncStop-61F8EBFF-D414-46A7-90AE-98DD58E4BC99, создавая новый дескриптор каждые две минуты. Я так понимаю, они хотят быть супер-уверены в том, что могут остановить NvXDSync? Багрепорт Nvidia отправлен.

image

Corsair Link Service создаёт

15 дескрипторов в секунду, не освобождает их совсем. Багрепорт отправлен.

Adobe’s Creative Cloud теряет тысячи дескрипторов (около 6500 в день, по моим подсчётам). Багрепорт отправлен.

Удивительно, что никто до этого особо не обращал внимание на подобные баги. Эй, Microsoft, возможно, стоит собирать статистику по таким случаям и что-то предпринимать по этому поводу? Эй, Intel и Nvidia, почистите немного ваш код. Помните, я наблюдаю за вами.

А теперь вы можете взять утилиту FindZombieHandles, запустить её на вашей машине и рассказать о своих находках. Также вы можете использовать в экспериментах диспетчер задач и Process Explorer.

precomp.exe что это за процесс, ты кто такой?

Всем привет Поговорим мы о процессе precomp.exe, некоторые юзеры думают что это за процесс, не вирус ли, вот с этим всем я сегодня хочу разобраться. Попалась мне задача действительно сложная, ибо инфы о процессе precomp.exe в интернете по сути то и нет, придется мне рыться по дну интернета, вынюхивая хоть какую-то инфу об этом процессе…

Значит все таки немного инфы нарыл так бы сказать, значит процесс precomp.exe относится к играм. Этот процесс отвечает за какую-то работу с архивацией, скорее всего тут идет речь про распаковывание игры при установке ее. То есть игру тут я имею ввиду любую. Многие современные игры, особенно те которые можно скачать с торрента, то в этих играх, или еще они называются репаками, то там внутри их может быть что угодно. Внутри такого репака может быть вирусня всякая, в общем может быть что угодно, поэтому я и не советую качать с торрентов, там вирусни может быть много, это вот такое мое мнение. Сам процесс precomp.exe то может быть и не вирусный, но где гарантия, что в какой-то игре, ну которую вы скачаете, то в этой игре нет файла precomp.exe, который склеенный с вирусом?

Процесс precomp.exe может спокойно грузить процессор, тут нет ничего удивительного, он ведь работает с сжатыми данными. Но зачем вообще игру сжимают? Ну тут ответ очевиден, чтобы игра весила меньше и чтобы вы ее быстрее смогли скачать. Кстати, вот знаете какое мое мнение? Если вы уже и качаете игры с интернета и при этом при помощи торрента, то лучше чтобы этот комп, ну на котором вы качаете, то чтобы этот комп использовался только для игр. Ибо то, что на компе рано или поздно появятся вирусы, то это точно, поверьте мне. А если будете не только играть, но и на почту заходить например, то есть риск, что вирус узнает пароль от почты ну и взлом будет, короче надеюсь вам понятно что я хотел сказать..

Ага ребята, вот я еще одну инфу нашел, значит Precomp это типа идет прекомпрессор, который нужен для того чтобы сжимать файлы. Еще узнал, что вроде файлы, которые были сжаты при помощи Precomp, то они имеют расширение pcf (PreCompressedFile). Вот такие дела

Короче я все узнал, что и требовалось доказать, precomp.exe это компонент для сжатия, может быть и для распаковки. Если учесть что репаки игр делают так, чтобы они были сжаты, то нет ничего удивительного в том, что при установке игры у вас может быть процесс precomp.exe в диспетчере задач. И он не просто будет там, он еще будет грузить проц, и знаете, это тоже нормально. Любой архиватор грузит процессор при распаковывании или упаковывании

Вот нашел какую-то картинку, тут вроде что-то делается, вроде создается архив, но врать не буду, не могу понять что это за прога, но то что она имеет отношение к Precomp, то это думаю и так понятно.. Вот картинка:

Также я нашел еще подтверждение тому, что precomp относится к играм, вот один юзер устанавливал игру и у него выскочили такие ошибки:

Потом у этого юзера выскочила еще ошибка от самого процесса precomp.exe, вот она, эта ошибка:

То есть опять же, давайте немного сделаем выводов так бы сказать. Процесс precomp.exe может появляться при установке какой-то большой игры, то что он грузит процессор, тут ничего удивительного нет, ибо процесс этот распаковывает данные. Обычно такой процесс есть в так называемых репаках. Сам процесс неопасный, но опасность может быть в том, что файл precomp.exe склеен с вирусом. Также в самой игре может быть спокойно вирус, если она скачана мягко говоря с не очень безопасного сайта, ну вы поняли

Еще одна ошибка, которая связанная с precomp:

Как видите, тут так и пишется, что ошибка возникла именно при распаковке. То есть precomp относится именно к распаковке данных. Вот еще одна ошибка, но тут уже меньше понятно что к чему:

А вот еще кое что интересное, ну или не очень интересное.. Короче смотрите, вот какой-то файл, в какой-то папке, ну это неважно, но вот у файла идет расширение precomp, а напротив (это типа колонка Описание) то там сказано, что это PRECOMP File:

А вот свойства этого файла:

Я стрелочкой указал на кое что, я думаю что вы понимаете что это? Это игра Симс и тут снова подтверждение тому, что precomp, то эта штука точно относится к играм!

Вот еще одна ошибка, тут говорится типа что Failed to start precomp.exe, вот эта ошибка:

Еще может быть такая ошибка:

Что делать чтобы не было такой ошибки? А я скажу что нужно делать, нужно качать игры со Стима или же покупать в магазине игры, а не качать какие-то левые репаки с вирусами. Это я прочитал на одном форуме и в принципе я с этим согласен ребята

Вот снимок сообщения, где юзер, после того как скачал торрент с игрой, потом запустил установщик игры и вот после этого появилась такая ошибка как Прекращена работа программы precomp.exe:

Еще ребята может быть такая ошибка:

Как видите, в этом деле вроде бы библиотека ISDone.dll тоже замешана, ну капец капецкович!

Вот человек хочет установить игру, а тут такая ошибка:

В общем ребята, я думаю что вам тут и так все понятно, что эта ошибка precomp это дело такое, ну у многих такая ерунда выскакивает. Какого-то универсального способа, чтобы решить эту проблему, ну то есть ошибку, то вроде такого способа нет.

У меня есть некие мысли и я напишу о них вот в виде пунктов, ну типа список, короче вот что я думаю..

  1. Как мне кажется, что ошибка precomp это все из-за того, что репак игры был как-то неправильно запилен, ну то есть создали его как-то с косяками, вот и вылазит такая ошибка.
  2. Попробуйте скачать другой репак, хотя на самом деле я вообще не советую использовать репаки, лучше качайте образы дисков, ну там форматы ISO, MDF и другие;
  3. Идеально будет это вообще не морочить себе голову, а купить игру в Стиме, скачать ее оттуда и нормально пользоваться без головняка. Я вообще не понимаю почему нельзя просто купить игру, если вы в нее любите поиграть, ну так отблагодарите создателя ёкарный бабай!
  4. На всякий случай вам сообщаю, что у вас могут быть вирусы из-за того что вы качаете и ставите репаки игр, и я не шучу. Думаете что у вас есть вирус? Думаете все таки нет? Ну ребята, это проблемы ваши! Но все таки я вам дам несколько утилит, которые смогут очистить ваш комп от вирусни, это золотая тройка игроков: AdwCleaner, HitmanPro, Dr.Web CureIt!. Вот эти три утилиты, это золотой набор. Вряд ли у вас будет желание проверить ими всеми комп, но лучше это таки сделать, и я вам честное слово говорю, что если думаете что у вас есть вирусы, то проверка этими тремя утилитами очистит ваш комп на 99% от вирусов. Это лучшие утилиты!
  5. Лично я не качаю никакие репаки шемаки потому что в них внутри куча всего непонятного, левые проги могут еще установиться при установке игры, ну а вирусы, то я уже писал, они в репаках могут быть спокойно. Или вы думаете что создатели репаков вообще не думают о выгоде? Короче я все сказал.

Вот и все ребята на этом, надеюсь что вам тут все было понятно, что вы тут что-то черпнули для себя полезного, ну а может и нет, не знаю я.. Но надеюсь, что черпнули.. В общем удачи вам ребята, и желаю чтобы в вашем компе не было вирусов и не было ошибок

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *