image

Здравствуйте, уважаемые читатели! Вот я и добрался до Хабра и хочу поведать здесь историю своего проекта. Многие аспекты собственного опыта и работы приходится описывать довольно общими терминами, чтобы не задеть коммерческую тайну тех организаций, о которых идёт речь.

Суть данного рассказа в том, чтобы поделиться найденным методом решения проблемы производительности компьютеров на Windows и рассказать про подход, который позволил сделать данное решение полностью универсальным и индивидуальным для каждого пользователя. На написание кода и подбор наиболее эффективных механизмов потребовалось около 2х лет ежедневной работы, а также консультации и помощь от большого количества моих товарищей из разных IT областей, за что им огромное спасибо.

Итак, данная история началась в 2013ом году, в то время я работал в одной крупной международной организации производящей порошки и шампуни. Должность у меня была сисадминская, но, как это часто бывает, по сути я был «тыжпрограммистом». Суть работы сводилась к поддержанию некоторых систем СЭД, написанию различных макросов на VBA, утилиток для автоматизации или интеграций разных простеньких систем и т.п.

И как раз в то же время я решал одну из наболевших проблем организации, а именно, неудовлетворительную работу различного ПО на новых ноутбуках многих сотрудников. По сути, мне пришлось столкнуться с проблемой, которая возникает у многих сисадминов крупных компаний — на компьютерах персонала, кроме любимых ими MS Office, SAP, 1С и т.п., присутствовал не менее любимый всеми IT специалистами «mcafee», «punto switcher», «mail спутник» и что только не. Тут стоит уточнить, что данная компания тогда продвигала либеральное отношение к компьютерам сотрудников, и, по сути, зарождала у себя BYOD.

Так как жалобы на производительность поступали в т.ч. и мне, я стал искать приложения для настройки производительности на подобии Process Lasso. Мой выбор тогда пал на «Bill2`s Process Manager». На тот момент я нашёл много альтернатив, но все они имели жутко перегруженный интерфейс и на собственную работу отъедали больше ресурсов, чем можно было высвободить оптимизацией.

image

Найденный на тот момент «Bill2`s Process Manager» имел массу преимуществ перед системными средствами, т.к. был довольно простым в управлении и настройке. По сути, он позволял делать то же самое, что умеет диспетчер задач, а именно, задавать базовый приоритет и маску ядер для приложений, но, в отличии от диспетчера, давал возможность сохранить эти параметры после перезагрузки и различал приложения которые отображаются в окнах на рабочем столе или работают в фоне.

Благодаря этому приложению мне удалось решить одну из самых насущных проблем, объяснить компьютеру с какими приложениями я работаю сейчас, и что для меня важнее — EXCEL или фоновая установка обновлений.

Но, несмотря на то, что для меня это приложение решило основную проблему, оно имело массу недостатков:

  1. Отсутствие преемственности конфига, нельзя было просто скопировать приложение с одного компа на другой с аналогичной конфигурацией, нужно было настраивать заново. Частично эта проблема решалась запаковкой настроенного приложения в Portable экзешник. (Может как-то можно было вытащить параметры из реестра, но на тот момент я не разобрался).

  2. Отсутсвие управления RAM, а именно сжатием оперативной памяти. У многих твикеров есть так называемая «дефрагментация памяти», что по сути является чушью, т.к. дефрагментировать оперативку совершенно бессмысленно с точки зрения производительности. Мне нужно было чистить данные, которые висят в оперативке и не падают в SWAP, чтобы при резкой нагрузке на RAM она уже была свободна и ОС не пыталась угадать, что тебе сейчас в RAM нужно, а что нет. К слову, через год эта фишка штатно появилась в Windows 10, но там это архивирование внутри оперативной памяти, что тоже по сути не совсем решает проблему.

  3. Отсутствие управления приоритетами ввода-вывода на жёсткий диск (или SSD). Штатно Windows имеет эту функцию ещё с висты, но активно использоваться она начала только в Win10.

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

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

По сути, изучая архитектуру ОС Windows я постоянно находил множество отличных механизмов, которые позволяют выстроить производительность в системе идеально при условии одного «НО». НО, если программисты, которые пишут своё ПО будут сообщать операционной системе что их ПО делает, для чего оно предназначено (игры, фильмы и т.п.) и с каким приоритетом оно должно обращаться к ЦП/RAM/HDD.

image

В жизни же, получается, что только малая часть ПО пишется с учётом программной архитектуры Windows, большинство производителей, в т.ч. очень серьёзных и крупных, пишут ПО без указания этих параметров и ОС использует всё по умолчанию.

И это не говоря про службы, которые совершенно беспардонно отъедают любые доступные ресурсы как только поступает эвент к действию (типа скачивания и установки обновлений). Желающие проверить ситуацию на своём ПК могут открыть диспетчер задач и отобразить столбец «базовый приоритет» во вкладке с процессами.

Немного данную ситуацию исправляет MMCSS, но он слишком мягко влияет на процессы, почти не затрагивая их фактическую производительность.

image

Самая неприятная вещь в многозадачности Windows, которая меня постоянно преследовала, было прослушивание музыки во время ресурсоёмких операций. Т.к. я во время работы слушал музыку через Хром и запускал расчёты крупных таблиц в Excel, звук имел особенность подвиснуть именно на момент полной загрузки ЦП или постоянно похрипывать при любом скачке этой нагрузки. Данная ситуация почти полностью решилась использованием «Bill2`s Process Manager», но его нужно было вручную настроить на Хром, чтобы тот не кряхтел и получалось, что хром всё время в повышенном приоритете, даже когда музыка не нужна, что уже было не гуд.

Тут же стоит уточнить, что компьютеры и тогда использовались довольно мощные по меркам ноутбуков. На тот момент это был Core i5 2430m / 8GB Ram / 256GB SSD.

При этом, зарождавшийся тогда в компании BYOD предполагал, что сотрудники со своими рабочими ноутбуками могут работать повсюду, в т.ч. из дома и, при этом, использовать рабочий ПК как домашний для просмотра фильмов игр и т.п.

image

Все эти факторы в итоге натолкнули меня на мысль о написании собственного приложения, которое будет вбирать в себя всё лучшее от имеющихся альтернатив и устранит их недостатки, при этом будет не просто интерфейсом для настройки как диспетчер задач, а полностью автоматической системой для адаптации производительности под выполняемую задачу. По сути, я собирался создать идеальную структуру для BYOD на своём ПК, в которой я мог бы и поработать без понижения производительности процессами Steam, iTunes или т.п. и поиграть, посмотреть фильмы без влияния корпоративного софта, антивирусов и т.п.

Для решения данной задачи мне понадобилось привлечь нескольких своих друзей, которые так же работали в IT. Изначальная мысль была в том, чтобы сделать приложение для нашего собственного удобства и расширить собственные познания по работе ОС и различных приложений.

image

Дело было за малым, сначала мы написали простенькую альтернативу «Bill2`s Process Manager», но без интерфейсов настройки, чтобы приложение работало с преднастроенным конфигом. Основной фишкой было определение того, какие окна развёрнуты, какие процессы работают в фоне и какое приложение в фокусе. Так же сразу добавили опцию назначения приоритета не только процессу, но и всем процессам из определённой папки. Написать данное приложение было довольно просто и благодаря имеющемуся опыту сразу же получилось недопустить утечек памяти, утечки хэндлеров, вылетов и прочих багов т.к. приложение должно было работать в фоне длительное время без перезагрузок. Чтобы приложение было лёгким и работало эффективно, мы использовали только стандартные функции ОС и WinAPI. В самом начале мы обходились даже без интерфейса.

image

Следующим этапом было написать локальный алгоритм обучения, который по входным параметрам определял бы назначение приложения. За основу была взята математическая модель нейросети с нейронами на основе пороговой передаточной функции, но на тот момент не учитывались весовые коэффициенты, которые мы добавили позже. Эта нейросеть сначала училась только на базовых параметрах времени работы с приложением, его имени, правилом в конфигурации и расположением на жёстком диске (например, если много приложений постоянно используются и не работают в фоне, расположены в одной корневой папке типа «C:/Games/», то скорее всего все последующие приложения запускаемые из этой папки будут использоваться активно и понижать их приоритет в фоне не нужно).

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

Тут стоит уточнить, что в отличии от классических диспетчеров задач, мы решили не управлять приоритетами, ядрами, оперативкой и вводом-выводом по отдельности, а объединили эти параметры в правила, которые комбинировали в разной пропорции. Например, для заглавного приложения правило = FOREGROUND (доступны все ядра, приоритет выше среднего, приоритет ввода-вывода высокий, оперативку в SWAP не сбрасываем).

image

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

Было добавлено определение служб, т.к. одинаково называющиеся процессы служб svchost.exe выполняют совершенно разные задачи.

Самым сложным, пожалуй, было научить приложение различать одинаковые процессы по разному назначению. Например, многие браузеры запускают для каждой отдельной вкладки отдельный процесс (Chrome, Firefox, Yandex, Opera и т.п.), а звук и видео воспроизводят хост процессы, следовательно из 20ти процессов хрома, когда он не в фокусе, нужно повысить те процессы, которые воспроизводят звук. Это же касается и любых других процессов, которые могут работать в фоне.

image

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

Таким образом приложение научилось распределять нагрузку по ключевым узлам компьютера в зависимости от того, с чем в данный момент работает пользователь. Более того, нагрузка распределяется индивидуально для каждого ПК в зависимости от сценария использования какого-либо приложения, т.е. используется ли оно в окне, воспроизводит ли оно видео/звук/3d, как много пользователь обращается к данному приложению и в какой папке данное приложение расположено.

Приложение получилось простым и универсальным, установка происходит в пару кликов и для работы не требуется никаких настроек, всё адаптируется автоматически.

image

Вся данная логика не могла бы существовать без тесной интеграции с системой, поэтому для реализации всех механизмов пришлось задействовать по максимуму функции Windows API. Это позволило при минимальных затратах расчётных мощностей достучаться до глубоких функций ядра и сохранить максимальную совместимость с любым ПК на x86-64 процессоре.

Так же, важно было учитывать тип компьютера с которым работает пользователь. Например, при работе от аккумулятора используются несколько иные алгоритмы работы с ядрами ЦП, чтобы уменьшить нагрузку и сэкономить заряд. Были добавлены опции управления питанием, чтобы можно было не выключать ноутбук или планшет, а, погасив экран, продолжать слушать музыку или выполнять скачивание/копирование/архивирование файлов с энергопотреблением около спящего режима.

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

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

image

Со временем к работе над данным проектом присоединились другие мои товарищи, которые помогали заниматься дизайном, сайтом, группой ВК и т.п. вопросами.

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

Даже в профессиональной сфере моих коллег, многие до конца не понимают тонкости работы ЦП, многопоточности, многозадачности и многоядерности. Информацию о некоторых системных функциях Windows приходилось находить в самых отдалённых частях интернета. Самым сложным, пожалуй, было найти работающий(!) способ установки высокого приоритета ввода-вывода сторонним приложениям.

Описанный механизм не является сферическим алгоритмом в вакууме и успешно работает на реальных машинах. В случаях где реально используется многозадачность — прибавка производительности может составлять до 50%.

image

Финальным штрихом для работы над приложением стало подписание сертификатом «code signing» для ОС Windows.

Большое спасибо всем, кто осилил данный текст до конца.

P.S. Прошу прощения за некоторую сумбурность, старался уложить только самую главную инфу, чтобы не сильно разрастался текст.

Мы распространяем приложение по схеме Freemium, чтобы любой пользователь мог воспользоваться самыми основными функциями, но нам будет очень приятно, если сообщество Хабра нас поддержит, чтобы наш проект смог развиваться далее.

У нас есть ещё множество идей по увеличению функциональности и производительности нашего приложения, чтобы сделать его ещё лучше и эффективнее.

Искренне надеюсь, что наши усилия помогут облегчить работу с компьютером многим пользователям, которые не обладают специальными навыками для настройки своего ПК, а прожжёным спецам позволят избавиться от постоянного выбора между скоростью и функциональностью.

Я буду рад рассказать более подробно про различные аспекты работы приложения отдельно, если данная статья вызовет интерес.
Поделиться с друзьями
-->

Комментарии (75)


  1. pwrlnd
    22.01.2017 06:48

    Считаю, что на современных двух/четырехъядерных процессорах (да ещё и с HT) проблема неактуальна. Забыл, когда в последний раз наблюдал описанные вами проблемы (предыдущий ноутбук был как раз с процессором 2430m).


    1. RollNoir
      22.01.2017 10:53

      Смотря про какие современные процессоры Вы говорите. Сейчас во многих ультрабуках и трансформерах стоят процессоры с индексом U или вообще Core M, у которых очень низкие пределы тактовых частот. Да и не стоит забывать про Intel Atom, в которых так же производительность значительно ниже чем у 2430m к примеру.


    1. DrZlodberg
      22.01.2017 12:45

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


    1. vorphalack
      22.01.2017 13:33

      i5-2400, 16G оперативки. десктоп. если я запускаю экспорт фото в Capture One, звук начинает достаточно мерзко икать пока я или фубару приоритет не задеру — или саму капчу не прижму. при том что обе с одинаковым приоритетом.

      возможно на SSD такой проблемы не будет — но ~500ки мне пока что дороговаты, а меньший объем бесполезен.


  1. Quiensabe
    22.01.2017 06:56
    +2

    Позабавило обещание на сайте оказывать «консультации по любым IT вопросам» за 500р. в месяц. Я подумаю над этим :)

    А по сути — не по статье, не по сайту, не понятно насколько наглядны те изменения которые производит ваше приложение? Т.е. могу ли я не полагаться на нейросеть, а вручную задать, что вот этому приложению отдать все, что оно потребует, а вот эти обращения к диску — означают, что вот эта пакость опять начала обновляться и ее можно заблокировать навечно…

    И если ваш ответ «нет», то скажите, разве встретив в 2013 году приложение которое обещает решить ваши проблемы, но только его авторы знают как — вы бы его поставили на свой компьютер? Или предпочли бы бы все равно пилить свой велосипед, в котором по крайней мере понимаете, что происходит и зачем?

    В середине статьи, уже почти решил опробовать ваше приложение. Но вот «использование нейросети» — как то ничуть не плюс (для меня). Вероятно я просто не из вашей ЦА. В любом случае — удачи!


    1. RollNoir
      22.01.2017 10:58

      Приложение имеет вполне обширные настройки, но доступны они только при покупке WPS PRO.
      Так же на сайте у нас есть подробное описание функций по PLAY и PRO:
      _http://winperst.ru/wps_play_details
      _http://winperst.ru/wps_pro_details

      Кроме этого, есть ещё официальная группа в ВК, где можно задать вопросы по приложению или оставить отзыв.


  1. p00h
    22.01.2017 09:31

    А ссылки где? Я вроде предельно внимательно читал


    1. RollNoir
      22.01.2017 11:00

      Вот ссылка на офф сайт: _http://winperst.ru/


  1. AlterMax
    22.01.2017 11:01
    +2

    — Ты слышал про операционную систему «Друг»?
    — Нет, не доводилось.
    — Ее придумал и написал Дао, — торжественно произносит Кис. — Это единственная в мире операционная система с искусственным интеллектом. Она способна самообучаться, совершенствоваться, развиваться.

    навеяло…

    ИМХО в целом, все эти «оптимизаторы- улучшатели» приносят больше проблем, чем решают


    1. RollNoir
      22.01.2017 11:14

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


      1. bopoh13
        23.01.2017 12:24

        Вы слишком много даёте свобод своим родственникам. ПК — это инструмент. Если им в и-нете посидеть, то и заморачиваться с такой железкой смысла нет (да и для игрушек есть телефоны и планшеты).


        1. RollNoir
          23.01.2017 12:39

          Для детей, вполне вероятно, планшета и телефона хватит, но взрослые люди, как правило, используют компьютер для серьёзных задач. В конечном счёте, каждый сам выбирает решение для себя в зависимости от use cases. Поэтому, Вы не можете утверждать, что всем родственникам нужно раздать планшеты и телефоны и выкинуть ПК.


  1. vadimpl
    22.01.2017 11:01

    Побуду подопытным кроликом. Ночью поставил на несколько машин.
    Могу сказать сразу, что с рекламой вам надо что-то делать (хотя лучше так оставьте). В том смысле, что обходится её показ ну просто в полшага — Касперский сам услужливо предлагает её запинать, даже думать не надо.


    1. RollNoir
      22.01.2017 11:05

      Согласен, рекламу обойти не сложно, но просто файл удалить тоже не получится.
      Кроме того, реклама весьма ненавязчива, однако, если хочется пользоваться без рекламы, рекомендую купить лицензию и поддержать отечественного производителя ;)


      1. vadimpl
        22.01.2017 11:30

        А теперь побуду скупердяем.
        Допустим, софт «для дома, для семьи» оказался весьма неплох. Но 500р/комп при наличии 5-ти штук дома, не считая родственников? Не вижу строчки «оптом...» ))


        1. RollNoir
          22.01.2017 11:40

          Всё относительно, Вы попробуйте посчитать относительно любого апгрейда этих компьютеров. Допустим, Вам нужно добавить оперативки в эти 5 компов. Вы же не сможете купить одну планку на всех? Оперативка, как минимальный апгрейд, выйдет не меньше 1000р, да и 5 штук это ещё не опт)


          1. vadimpl
            22.01.2017 12:03

            Вот именно, всё относительно. Продажа железа и софта — две большие разницы (неужели это неочевидно?). Очень часто вижу скидку за софт уже от 2-х лицензий, не говоря уже про 5-ть. Тот же упомянутый Касперский.
            Про «зачем мне эта приблуда?» Сформулирую иначе сказанное другими. Как мне понять, что оно реально помогает? По собственным ощущениям? Несерьёзно. Прикиньте сами, на что должны реагировать потенциальные покупатели. Одна из идей на поверхности — быстрый наглядный тест без и с софтом (правда, тут в полный рост вопрос доверия к тесту).


            1. RollNoir
              22.01.2017 12:09

              Тест, о котором Вы говорите есть на главной странице нашего сайта:
              https://www.youtube.com/watch?v=1z-M6rGyIQc

              Полная версия без монтажа:
              https://www.youtube.com/watch?v=qI40Gz9NrZo


              1. vadimpl
                22.01.2017 12:39

                Как мне понять, что оно реально помогает на моём компе, а не как оно классно работает у кого-то там — вот в чём был вопрос.
                Бенчмарки… ну это же синтетика; да ещё на каком-то видео. В идеале хотелось бы увидеть как скрипт проделывает одну последовательность действий с каким-то моим (даже не надо уникальности, обычные браузеры, плееры и т.п., но именно те, что на моём компе) набором софта до и после. Да, сложновато, геморроя вам много. Зато — эффект. Побочный эффект — сможете интегральный результат собрать.
                Подавляющее большинство дом. юзеров не будут заморачиваться собственными тестами. Админы и люди к ним приближённые — ну вы видели реакцию в комментах ))
                Даже очень хорошее ПО для продажи нуждается в обёртке.


                1. Crankoman
                  22.01.2017 13:37

                  Согласен. Посмотрите как сделано например в SwiftKey Keyboard. Мы сэкономили вам столько то секунд, Вт, нервных клеток. Даже если эти показатели будут, ну скажем, «виртуальными»…


                1. perfect_genius
                  22.01.2017 17:48

                  Если улучшения вам не видны, может проблем у вас и не было?


  1. MAXH0
    22.01.2017 11:09
    -1

    Страннейший приступ Windows красноглазия. Я понимаю что либеральное отношение руководства к юзерам еще и не до такого доведет, но Win как бы предполагает подход жри пользуйся тем что дают. Подход автора, безусловно, занимательный и я думаю стоит прокрасноглазить его в системах созданных для красноглазия типа Gentoo Linux…


  1. dartraiden
    22.01.2017 13:23

    В следующем крупном обновлении Windows 10, кстати, обещают нечто подобное, но только для игр. То есть, можно будет сказать Windows «это — игра, пожалуйста, придуши фоновые задачи и направь максимум ресурсов сюда».


    1. RollNoir
      26.01.2017 22:01

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


  1. Akuma
    22.01.2017 14:33

    Побуду подопытным ради интереса. В стародавние времена на Intel Celeron очень помогала программка Hare (или как-то так). Хз что оно делало, но система реально работала шустрее.

    В данном случае быстродействие как таковое меня не особо интересует, ибо комп довольно шустрый: i5-6600, 16Gb DDR4, SSD старенький Vertex, GTX 1060 OC. Все это на Win7, т.к. лень переходить на 10-ку.

    Интересно как эта штука повлияет на время работы Node.js и сборки веб-проектов. Т.к., не смотря на комп, продакшн-версии собираются вебпаком довольно долго.

    Если что-то станет шустрее, напишу :)


    1. Akuma
      22.01.2017 21:51

      Удалил, т.к. не почуствовал пророста производительности.
      Связка PhpStorm + Photoshop + Chrome + Webpack как работала, так и работает.

      Когда антивирус (Nod32) решил запустить первичное сканирование (я его обновил), Chrome начал подлагивать. Посмотрел по загрузке — проц загружен копеечно, видимо приоритеты выставились не слишком правильно.

      Может быть просто совпадение, но Dropbox весь день не мог загрузить 40 Мб к себе на сервер. Исходящий канал у меня конечно Г, но не настолько.

      И еще одно замечание: просьба при удалении программы выставлять приоритеты процессам «как было». А то пришлось перезагружаться, чтобы ручками не щелкать все процессы.


      1. RollNoir
        22.01.2017 23:24

        Хорошо, спасибо за фидбек. Мы постоянно улучшаем и дополняем возможности приложения, поэтому если надумаете воспользоваться им снова, то мы всегда будем рады.
        При удалении, возвращать параметры приоритетов на исходные не получится, т.к. приложение удаляет своё ядро, однако, достаточно перезагрузить ПК, чтобы параметры вернулись на исходные.


        1. redmanmale
          23.01.2017 12:35

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


        1. Akuma
          25.01.2017 15:52

          Подтверждаю. После удаления Dropbox загрузил все нормально.
          Проверьте как на него влияет ваше приложение, вдруг это не только у меня так.


  1. noodles
    22.01.2017 14:41

    Извиняюсь, читал по диагонали.

    AMD A8-3850, 8gb озу, видеокарты нет.
    Дед шпилит в самолёты и танки, я одновременно смотрю блу-рей образ на тв (подключен по hdmi). Оно может решить проблему периодического подлагивания в фильме?
    Спасибо.


    1. RollNoir
      22.01.2017 15:30

      В теории может, попробуйте, чтобы узнать точнее.


    1. rfvnhy
      23.01.2017 18:06

      >видеокарты нет
      =)
      Скорее «интегрированная»…

      По теме — у вас проблема скорее всего с одновременным доступом к диску и решить ее наиболее дешево можно установкой второго винта… На один винт ОС и игры, на второй — образы фильмов…
      Скорее всего у вас «лагает» когда грузится карта в танках/самолетах…
      Но гарантий я конечно не дам.


      1. bopoh13
        24.01.2017 01:29

        HDTune в помощь. Если вместо плавного снижения скорости на графике будут резкие провалы — HDD умирает.


      1. noodles
        25.01.2017 01:25

        Да, интегрированная)

        Вполне возможно, винту лет девять, ни разу не дефрагментировался, шумит и скребёт громче всех в системе) из спортивного интереса не ставлю ssd, жду когда умрёт винт))


  1. boorya
    22.01.2017 15:34

    Немного не показательный скриншот.
    Установка обновлений занимает 15% процессора когда свободно еще 75%, и занимает целых 3,2 Гб оперативной памяти, когда свободно еще 54%.
    Вот если бы рядом висел рендеринг в 3Ds MAX, а служба обновлений у него отжимала ресурсы, я бы понял о чем идет речь.
    Сразу вспоминается utorrent и цикл статей https://geektimes.ru/post/107637/ — иногда без вмешательства действительно не обойтись


    1. RollNoir
      22.01.2017 15:37

      Согласен, скриншот скорее для справки, по хорошему всё будет видно именно в Process Explorer, как в Вашем примере. Однако, суть будет такая же, для пониженного базового приоритета, понижается приоритет В/В и памяти. Полученный эффект очень похож на тот, который описан в примере. Но есть ещё деталь, кроме понижения фоновых процессов, мы умеем повышать нужные процессы до высокого приоритета В/В, что также прибавляет немного производительности.


  1. andd3dfx
    22.01.2017 17:37
    +3

    В общем как я понял — статья рекламная, самого ML в ней нету, значит она не должна быть в хабе «Машинное обучение», а в «Я пиарюсь» каком-нить


  1. lair
    22.01.2017 18:12

    Следующим этапом было написать локальный алгоритм обучения, который по входным параметрам определял бы назначение приложения. За основу была взята математическая модель нейросети с нейронами на основе пороговой передаточной функции, но на тот момент не учитывались весовые коэффициенты, которые мы добавили позже. Эта нейросеть сначала училась только на базовых параметрах времени работы с приложением, его имени, правилом в конфигурации и расположением на жёстком диске (например, если много приложений постоянно используются и не работают в фоне, расположены в одной корневой папке типа «C:/Games/», то скорее всего все последующие приложения запускаемые из этой папки будут использоваться активно и понижать их приоритет в фоне не нужно).

    То есть ваша нейросеть используется только для определения "назначения приложения"? А что она берет в качестве данных для обучения?


    Вот, скажем, банальный такой пример. У меня есть приложение X, которое активно нагружает жесткий диск, память, процессор и видеокарту. Я его запустил, поработал как с основным, затем что-то сделал, и свернул его в фон. Нагружает систему оно при этом так же.


    Внимание, вопрос: что с ним сделает ваша программа? А если я параллельно открою медиаплейер, который играет файл с сетевого ресурса?


    1. RollNoir
      22.01.2017 20:12

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

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


      1. lair
        22.01.2017 20:18

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

        Это все входные данные. Но для обучения нужен еще training set с правильными ответами. Как вы его формировали?


        Если говорить про Ваш кейс, то приложение Х при этих данных, будет в фоне использовать все доступные ресурсы, но не больше, чем будет оставлено заглавным приложением.

        А меня это не устраивает. Медиаплейер — это развлечения, а фоновое приложение — работа. И оно должно получать столько ресурсов, сколько вообще возможно.


        Если приложение Х будет при этом воспроизводить звук, то приоритет ЦП будет одинаковый, но у приложения Х приоритет ввода-вывода будет ниже.

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


        1. RollNoir
          22.01.2017 20:25

          Ваше фоновое приложение для работы будет получать ровно столько ресурсов, сколько возможно при отсутствии тормозов плеера. Приоритет ввода-вывода у него будет ниже чем у плеера, но выше всех остальных фоновых задач. Так же с и приоритетом ЦП. При этом, если вы не будете сворачивать рабочее приложение в фон, а просто оставите окном, то у него тоже будет больше доступных ресурсов, но не в ущерб любому заглавному приложению. И максимальная производительность будет выставлена тогда, когда приложение Х будет в фокусе. Traning set содержится в конфиге, на его основе как раз определяеются параметры схожих приложений. Этот же конфиг, можно настраивать в WPS PRO, что позволит нейросети использовать другие правила работы и вести себя иначе.


          1. lair
            22.01.2017 20:27
            -1

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

            А мне надо, чтобы вся остальная система (кроме инфраструктуры) получала ровно столько ресурсов, сколько остается после фонового приложения.


            Traning set содержется в конфиге, на его основе как раз определяеются параметры схожих приложений

            И кто его задает?..


            1. RollNoir
              22.01.2017 20:41

              В таком случае, Вы можете установить приложение Х в специальную папку на любом жёстком диске (например c:/games/X) или в конфигураторе приложения задать для папки с приложением Х то правило, которое Вам необходимо.
              Изначальный пресет задаётся группой разработки (нами) но может быть изменён через встроенный конфигуратор.


              1. lair
                22.01.2017 20:48
                -1

                В таком случае, Вы можете установить приложение Х в специальную папку на любом жёстком диске (например c:/games/X) или в конфигураторе приложения задать для папки с приложением Х то правило, которое Вам необходимо.

                Омг, для папки. Но зачем? Я бы еще понял "кликните на приложение в списке, скажите "Don't limit"", но вот с папками возиться я вообще не вижу смысла.


                Вернемся к вопросу про нейросеть. Для обучения нейросети нужно иметь обучающий набор вида "входные данные — правильные выходные данные". В вашем случае входные данные — это "время работы с приложением, его имя, правило в конфигурации, расположение на жёстком диске, параметры положения окна, тип компьютера, количество оперативной памяти, тип процессора/количество ядер, конфигурация дисковой подсистемы, etc", а выход — это "правила" ("FOREGROUND (доступны все ядра, приоритет выше среднего, приоритет ввода-вывода высокий, оперативку в SWAP не сбрасываем)").


                Так вот, где вы взяли этот обучающий набор, какого он размера, и дообучается ли программа в процессе работы?


                1. RollNoir
                  22.01.2017 21:00

                  Отдельному процессу тоже можно задать правило, так же как и папке.
                  Обучающий набор мы написали сами, на основе тестирования большого количества приложений и проб результатов производительности. Как такового no limit у нас быть не может, т.к если компьютер не загружен, то даже самое фоновое приложение не имеет ограничений по производительности. Однако, чтобы задать максималный приоритет, можно выбрать правило Realtime, но это может негативно сказать на доступных ресурсах для остальных частей системы.


                  1. lair
                    22.01.2017 21:02
                    -1

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

                    Какого он размера? Дообучается ли программа в процессе работы?


                    Как ваша нейронная сеть работает с символьной информацией (имя приложения, расположение на жестком диске)?


                    1. RollNoir
                      22.01.2017 22:01
                      +1

                      Размер можно оценить открыв файл конфигурации. Конечно же дообучается, но новые процессы не затирают имеющийся набор, а дополняют его. Символьная информация обрабатывается в юникоде по иерархии дерева.


                      1. lair
                        22.01.2017 22:11
                        -1

                        Размер можно оценить открыв файл конфигурации.

                        Где посмотреть на файл конфигурации, не устанавливая вашу программу?


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

                        Что является "правильными выходными данными" во время обучения программы?


                        Символьная информация обрабатывается в юникоде по иерархии дерева.

                        Эмм. Нейросети — они работают с числами, ну природа у них такая. Как вы конвертируете символьную информацию во входные данные нейросети? Вот, возьмем например, ваш же пример: "для приложений, находящихся в C:\Games, приоритет такой-то". В каком виде C:\Games попадает на вход нейросети, и что будет, если у меня все игры лежат в d:\steamapps?


                        1. RollNoir
                          22.01.2017 22:26
                          +1

                          На файл конфигурации без установки приложения посмотреть нельзя.
                          Правильными выходными данными являются параметры процесса, при которых он не тормозит заглавное приложение, не тормозит системные процессы и не фризует сам, если относится к одной из выделенных категорий.
                          По поводу строковых, всё верно, поэтому строка этот один из «весовых» параметров, и чем больше процессов из одной директории имеют правило «игр», тем выше становится вес этой дериктории при определении назначения приложения, запущенного по этому же пути. Но т.к. это не единственный параметр, то во время работы самого приложения накапливаются дополнительные данные.
                          Если все игры лежат в d:\steamapps, то все они будут определены как игровые. Если при этом, в этой же папке лежат служебные процессы, то они будут иметь «вес» параметра папки выше, чем у других служебных процессов, но не будут повышены до игр, если будет определено, что это не игровое и не мультимедийное приложение.


                          1. lair
                            22.01.2017 23:59
                            -1

                            Правильными выходными данными являются параметры процесса, при которых он не тормозит заглавное приложение, не тормозит системные процессы и не фризует сам, если относится к одной из выделенных категорий.

                            И как это определяется?


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

                            … то есть пользователь должен руками разметить эти правила. Так?


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

                            Это императивное правило или это эмпирическое наблюдение за поведением нейросети?


                            Если при этом, в этой же папке лежат служебные процессы, то они будут иметь «вес» параметра папки выше, чем у других служебных процессов, но не будут повышены до игр, если будет определено, что это не игровое и не мультимедийное приложение.

                            Определено кем и как?


                            1. RollNoir
                              23.01.2017 00:29

                              -Определяется по телеметрии процесса, если он переходит в состояние «не отзывается», значит завис или ненадолго тормознул.
                              -Нет, по умолчанию правила заданы в пресете + определяются нейросетью. Пользователь может просто подсказать, какое правило лучше использовать.
                              — Это правило, которое заложено во входные данные и определяет один из весовых коэффициентов для принятия решения по выходным данным.
                              — Определено нейросетью на основе анализа рассматриваемого процесса.


                              1. lair
                                23.01.2017 12:36
                                -1

                                Подождите-подождите, так что же, все-таки, на выходе нейросети — тип приложения или правило производительности? Или это одно и то же?


                                (ну и чтобы два раза не вставать, у вас сеть с одним выходом или по количеству элементов классификатора?)


                                1. RollNoir
                                  23.01.2017 12:50

                                  Если говорить про выходной параметр нейросети, то это тип приложения. Если говорить про то, что с ним происходит далее в приложении, то это присвоение правила обработки, которое соответствует данному типу. Если упращённо, то оконное приложение без мультимедии и в фокусе, является будет обработано как «в фокусе» т.к. этот тип имеет «вес» выше чем «оконное». А правило будет присвоено, которое соответствует работе с приложениями «в фокусе». При этом, если параметры приложения изменяются (становится не в фокусе но имеет отображаемое окно на рабочем столе), то изменяется его тип и к нему применяется другое правило работы. Правила для каждого типа можно настраивать.

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


                                  1. lair
                                    23.01.2017 12:56
                                    -1

                                    Если говорить про выходной параметр нейросети, то это тип приложения.

                                    Приведите примеры типов.


                                    Тут важно учитывать, что приложение не состоит только из нейросети, нейросеть выполняет роль анализа входных данных

                                    В хабе "машинное обучение" интерес представляет как раз нейросеть.


                                    1. RollNoir
                                      23.01.2017 18:50
                                      -1

                                      Сами выходные типы, уже относятся к нашей внутренней кухне, которую не вижу смысла расписывать. По самой логике работы я дал уже довольно много пояснений, подробнее будет только исходники выложить :)


                                      1. lair
                                        23.01.2017 18:51
                                        -1

                                        По самой логике работы я дал уже довольно много пояснений, подробнее будет только исходники выложить

                                        В контексте хаба "машинное обучение" это было бы самым правильным.


                                        1. RollNoir
                                          23.01.2017 18:53
                                          -1

                                          Ок, если будет живой интерес к данной теме, то обязательно напишу статью с более подробными техническими деталями. Текущая статья имеет более ознакомительный характер + описание концепции.


                                          1. lair
                                            23.01.2017 18:54
                                            -1

                                            То есть это обсуждение на "живой интерес" не тянет. Ну ок.


  1. vampire333
    22.01.2017 19:51

    А как насчет серверных ос и терминальной работы? Мне так бы хотелось чего либо подобного!


    1. RollNoir
      22.01.2017 19:54

      В редакции PRO есть специальный серверный режим и возможность настроить любые процессы под определённые правила. Подробнее можно прочитать здесь: _http://winperst.ru/wps_pro_details


  1. DjOnline
    22.01.2017 21:27

    Где бенчмарки? Нужно больше примеров.


    1. RollNoir
      22.01.2017 22:01
      -1

      Дополнительная информация есть на нашем сайте.


  1. AlexanderG
    23.01.2017 08:21

    Казалось бы, причем здесь mvn --version… Особенно впечатляет финальный штрих в виде подписи сертификатом Your Company Name. Как-то очень на болгенос похоже.


    1. RollNoir
      23.01.2017 08:45

      Скриншоты использовались для примера. Фактический сертификат имеет реальные реквизиты организации.


  1. LoadRunner
    23.01.2017 09:30

    Сбор телеметрии для улучшения производительности… Где же я слышал эти заявления? Наверное, у Майкрософт.
    Неужели ваше приложение лучше нативных реализаций в Windows 10?


    1. RollNoir
      23.01.2017 12:33

      Вы невнимательно читали статью, я в ней уже ответил на этот вопрос:

      По сути, изучая архитектуру ОС Windows я постоянно находил множество отличных механизмов, которые позволяют выстроить производительность в системе идеально при условии одного «НО». НО, если программисты, которые пишут своё ПО будут сообщать операционной системе что их ПО делает, для чего оно предназначено (игры, фильмы и т.п.) и с каким приоритетом оно должно обращаться к ЦП/RAM/HDD.

      В жизни же, получается, что только малая часть ПО пишется с учётом программной архитектуры Windows, большинство производителей, в т.ч. очень серьёзных и крупных, пишут ПО без указания этих параметров и ОС использует всё по умолчанию.

      И это не говоря про службы, которые совершенно беспардонно отъедают любые доступные ресурсы как только поступает эвент к действию (типа скачивания и установки обновлений). Желающие проверить ситуацию на своём ПК могут открыть диспетчер задач и отобразить столбец «базовый приоритет» во вкладке с процессами.

      Немного данную ситуацию исправляет MMCSS, но он слишком мягко влияет на процессы, почти не затрагивая их фактическую производительность.


      В идеальном мире, наше приложение не могло быть лучше нативных реализаций, но на практике 95% всего софта работает с CPU, ROM и RAM с настройками по умолчанию, что негативно влияет на конечную производительность. И чем больше у Вас такого софта есть, тем ощутимее будет прирост от использования WPS.


  1. Samoglas
    24.01.2017 11:26

    Поставил WPS, плацебо-эффект налицо — волосы стали блестящими и шелковистыми, комп стал меньше греться и фокс стал быстрей. ) Измерять всё это лень, но вот хотелось посмотреть на версию PRO — недельный триал был бы нелишним. Или хотя бы скриншоты доступных там настроек.

    Тема очень интересная, подписываюсь; но сколько я не пробовал выставить приоритеты в Process Hacker, какого-то заметного полезного результата не заметил. Может, чудо-программа за меня все сделает или есть магические настройки, которые мне неподвластны.


    1. RollNoir
      24.01.2017 14:05

      Здравствуйте, вот по этой ссылке есть основные возможности и скриншоты WPS PRO http://winperst.ru/wps_pro_details


      1. Samoglas
        24.01.2017 20:26

        Спасибо!


  1. Samoglas
    24.01.2017 21:18

    Есть ощущение сырой беты, рано ИМХО деньги просите.
    Программа установилась, но обновиться не смогла, а новая версия уже не может загрузить рекламу и отказывается работать.

    Заголовок спойлера
    Приложение сообщило об обновлении:


    При попытке обновиться показало забавную ошибку, которую не видел лет 10:


    Еще в какой то момент было это:


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



    1. RollNoir
      24.01.2017 23:17

      Здравствуйте, первая ошибка возможно связана с повреждением установочного файла при загрузке. Похоже на то, что из-за качества связи побился установщик. Вторая и третья проблема, могут быть связаны исключительно с повреждениями файлов т.к. рекламный компонент при запуске проверяется по хэшу (чтобы не был подменён). Или у Вас проблемы с HDD, или так неудачно совпала потеря пакетов. В любом случае, чтобы всё работало хорошо, рекомендую попробовать скачать программу с зеркала на яндексе — https://yadi.sk/d/JlsQKwLqtGHSi


    1. RollNoir
      25.01.2017 02:18

      Наши и исправили ошибку в установщике, которая могла вызывать несовместимость с некоторыми конфигурациями 32х битных систем. Можете попробовать повторно скачать и установить приложение — https://yadi.sk/d/JlsQKwLqtGHSi


      1. Samoglas
        25.01.2017 19:35

        Да, помогло. На моей системе ошибка больше не появляется.


  1. mycop
    25.01.2017 23:05

    core 2 duo e6550 4Гб. Винамп крякать стал немного реже при включенном касперском.
    Включаешь->смотришь рекламу->сообщение «доступно обновление»->обновляешься-…
    Второй раз смотришь рекламу бл…

    Чудес короче не произошло. Кряканье не исчезло


    1. RollNoir
      25.01.2017 23:07

      Мы чудес и не обещали :)
      В вашем случае, я бы поискал причину в драйверах звуковой карты.
      Иногда помогает их обновление, а иногда наоборот, использование дефолтных дров от Microsoft.