воскресенье, 25 октября 2015
Приветствую вас.
Помогите понять, как избавиться от периодических тормозов потока kmixer.sys в играх на ноуте с Windows XP sp3 32bit.
читать дальше
Симптомы таковы - вскорости после запуска игры загрузка процессора подскакивает до 98-100% и FPS игры с периодичностью в 2-3 секунды падает до 3-4 с нормального значения в 15-30. Я посмотрел с помощью Process Explorer и выяснил, что в этот момент сильно загружается процесс system. Дальнейшее исследование выявило тред kmixer.sys. Вот скриншот из Process explorer.

Драйвера стоят родные, с сайта производителя.
Попытка исправить по решению в этой теме показала, что этот патч уже включен в SP3.
На сайте микрософта лежит вопрос о похожей проблеме трёхлетней давности без ответа.
Проверка системы программами DrWeb CureIt, Piriform CCleaner и RegRun Reanimator не помогла выявить и решить проблему (вирусов и руткитов не нашлось, мелкие проблемы были исправлены, но не имели отношения к тормозам).
Подарю 2000 рублей (наличными или переводом) за успешное решение этой проблемы для одной конкретной игры Spelunky (так, чтобы можно было постоянно играть с таким FPS, какой у неё первые 15-30 секунд игры, а не с неиграбельными тормозами). Естественно, игра должна играться, звук и картинка должны присутствовать. Если нужно провести какие-либо тесты или предоставить какие-либо данные - пишите в комментарии, я буду следить.
Спасибо за внимание.
@темы:
Пользовательские настройки Windows,
Ноутбуки,
Глюки Windows,
Установка Windows и драйверов
Так же для начала сделайте чистку реестра и оптимизацию программой wise care.
Обновите драйвера с drp.su
ну и самый простой вариант заменить файл на другой, скажем от win2k и посмотреть поведение компа.
по описанию у него родная система виста.
хп какой сборки ставили, чистый образ микрософт или сборку?
систему нужно проверить - sfc /scannow , это покажет ошибки системных файлов.
проверить диск на ошибки chkdsk c: /f /r
вобщем с первичной диагностикой на пол дня развлечений.
можно развернуть образ на ссд и посмотреть, связанна ли такая загрузка со скоростью диска, может не успевает обрабатывать звук в игре.
XP ставил чистый образ, потом все обновления и драйвера с сайта dell.
Диск уже SSD, kingston, не вижу смысла проверять диск, так как куплен полгода назад.
вот результаты sfc
C:\Documents and Settings>sfc /scannow
Windows File Protection could not initiate a scan of protected system files.
The specific error code is 0x000004dd [The operation being requested was not performed because the user has not logged on to the network.
The specified service does not exist.
].
ребутнуть комп и попробовать снова.
We highly DO NOT recommend Wise Care 365 or any other all-in-one snake oil system speeder-upper. Miracles may really happen — but not on Windows.
имхо это объясняет всю статью сразу.
Но дело Ваше.
Я бы поставил чистую систему, драйвера взял с дрп, тк там они обновлённые и проверил так.
естественно с официального образа, не сборку.
Но раз у вас развлечение с уже установленной и рабочей системой, то варианты могут быть разные, их и нужно пробовать.
Система как раз чистая (имхо), а драйверов более обновлённых в природе не существует (опять же, имхо).
Да, можно попробовать воткнуть старый винт и поставить на него систему с нуля, и потом попробовать вариант с обновлением драйверов с дрп. А ещё варианты есть?
www.virustotal.com/ru/file/f49a275e091208040b86...
На дрп скачивается полный пакет (порядка 8 гиг) попробуйте его.
Эщё вариант - это взять с серверной винды файл, я уже писал про это.
Миксер это драйвер преобразования звука, попробуйте запустить игру без звука, будет ли нагрузка в этом файле?
Насколько я понимаю, после xp этот драйвер не использовался в вин системах, его заменили, но в хп только он, так что реестр, варианты файла, вариант упрощения сложности звука, если игра позволяет,
других вариантов не вижу на вскидку.
Можно попробовать снять логи
1) программой Process Monitor, предварительно настроив фильтр только на Spelunky.exe.
2) windbg с расширением logexts, настроив его на модуль fmodex.dll, но в последнем случае требуется опыт работы с отладчиками и тонкая настройка, чтобы дебаг не сильно тормозил сам процесс. В очередь интересно, что за функции вызываются из fmodex.dll, как часто, вызываются ли они, когда лагов нет, и сам стек вызовов (команда kn). Вот ещё какой-то метод трассировки, но я никогда им не пользовался: flylib.com/books/en/3.141.1.168/1/
Trotil, о, это интересное направление, но есть одна проблема: мне не очень интересно, что тормозит при отсутствии звука в fmodex.dll потому что я хочу играть со звуком. Не уверен, что смогу отлаживать kmixer.sys этим способом сам, впрочем.
Жаль, что не получится поставить чистую систему и тестировать тормоза по мере наката обновлений винды. Потому что стим требует SP3. Но пока что лидирует именно мысль переставить с нуля систему снова и посмотреть, будет ли тормозить.
Поставил игру Hydorah, там тот же fmodex.dll и проч, но она при этом не тормозит. Похоже, что проблема скорее не в системе, а в игре... ((
Есть мысль, что проблема может быть в формате звука в игре, потом попробую распаковать звуки в wav, если смогу их извлечь.
сделать лог за 15-20 секунд, попутно отмечая на листочке временные периоды тормозов по точным часам
затем по временным меткам смотреть, чем отличается кусок логов в моменты тормозов и без оных.
Маловероятно, что будет что-то интересное в твоём случае, но вдруг будет? Это самый лёгкий способ диагностики.
> мне не очень интересно, что тормозит при отсутствии звука в fmodex.dll потому что я хочу играть со звуком. Не уверен, что смогу отлаживать kmixer.sys
проблема НЕ в fmodex.dll и НЕ в драйвере kmixer.sys, а проблема в отдельном потоке Spelunky.exe, который по непонятным причинам временами активизируется и часто вызывает функции fmodex.dll или аудиофункции (которые, в свою очередь, активизируют системный драйвер kmixer.sys)
Остаётся надеяться, что природа этих тормозов одинакова.
Как отлаживать частые вызовы драйвера? Честно - не знаю. Несмотря на то, что мне часто приходится отлаживать проги без исходных кодов по рабочей необходимости (у нас бывает переезды на новое железо, на новые ОС, и старые программы отказываются работать), я посмотрел инфу по драйверам и WDM и понял, что там сам чёрт ногу сломит... Крайне специфическая область.
А если ты попробуешь отладить процесс pid=4 (System), тебе будет оказано в доступе. Не уверен, что это легко будет сделать.
А вот отладить отдельный поток Spelunky.exe - более посильная задача.
И даже более-менее понятно, что на первых порах ловить.
Ещё можно понажимать refresh проблемного потока в моменты тормозов и без оных (перед этим кнопку stack из скриншота), трассировка будет меняться, м.б. это даст какие-то зацепки.