Про «под юбку», тьфу, «под капот» винды я еще собираюсь написать. Конкретно в ближайших планах Memory Manager (с небольшими вылазками в Cache Controller и I/O Manager). Просто потому, что мне больно видеть всякие советы по отключению свопфайла и «экспертные» мнения по поводу swappiness в Linux. :-)
А так раз постарался — написал и потом можно просто давать ссылку
А мне нравятся его посты. И, кстати, Technology evangelist: A technical or technology evangelist is a person who attempts to build a critical mass of support for a given technology in order to establish it as a technical standard in a market that is subject to network effects.[citation needed] Professional technology evangelists are often employed by firms which seek to establish their proprietary technologies as de facto standards or to participate in setting non-proprietary open standards. Non-professional technology evangelists may act out of altruism or self-interest (e.g., to gain the benefits of early adoption or the network effect).
В случае MS это подходит разве что к сильверлайту и WP7, но я не замечал у XaosCPS особой любви конкретно к нераспространенным («ну это пока» :-) ) технологиям МС.
У Соломона/Руссиновича/Ионеску поразительно доступно все расписано, но без бекраунда вчитываться все равно придется долго. И начального уровня — взять тот же драйвер тостера из WDK и поковырять. Благо сейчас не надо запускать тестовые драйвера на живой машине — можно при желании пустить одновременно с десяток виртуалок.
Если есть навыки отладки, ОЧЕНЬ рекомендую WRK — компилируете, заменяете ядро и ходите по ядру дебаггером с просмотром всех вызовов.
Кстати, мой опыт подсказывает, что для «ковыряния» нужны не столько исходники (хотя они сильно помогают), сколько мощная документация и время на то, чтоб прочитанная информация переварилась и усвоилась. И вот здесь как то внезапно оказывается, что возможностей поковыряться в винде иногда даже больше, чем в том же линуксе.
А посыл обоих постов (в особенности первого): если лезешь ковыряться — для начала разберись.
Кстати да, на всякий случай надо пояснить этот момент. Вот документация. Если ждать надо меньше тика таймера, то единственным вариантом будет крутить пустой цикл до тех, пор пока не придет время выходить. И марвеловский драйвер делает это в обработчике прерывания. Здесь нужно еще одно пояснение: после вызова обработчика прерывания это и все прерывания ниже этого оказываются замаскированы на этом процессоре. То есть на подобные «мелочи» процессор прерываться уже не будет, пока не выйдет из обработчика. Ну собственно, единожды застряв в обработчике прерывания от диска — любые последующие операции чтения/записи уже невозможны. Особенно, если прерывания «сродственны» (affinitized) этому процессору.
Ну в PowerShell кроме нативной поддержки FCL (и .Net сборок вообще), COM, WMI, WebServices и пр., умеет еще и компилировать сборки в рантайме (на C#, VB.Net, JS.Net), что означает кроме прочего P/Invoke и не просто «неплохую поддержку винапи», а ПОЛНУЮ поддержку Win32 и Native API:
Не совсем понятно, зачем в данном случае AutoIt, если есть UI Automation и <a href-http://uiautomationverify.codeplex.com/>библиотека для работы с ним из PowerShell
Visual UIA Verify может в числе прочего и запускать тесты.
Строго говоря, Comodo тоже использует «встроенный» файрвол: Comodo Firewall, равно как и Windows Firewall with Advanced Security — это просто шеллы ко встроенной Windows Filtering Platform
Ключ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\GlobalLogger
@MinimumBuffers и @MaximumBuffers. Для внесения изменения можно использовать -preTraceCmd
Проблема в том, что там по умолчанию 300 и 600 мегабайт стоит — весь лог влез бы.
Windows Search — вроде ничего страшного, если он не делает такое ПОСТОЯННО. Он не должен постоянно носиться по диску и переиндексировать все подряд.
Трейс битый (9 буферов потеряно). Причем окончания загрузки большинства сервисов похоже находились в тех потерянных буферах. Стоит попробовать увеличить размер буфера, но из xbootmgr-а этого вроде сделать нельзя — придется в реестр лезть.
Самые большие проблемы, которые здесь видно: кто то держит систему с 0 по 5 секунду и с 6 по 13 — как раз когда стартует session manager (на втором интервале ReadyBoot префетчит вовсю, но ни хитов ни даже миссов не происходит — никому кроме редибута диск не нужен). Подозреваю, что это как то связано с пиками CPU как раз в начале этих периодов. Во флаги можно добавить PROFILE (BASE+CSWITCH+PROFILE) и сделать -stackwalk PROFILE — тогда будет лучше видно, кто и чего там делает (если не терять буферы, конечно). Можно добавить еще флаг DRIVERS (BASE+CSWITCH+PROFILE+DRIVERS) и попытаться скорреллировать загрузку драйверов с этими аномалиями.
Кроме того, здесь сразу после загрузки включился SearchIndexer, стоит дать ему доиндексировать, чтоб под ногами не путался (хотя путаться он начинает примерно с 21-й секунды, так что на время инициализации не влияет).
Да, если захотите выключать функционал — порядок действий точно такой же.
1. Определяете, кто наносит наибольший ущерб производительности
2. Смотрите, что с ним делать (в данном случае решение сводится к вырезать/не вырезать)
3. Lather, rinse, repeat
Нет, святого ничего нет, но не думаю, что там есть о чем писать. Быстрый диск на самом деле даст бОльший выигрыш. Мне уже прислали логи с загрузкой эксплорера на 9-й секунде на обычной десктопной машине с 7600 rpm винтом. Забавно было бы посмотреть на это
Я думаю, написать вторую статью про вот это и наверное на этом можно закончить с xperf-ом (в смысле там непаханное поле возможностей, но во-первых их все я и сам не знаю, а во-вторых если зацикливаться на одной теме — станет невыносимо скучно)
А так раз постарался — написал и потом можно просто давать ссылку
A technical or technology evangelist is a person who attempts to build a critical mass of support for a given technology in order to establish it as a technical standard in a market that is subject to network effects.[citation needed] Professional technology evangelists are often employed by firms which seek to establish their proprietary technologies as de facto standards or to participate in setting non-proprietary open standards. Non-professional technology evangelists may act out of altruism or self-interest (e.g., to gain the benefits of early adoption or the network effect).
В случае MS это подходит разве что к сильверлайту и WP7, но я не замечал у XaosCPS особой любви конкретно к нераспространенным («ну это пока» :-) ) технологиям МС.
Если есть навыки отладки, ОЧЕНЬ рекомендую WRK — компилируете, заменяете ядро и ходите по ядру дебаггером с просмотром всех вызовов.
Без понятия что оно делает, но иногда тормозит безбожно (у него еще есть родственники в ядре) — я как раз в прошлом посте его в delayed start переносил. Надо будет присмотреться к нему повнимательнее
А посыл обоих постов (в особенности первого): если лезешь ковыряться — для начала разберись.
www.microsoft.com/events/pdc/
В Win7 стоит «из коробки» в Vista и XP прилетает обновлением. Что еще надо для счастья
Visual UIA Verify может в числе прочего и запускать тесты.
@MinimumBuffers и @MaximumBuffers. Для внесения изменения можно использовать -preTraceCmd
Проблема в том, что там по умолчанию 300 и 600 мегабайт стоит — весь лог влез бы.
Windows Search — вроде ничего страшного, если он не делает такое ПОСТОЯННО. Он не должен постоянно носиться по диску и переиндексировать все подряд.
Самые большие проблемы, которые здесь видно: кто то держит систему с 0 по 5 секунду и с 6 по 13 — как раз когда стартует session manager (на втором интервале ReadyBoot префетчит вовсю, но ни хитов ни даже миссов не происходит — никому кроме редибута диск не нужен). Подозреваю, что это как то связано с пиками CPU как раз в начале этих периодов. Во флаги можно добавить PROFILE (BASE+CSWITCH+PROFILE) и сделать -stackwalk PROFILE — тогда будет лучше видно, кто и чего там делает (если не терять буферы, конечно). Можно добавить еще флаг DRIVERS (BASE+CSWITCH+PROFILE+DRIVERS) и попытаться скорреллировать загрузку драйверов с этими аномалиями.
Кроме того, здесь сразу после загрузки включился SearchIndexer, стоит дать ему доиндексировать, чтоб под ногами не путался (хотя путаться он начинает примерно с 21-й секунды, так что на время инициализации не влияет).
1. Определяете, кто наносит наибольший ущерб производительности
2. Смотрите, что с ним делать (в данном случае решение сводится к вырезать/не вырезать)
3. Lather, rinse, repeat
Я думаю, написать вторую статью про вот это и наверное на этом можно закончить с xperf-ом (в смысле там непаханное поле возможностей, но во-первых их все я и сам не знаю, а во-вторых если зацикливаться на одной теме — станет невыносимо скучно)