Новый уровень оптимизации Windows

    Около двух лет назад наша команда поведала Хабру о своём проекте по оптимизации ОС Windows с помощью технологии нейросетей.

    За прошедшие два года многое изменилось, но самое главное осталось неизменным. И в этой статье мы хотим поделиться теми открытиями и теми выводами, которые сделали за эти два года.

    image

    Если вам интересно, как в 2020ом обстоят дела по независимому продакшену софта для ПК, добро пожаловать под кат.

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

    Что было сделано за эти два года


    UWP

    Публикация в MS Store стала одним из самых непростых, но и одним из самых важных достижений при работе над проектом. Именно этот шаг позволил выйти за пределы СНГ рынка и осваивать глобальный рынок ПО для Windows.

    Новый функционал

    Следующим шагом, после появления возможности управлять приоритетами ЦП и ядрами ЦП для оптимизации Windows нужно было научить приложение управлять всеми остальными ключевыми компонентами ПК, чтобы использовать алгоритмы нейросети с максимальной эффективностью.
    И если с управлением ядрами и приоритетами ЦП всё было относительно просто, то для управления приоритетами ОЗУ и приоритетами ввода-вывода пришлось настолько погрузиться в архитектуру Windows, что уже в пору писать диссертации. Для примера, из всего известного нам софта, установить «высокий» приоритет ввода-вывода может только WPS и Process Lasso.

    Ну и как только было освоено полное управление ЦП, ОЗУ и ПЗУ, дело оставалось за периферийными устройствами. Поэтому следующим шагом развития стало управлением питанием, где WPS стал единственным известным нам приложением, которое управляет питанием динамически, а не статически. Это означает, что для максимальной производительности не нужно постоянно держать частоту ЦП на 100% и не давать ядрам парковаться, что приводит к постоянной работе на предельных нагрузках и повышенному расходу питания. Теперь за счёт анализа приложений нейросетью, появилась возможность получить ту же максимальную производительность, но именно тогда, когда пользователь работает с тяжёлым софтом или играет в требовательные игры, чтобы в остальное время компьютер не переводил без пользы электричество в тепло.

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

    Стабильность

    За прошедшее время мы многократно убедились в правильности выбора архитектуры приложения. Благодаря тому, что все операции с системой производятся через WinAPI, вопрос стабильности (системы и ПО) при внесении изменений в параметры работы оказался решён практически идеально. За более чем два года существования приложения и более миллиона устройств, на которых оно было установлено, мы не зарегистрировали ни одного случая возникновения проблем со стабильностью работы системы или несовместимости со сторонними приложениями.

    UI/UX

    Одним из самых ключевых направлений работы за прошедшее время было усовершенствование UI/UX, которое позволило очень сильно понизить порог входа новых пользователей для освоения ключевых функций приложения. Тем кому интересна тема развития UI/UX могут оценить последовательные изменения нашего основного интерфейса под спойлером:

    WPS Main UI
    image

    image

    image

    image

    image

    image

    image

    Рейтинг аппаратной производительности

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

    Ключевые выводы


    • Продажи так же важны как и производство, одно без другого существовать не может, поэтому оба этих направления при разработке ПО требуют одинакового внимания и вложений.
    • Обратная связь от конечного клиента решает всё, какими бы выдающимися не были ваши технологические решения, они бесполезны, если клиенту они не нужны, он не знает как их использовать или они банально непривлекательны.
    • Любые решения необходимо проверять и перепроверять, теория и практика расходятся независимо от объёма вашей экспертизы, поэтому нужно проверять любое изменение на фокус-группе, чтобы убедится в верности ваших решений.
    • Стабильность — залог успеха. Это справедливо на всех уровнях, как стратегическом в поведении компании и людей, так и в прикладном в отношении продукта.
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 25

      +5

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

        0
        Про тесты можем отдельную статью написать. Чтобы получить качественные и объективные результаты сравнительных тестов понадобилось докупить плату видеозахвата и тестировать не на бенчмарках (т.к. их архитектура очень отличается от пользовательских приложений), а на реальных играх/приложениях. Один из примеров — www.youtube.com/watch?v=R3YuoAy4fr0#action=share
          0
          Какова методика тестирования? Какие показатели вы собираете платой видеозахвата?
            0

            Платой видеозахвата собирали изображение для последующего сопоставления. Методика следующая — брали тестовый ПК со стоковой ОС и набором предустановленного ПО (ms office, steam, origin, антивирус и браузер) но без WPS. После чего прогоняли не менее пяти раз бенчмарк какой-либо игры (метро, ларка, борда) и за основу брали наилучший результат тестов. После чего устанавливали WPS и повторяли все те же тесты, после чего брали наихудший результат полученный с WPS и сопоставляли с наилучшим полученным без WPS. Как итог, получали повышенную плавность картинки и прирост количества кадров около 3-5%

              0
              3-5% это вообще довольно мало. Каков разброс значений без вашей чудо-софтины?
                0
                Это минимальное значение, которое статистически очищено от погрешности. В среднем, разброс по прозводительности между тестами менее 1% при неизменности условий тестирования. Разница при тестах между WPS и стоком может достигать 10-15% если возникает дополнительная фоновая активность приложений (работа антивируса, индексации файлов или загрузка обновлений).
                0
                Как итог, получали повышенную плавность картинки и прирост количества кадров около 3-5%
                Количество кадров не является критерием плавности. Что там с 1% и 0,1% кадра?
              0
              Есть ли экономический эффект, кроме того что удаётся больше выжимать из оборудования? Типа быстрее распаковываются архивы. Или меньше гудит кулер. Или быстрее процессится видео.
              Мне лично fps в играх не очень интересен, я могу и настройки понизить для его поднятия.
                0
                Экономический эффект в уменьшении времени на все операции с ПК, в т.ч. и рендер видео, запаковка архивов или обработка сетевых запросов в среднем около 5%. Куллер действительно будет меньше шуметь, но только если нет активного взаимодействия с ПК. Так же уменьшается энергопортребление при бездействии пользователя.
                  0
                  Вы же не тестировали работу с архивами, у вас только «плавность картинки и прирост количества кадров».
                    0
                    Ещё как тестировали) Это у нас было ещё в самых ранних тестах, но народ больше желал видеть эффект на играх, вот и делали на них больший упор) А бенч работы с архиватором можно посмотреть тут — www.youtube.com/watch?v=1z-M6rGyIQc&feature=youtu.be
                    –1
                    Насколько? Насколько лучше чем просто заменить термопасту на более дорогую и произвести дефрагментацию диска?
                  +2
                  Про тесты можем отдельную статью написать.

                  Самое главное, чтобы в этой статье разжёвывалось почему стало лучше. Где те задержки которые удалось минимизировать и почему ОС не может этого делать без вас.
                –1
                Очень нравится прога…
                  0
                  А вы его с виртуалками не тестировали?
                  Имею ввиду именно запущенную на рабочей машине виртуалку.
                    0

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

                      0
                      Я имел ввиду как ведет себя WPS, если на той же машине запущена виртуалка. Ведь для нее это будет один единственный процесс, который непонятно как жрет ресурсы.
                        0
                        Да, именно так, но алгоритмы нейросети классифицируют такой процесс как приоритетный и отдают ему тот объем ресурсов, который будет оптимален для наилучшей производительности.
                    +7
                    Эх, молодость… TuneUp Utilites, кнопка «сделать всё @#$ хорошо», всплывающие сообщения в трее, что всё стало на +30% более хорошо…
                      0
                      Ага, всякие там Norton SpeedStart от которых все висло и падало. Как хорошо что те времена давно минули!
                        0
                        Ну вот не минули, оказывается.
                          0
                          Это робкая попытка и вряд ли применение такого класса ПО снова станет массовым
                      +1
                      «было освоено полное управление ЦП, ОЗУ и ПЗУ» — подскажите, чем именно вы управляли в ПЗУ и в ОЗУ? Какие API-функции использовали?
                        0
                        Для ОЗУ приоритет листов памяти, для ПЗУ приоритет ввода-вывода. Основной API, который для этого используется «NtSetInformationProcess».
                          0
                          Класс IoPriority (иногда встречается название ProcessIoPriority)? Не понимаю при чем тут ПЗУ, если это приоритет операций ввода-вывода.

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

                      Самое читаемое