Баги с отрисовкой и нагрузкой на CPU (наиболее заметные при запуске нескольких UC)

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

Модератор: motyara

Ответить
i3v
Охотник за багами
Сообщения: 144
Зарегистрирован: Пн апр 27, 2015 8:39 pm

Баги с отрисовкой и нагрузкой на CPU (наиболее заметные при запуске нескольких UC)

Сообщение i3v » Вс фев 04, 2018 8:04 pm

Хочу перенести дальнейшие свои заметки в отдельную тему, дабы не слишком забивать основную. Предыдущих постов, относящихся к данной теме было два: 1, 2. (Если не считать постов про VeraCrypt и прочие штуки, которые не понятно относятся сюда или нет).
Max Diesel писал(а):
Вс фев 04, 2018 7:57 am
Странностей такого рода мне пока что видеть не доводилось.
Гм... Даже такого явления, как (многократная) перерисовка других окон при запуске штук 10 UC одновременно не наблюдается?
  1. У меня хорошо заметно, например, по штатному диспетчеру задач. Вот так примерно:
    30uc-2.png
    Тут тяжёлый случай - даже в таскбаре всё вообще пропало. Но диспетчер задач и некоторые другие окна часто вот так "белым мигают", даже при запуске одного UC. Нередко - раз по 5.
    А вот в таскбаре обычно максимум иконки пропадают, и то в тяжёлых случаях. Иногда не все. Иногда у некоторых UC иконки в таскабаре так и не появляются, кстати. Даже когда "переотрисовки" уже прошли:
    not_all_icons.PNG
    not_all_icons.PNG (5.85 КБ) 637 просмотров
    Даже после того, как все остальные UC закрыты и остался один "без значка" и потребление CPU у него нормализовалось.
  2. Если предварительно открыть один UC (и отодвинуть его в сторону), а потом открыть "залпом" ещё десяток - у него помигивает главное меню, кнопки дисков и нижний ряд кнопок. Но они же примерно так же мигают и на Windows 7, где эти помигивания не страшны и в целом глюков отрисовки нет.
Max Diesel писал(а):
Вс фев 04, 2018 7:57 am
Разве что Truecrypt и Veracrypt заставляют окно Unreal Commander'а (и некоторых других программ) лихорадочно перерисовываться при монтировании и размонтировании диска. Идей к сожалению нет.
Ни той ни другой софтины у меня нет ни на одном ПК. (А чтобы исключить влияние других я взял чистую винду в виртуалке.)
Там, правда, не совсем воспроизводится, но видно хотя бы эту подозрительную зависимость, что чем больше процессов UC, тем больше потребление CPU каждым процессом.

Max Diesel писал(а):
Вс фев 04, 2018 7:57 am
Попробовал повторить те же действия, однако тот же результат получить не удалось, потребление процессора стремилось скорее в ноль, нежели в 3%:
Вот тут, кстати, хитрый момент. Показания штатного диспетчера задач в Win10 какие-то подозрительные и в целом, и в данном конкретном случае. Вот, пример, сравнение с ProcessHacker:
taskMan_vs_procHack.PNG
TaskManager почти везде нули рисует. Но как тогда в сумме 32% нагрузки получается - непонятно. В ProcessHacker всё лучше сходится, он 0.45%..1.55% показывает. И если просуммировать всё - примерно сходится.
Max Diesel писал(а):
Вс фев 04, 2018 7:57 am
Однако если ключ без Особого статуса, то в первые несколько минут после запуска действительно возможно незначительное потребление вычислительной мощности процессора (это следствие работы алгоритма проверки ключа).
В эксперименте на виртуалках ключа я вообще не ставил. Всё было "свежеустановленное", но ждал я минут 10 - всё было стабильно.

Сейчас ещё один эксперимент сделал, на слабеньком ноутбуке, uc1285.
  1. Там один монитор небольшого разрешения (а значит можно исключить баги связанные с многомониторностью). И это не виртуалка и не rdp. И GPU там встроенный в проц Intel - не NVidia, а значит маловероятно, что есть общие проблемы с видеодрайверами. И UC там со "специальным статусом".
  2. Верхний и нижный скриншоты как раз отсюда.
  3. Получилось странно. Сначала запустил штук 10 UC и ничего. Ещё штук 20 - и опять пару минут ничего не было. (Возможно система ещё грузилась и не давала UC достаточно ресурсов?) Потом пошли дикие глюки с перерисовкой. Ничего сделать было невозможно. Едва закрыл (с трудом) половину UC - глюки резко прошли. Осталось только повышенное потребление CPU. Посмотрел стеки. Запустил ещё 15 UC (стало 30 опять) - никаких глюков с перерисовкой. Всё в пределах приличий.
  4. Cудя по стеку потоков с высоким потреблением CPU - они SendMessageW делают (см. вложенный "15_uc-Inspiron11.txt"). И это ещё выглядит логичным.
  5. А вот на значительно более мощном CPU настольной машинки, при том же количестве UC, потребление каждого процесса получается не 1.55% CPU максимум, а в стабильные ~2.5%. И при этом стек вообще нeпонятный ProcessHacker показывает (если сравнить вложенный "15_uc-IVWS.txt" с "15_uc-Inspiron11.txt") - тот поток, который много ест на ноуте, UnrealCommander64.exe+0x4cd0, тут не ест ничего. Зато есть больше 10 потоков UnrealCommander64.exe!ZN8Sha3_51214initializationEv+0x9810, которые все в "ntdll.dll!ZwDelayExecution+0x14" (т.е., вроде бы, просто чего-то ждут) потребляют по 0.15%...0.2% CPU (что значительно больше, чем они же на ноутбуке). Непонятно чего оно там так активно ждёт.... Может SleepEx слишком мало спит? Нигде это не настраивается? Даже не знаю как это ещё можно объяснить... ProcessHacker врёт просто? Но если так - почему на более слабой машинке это не приводит к ещё большим тормозам? Может там адаптивная задержка какая?
Может быть, конечно, это вообще чисто в винде баги. Особенно учитывая что на Win7 всё нормально. Билды, кстати 1703-15063.850 на десктопе, 1709-16299.214 на другом десктопе (который упоминался в прошлом моём сообщении), 1709-17025.1000 на ноутбуке (insider, slow ring, старый билд. "Insider", конечно, сам по себе может быть не стабилен. Но тут баги на вид те же что и на других Win10 ПК.).

Странно в общем. Но мало ли, может вся эта информация наведёт на какие-то мысли.
Вложения
15_uc-IVWS.txt
(5.48 КБ) 17 скачиваний
15_uc-Inspiron11.txt
(4.79 КБ) 18 скачиваний

Аватара пользователя
Max Diesel
Автор программы
Сообщения: 3123
Зарегистрирован: Пт окт 12, 2007 9:00 pm
Контактная информация:

Сообщение Max Diesel » Пн фев 05, 2018 6:30 am

i3v писал(а):
Вс фев 04, 2018 8:04 pm
Гм... Даже такого явления, как (многократная) перерисовка других окон при запуске штук 10 UC одновременно не наблюдается?
Похоже либо излишняя "чистота" проведения эксперимента не давала мне увидеть этой перерисовки (у меня отдельная утилита запускает несколько копий Unreal Commander'а, и делает это с интервалом в 1.5 секунды, причем чтобы не запутаться я запускаю их на втором рабочем столе Windows - там никаких окон нет), либо я просто неосознанно не желал эти перерисовки увидеть. Ну в общем я сейчас запустил на фоне диспетчера задач и да, увидел что его передергивает при запуске каждой новой копии. Поковырял код и выяснил что причиной этому странному действию является контрол TCoolBar, на базе которого работает панель инструментов. Никакие изменения его параметров не помогли устранить перерисовку соседних окон, судя по всему где-то в его коде зарыта собака. Соответственно есть два пути решения: либо оставить этот контрол и мириться с перерисовками, либо избавиться от него и потерять часть функционала (режим "перемещаемое главное меню" вероятно без этого контрола сложно организовать, плюс в семерке этот контрол обеспечивает красивость панели инструментов). Сложный выбор.
i3v писал(а):
Вс фев 04, 2018 8:04 pm
Может SleepEx слишком мало спит? Нигде это не настраивается? Даже не знаю как это ещё можно объяснить...
Нет, не настраивается. Там таймер со срабатыванием 1 раз в секунду.

i3v
Охотник за багами
Сообщения: 144
Зарегистрирован: Пн апр 27, 2015 8:39 pm

Re: Баги с отрисовкой и нагрузкой на CPU (наиболее заметные при запуске нескольких UC)

Сообщение i3v » Ср фев 07, 2018 4:45 am

Max Diesel писал(а):
Пн фев 05, 2018 6:30 am
Поковырял код и выяснил что причиной этому странному действию является контрол TCoolBar, на базе которого работает панель инструментов. Никакие изменения его параметров не помогли устранить перерисовку соседних окон, судя по всему где-то в его коде зарыта собака. Соответственно есть два пути решения: либо оставить этот контрол и мириться с перерисовками, либо избавиться от него и потерять часть функционала (режим "перемещаемое главное меню" вероятно без этого контрола сложно организовать, плюс в семерке этот контрол обеспечивает красивость панели инструментов). Сложный выбор.
Ну, лично мне достаточно одной строчки кнопок/иконок в любом виде :mrgreen: . Но, некоторые пользователи, похоже, настраивают внешний вид весьма старательно.

Но меня смущает, что так было не всегда. Ведь функциональность тулбара примерно та же, что и у билда 1160... (Или нет?) А поведение изменилось..
Max Diesel писал(а):
Пн фев 05, 2018 6:30 am
Нет, не настраивается. Там таймер со срабатыванием 1 раз в секунду.
И таймер... если всё так же фиксировано "раз в секунду" и делает примерно то же самое - откуда же разница в потреблении?

Я сейчас ещё раз сравнил потребление CPU на десктопе, без rdp, c одним монитором (на том, где раньше было только через rdp). UC1160 ставил просто поверх UC1285. Настройки никакие не менял. Даже папки и вкладки одни и те же (одна почти пустая, вторая - 60 файлов - картинки, pdf'ки и прочая ерунда. В ходе тестов с файлами ничего не проиходило. Режим у панелей - подробный.).

Код: Выделить всё

  UC-instances		1160-CPU-use-per-process		1285-CPU-use-per-process
  1				0.23					0.36
  3				0.14 - 0.20				0.48 - 0.48
  6				0.13 - 0.19				0.87 - 0.91
  10				0.17 - 0.23				1.23 - 1.27
  30				0.35 - 0.43				2.96 - 3.03
(во вложенном архиве - скриншоты с этими же цифрами)
Получается, я немного не прав был, когда говорял, что у 1160 потребление CPU не растёт с ростом количества процессов. Но оно всего лишь в 1.5 раза растёт, а у 1285 - в 8 раз (думаю, было бы и в 10, но CPU уже на 100% забит оказывается).

И визуально, 1285 реально "тяжелее открывается". С самого начала, пожалуй. Если 1285 "залпом" открывать много (штук 20) - некоторые окна открываются сразу, а некоторые "застревают" - открываются только через минуту или больше. Иногда чтобы они таки открылись можно запустить ещё один UC - тогда они скорее всего появятся сразу оба. Самые страшные "переотрисовочные" глюки, похоже, связаны именно с таким "застреванием". Иногда окна UC "мелко мигают" и сквозь них просвечивают нижележащие окна. Похоже на какую-то "гонку" с войной за mutex'ы или типа того.

Может, конечно, я зря вообще пытаюсь увязать повышенное потребление CPU и повышенное количество "глюков с перерисовкой"... Да ещё и не с "глюками с перерисовкой при открытии" а с "глюками с перерисовкой раз в полчаса", на самом деле (при открытии-то фиг с ними, не мешает). Наверное, мне во много потому кажется что они связаны, что оно началось примерно в одно и то же время (насколько я помню).
Вложения
CPU_use_1160_vs_1285.zip
(242.66 КБ) 16 скачиваний

Mitay
Охотник за багами
Сообщения: 137
Зарегистрирован: Сб окт 25, 2008 1:33 pm

Re: Баги с отрисовкой и нагрузкой на CPU (наиболее заметные при запуске нескольких UC)

Сообщение Mitay » Ср фев 07, 2018 8:57 pm

Сегодня у меня такие цифры:
В простое один командер ест 1..2% от проца (чаще менее 1,5%)
При 5-ти запущенных уже 2..3% ( в районе 2,4..2,8 % ) и редкими пиками до 5%
Нагрузка уже при двух запущенных командерах скачет в районе 1,6..2,4%.

i3v
Охотник за багами
Сообщения: 144
Зарегистрирован: Пн апр 27, 2015 8:39 pm

Re: Баги с отрисовкой и нагрузкой на CPU (наиболее заметные при запуске нескольких UC)

Сообщение i3v » Вс фев 11, 2018 6:16 pm

Mitay, ок, спасибо за подтверждение!

Сейчас проверил в 1290 - в некоторые моменты казалось, что переотрисовок в сторонних окнах стало меньше. Но сложно однозначно сказать, каждый раз оно немного по разному подлагивает.

Ещё, на всякий случай, прикладываю evtx лог о трёх падениях UC в ходе этих экспериментов. Они все были при стресс-тесте в виде одновременного запуска около 30 uc (количество, приводящее к нагрузке на CPU в 100% в "спокойном состоянии"). Интересно, что в одном из трёх случаев там ругается на ext.dll:

Код: Выделить всё

Faulting application name: UnrealCommander64.exe, version: 3.5.7.1290, time stamp: 0x00000000
Faulting module name: ext.dll, version: 0.0.0.0, time stamp: 0x5728809e
Exception code: 0xc0000005
Fault offset: 0x0000000000006c99
Faulting process id: 0x2c28
Faulting application start time: 0x01d3a346770c6e9c
Faulting application path: C:\ProgramFiles_rw\Unreal Commander\UnrealCommander64.exe
Faulting module path: C:\ProgramFiles_rw\Unreal Commander\dll64\ext.dll
в двух других, на сам exe:

Код: Выделить всё

Faulting application name: UnrealCommander64.exe, version: 3.5.7.1290, time stamp: 0x00000000
Faulting module name: UnrealCommander64.exe, version: 3.5.7.1290, time stamp: 0x00000000
Exception code: 0xc0000005
Fault offset: 0x000000000043d399
Faulting process id: 0x6098
Faulting application start time: 0x01d3a346ab89fd92
Faulting application path: C:\ProgramFiles_rw\Unreal Commander\UnrealCommander64.exe
Faulting module path: C:\ProgramFiles_rw\Unreal Commander\UnrealCommander64.exe
Наверное, это ни о чём не говорит, но всё же...
В fl_error.txt пусто.
Вложения
1290 crashing on 30uc.zip
(1.54 КБ) 16 скачиваний

i3v
Охотник за багами
Сообщения: 144
Зарегистрирован: Пн апр 27, 2015 8:39 pm

Re: Баги с отрисовкой и нагрузкой на CPU (наиболее заметные при запуске нескольких UC)

Сообщение i3v » Пт мар 02, 2018 10:19 pm

Я ещё несколько малоосмысленных наблюдений сделал, как ведёт себя UC1291 на разных машинках в зависимости от количества запущенных UC. Вообще, довольно противоречивые результаты:
  • Total CPU use by single process

    Код: Выделить всё

    UC instances		Win7_notebook	 Win10_notebook		Win10_workstation	
    1			    1.64		0.50			0.37
    5			    1.56		0.55			0.86
    22			    1.85		1.66			3.53
    30			    1.82		2.11			 n/a
    
    ┈┈
  • CPU use by each "UnrealCommander64.exe+0x4cd0" thread

    Код: Выделить всё

    UC instances		Win7_notebook	 Win10_notebook		Win10_workstation	
    1			    0.07		0.09			0.00
    5			    0.30		0.85			0.00
    22			    0.37		0.90			0.02
    30			    0.35		1.80			 n/a
    
    Поток "UnrealCommander64.exe+0x4cd0" всего один, и минут через 5 нагрузка от него снижается (примерно в этот момент и измеряю), но он всё равно продолжает потреблять ненулевое количество CPU. Если запущено несколько процессов UC - у одного из них (причём стабильно именно у этого процесса, похоже) поток "0x4cd0" ест "много" (столько, сколько в таблице), а у остальных всех - не сильно больше чем "ZN8Sha3_51214initializationEv+0x9810".
    ┈┈
  • CPU use by each "UnrealCommander64.exe!ZN8Sha3_51214initializationEv+0x9810" thread

    Код: Выделить всё

    UC instances		Win7_notebook	 Win10_notebook		Win10_workstation	
    1			    0.11		0.02			0.02
    5			    0.12		0.04			0.06
    22			    0.11		0.05			0.23
    30			    0.11		0.03			 n/a
    
    Потоков "ZN8Sha3_51214initializationEv+0x9810" штук 22-27. Потребляют они по разному - около половины много (столько, сколько в таблице) около половины - вблизи нуля. И постоянно перемешиваются, похоже. Зато у всех процессов картина одинаковая, и суммарное потребление всех этих потоков примерно одинаковое.
    ┈┈
Как видно, больше всего влияют именно "ZN8Sha3_51214initializationEv+0x9810" потоки, за счёт их большого количества.
  1. "n/a" означает, что пытаться там измерять я не стал из-за жутких тормозов.
  2. У "0x4cd0" видно что что-то происходит, стек как-то меняется. Оно делает какие-то немного странные вещи, типа NtUserWindowFromPoint и с кем-то перекидывается какими-то сообщениями. Сдаётся мне, что оно всё-таки делает всё то же самое во всех случаях что я вижу. Раньше мне почему-то казалось, что что-то разное должно происходить на разных машинках. Наборы семплов стека фактически одинаковые (см. наример, вложенный скриншот), только названия системных библиотек разные в Win7 и Win10, похоже. Но на более быстрой машинке ("воркстанции") оно делает хоть и то же самое, но чаще, похоже. Там гораздо легче поймать что-то "интересное" в стеке, чем на более медленных машинках. На более медленных в ~95% случаев при нажатии "обновить стек" мы сидим в "user32.dll!WaitMessage+0xa", на более быстрой - в 50%.
  3. Самое странно, что у "ZN8Sha3_51214initializationEv+0x9810" никакого разумного стека у них вообще не видно - я ни разу ничего не поймал, кроме сидения в "ntdll.dll!ZwDelayExecution+0x14". Но почему-то не мещает им кушать по 0.08% CPU почти всем. И когда на Win10 начинается рост потребления CPU каждым UC - это как раз эта штука виновата. Функция, которая, по-идее, просто ждёт.
  4. Не знаю, может зря у меня это всё в сознании слилось, но мне что-то всё кажется, что что-то где-то поменялось. И баги с "неправильными иконками", и "повышенное потребление CPU" и "мигание диспетчера задач". Я думал может связь какая тут есть.
  5. Падения в ходе экспериментов с "залповым запуском" были несколько раз опять (см. вложенные "evtx" файлы). Может те же баги их вызывают, может другие какие :)
  6. А вот мигания сторонних программ (в том числе диспетчера задач) при "залповом открытии" UC вроде бы меньше стало. И, что главное, "раз в полчаса" вроде больше не мигает тоже.
Вложения
high_cpu_usage_2018-03-02.7z
(91.6 КБ) 14 скачиваний

Аватара пользователя
Max Diesel
Автор программы
Сообщения: 3123
Зарегистрирован: Пт окт 12, 2007 9:00 pm
Контактная информация:

Сообщение Max Diesel » Сб мар 03, 2018 8:15 am

С билда 1290 заменена панель инструментов. Эта не заставляет окна перерисовываться при запуске программы. Идей относительно роста потребления процессора у меня пока что нет.

Аватара пользователя
Max Diesel
Автор программы
Сообщения: 3123
Зарегистрирован: Пт окт 12, 2007 9:00 pm
Контактная информация:

Сообщение Max Diesel » Сб мар 03, 2018 8:04 pm

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

i3v
Охотник за багами
Сообщения: 144
Зарегистрирован: Пн апр 27, 2015 8:39 pm

Re:

Сообщение i3v » Пн мар 05, 2018 9:39 pm

Max Diesel писал(а):
Сб мар 03, 2018 8:15 am
С билда 1290 заменена панель инструментов.
Спасибо! То-то я думаю что-то поменялось, плоская что-ли стала :mrgreen: в Win 7. Имхо, новая смотрится даже современнее, даже в Win7.
Max Diesel писал(а):
Сб мар 03, 2018 8:04 pm
Похоже удалось-таки найти причину излишнего расходования мощности процессора. Со следующего билда предположительно расходование будет поменьше. Благодарю за содействие в решении данной проблемы.
Отлично, ждём :) .

i3v
Охотник за багами
Сообщения: 144
Зарегистрирован: Пн апр 27, 2015 8:39 pm

Re: Баги с отрисовкой и нагрузкой на CPU (наиболее заметные при запуске нескольких UC)

Сообщение i3v » Пн апр 02, 2018 9:04 pm

В 1292 действительно починилось повышенное потребление CPU. Теперь я смог хоть 100 штук UC запустить без проблем. Каждый из процессов 0.5% ... 0.8% CPU потребляет. Мигания у сторонних программ вообще нет.

А вот "перепутанные/чёрные иконки" остались (хотя их теперь, кажется, посложнее стало поймать) - ну, значит это всё-таки никак не связанный баг.

Спасибо!

i3v
Охотник за багами
Сообщения: 144
Зарегистрирован: Пн апр 27, 2015 8:39 pm

Re: Баги с отрисовкой и нагрузкой на CPU (наиболее заметные при запуске нескольких UC)

Сообщение i3v » Сб авг 04, 2018 7:10 pm

Сегодня, при запуске UC 1308 (возможно я два параллельно запустил, не заметил) появилась вот такая ошибка у первого UC (причём тот который "[2]" запустился нормально):

Код: Выделить всё

[Window Title]
Unreal Commander

[Content]
The file Only simple.pgl does not contain all necessary icons. Please install a newer version of this file.

[OK]
Раньше я такого не видел.

Я нажал OK - UC запустился нормально, но часть иконок в тулбаре отсутствовала. Вместо них был "пустой" серый фон. Это не чёрные квадратики, о которых я раньше в этой теме говорил, но зато тоже при запуске произошло - может всё-таки оно как-то связано.

Закрыл UC, открыл снова - всё стало нормально.

Аватара пользователя
Max Diesel
Автор программы
Сообщения: 3123
Зарегистрирован: Пт окт 12, 2007 9:00 pm
Контактная информация:

Сообщение Max Diesel » Сб авг 04, 2018 11:13 pm

i3v писал(а):
Сб авг 04, 2018 7:10 pm
Сегодня, при запуске UC 1308 (возможно я два параллельно запустил, не заметил) появилась вот такая ошибка у первого UC (причём тот который "[2]" запустился нормально):

Код: Выделить всё

[Window Title]
Unreal Commander

[Content]
The file Only simple.pgl does not contain all necessary icons. Please install a newer version of this file.

[OK]
Раньше я такого не видел.

Я нажал OK - UC запустился нормально, но часть иконок в тулбаре отсутствовала. Вместо них был "пустой" серый фон. Это не чёрные квадратики, о которых я раньше в этой теме говорил, но зато тоже при запуске произошло - может всё-таки оно как-то связано.

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

Ответить